This commit is contained in:
AJ ONeal 2018-07-04 02:40:14 -06:00
parent 7b8536d121
commit b4466d937d
2 changed files with 20 additions and 10 deletions

View File

@ -1,7 +1,17 @@
'use strict'; 'use strict';
var PromiseA = require('bluebird').Promise; var PromiseA;
var fs = PromiseA.promisifyAll(require('fs')); try {
PromiseA = require('bluebird');
} catch(e) {
PromiseA = global.Promise;
}
var util = require('util');
var fs = require('fs');
var writeFileAsync = util.promisify(fs.writeFile);
var unlinkAsync = util.promisify(fs.unlink);
var renameAsync = util.promisify(fs.rename);
var crypto = require('crypto'); var crypto = require('crypto');
function noop() { function noop() {
@ -44,23 +54,23 @@ function create(options) {
, stageAsync: function (filename, data, options) { , stageAsync: function (filename, data, options) {
var tmpname = tmpnamefn(filename); var tmpname = tmpnamefn(filename);
//console.log(tmpname); //console.log(tmpname);
return fs.writeFileAsync(tmpname, data, options).then(function () { return writeFileAsync(tmpname, data, options).then(function () {
return tmpname; return tmpname;
}); });
} }
, commitAsync: function (tmpname, filename) { , commitAsync: function (tmpname, filename) {
var bakname = baknamefn(filename); var bakname = baknamefn(filename);
// this may not exist // this may not exist
return fs.unlinkAsync(bakname).then(noop, noop).then(function () { return unlinkAsync(bakname).then(noop, noop).then(function () {
// this may not exist // this may not exist
//console.log(namefn(filename), '->', bakname); //console.log(namefn(filename), '->', bakname);
return fs.renameAsync(filename, bakname).then(function () { return renameAsync(filename, bakname).then(function () {
//console.log('created bak'); //console.log('created bak');
}, noop); }, noop);
}).then(function () { }).then(function () {
// this must be successful // this must be successful
//console.log(filename, '->', filename); //console.log(filename, '->', filename);
return fs.renameAsync(tmpname, filename).then(noop, function (err) { return renameAsync(tmpname, filename).then(noop, function (err) {
//console.error(err); //console.error(err);
return sfs.revert(filename).then(function () { return sfs.revert(filename).then(function () {
return PromiseA.reject(err); return PromiseA.reject(err);

View File

@ -1,6 +1,6 @@
{ {
"name": "safe-replace", "name": "safe-replace",
"version": "1.0.2", "version": "1.0.3",
"description": "A micro-module for safely replacing a file.", "description": "A micro-module for safely replacing a file.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {
@ -8,7 +8,7 @@
}, },
"repository": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/coolaj86/node-safe-replace.git" "url": "https://git.coolaj86.com/coolaj86/fs-safe-replace.js.git"
}, },
"keywords": [ "keywords": [
"cluster", "cluster",
@ -23,7 +23,7 @@
"author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)", "author": "AJ ONeal <coolaj86@gmail.com> (https://coolaj86.com/)",
"license": "(MIT OR Apache-2.0)", "license": "(MIT OR Apache-2.0)",
"bugs": { "bugs": {
"url": "https://github.com/coolaj86/node-safe-replace/issues" "url": "https://git.coolaj86.com/coolaj86/fs-safe-replace.js/issues"
}, },
"homepage": "https://github.com/coolaj86/node-safe-replace#readme" "homepage": "https://git.coolaj86.com/coolaj86/fs-safe-replace.jse"
} }