publishr
Version:
A tool for harmonious publishing of git and npm packages.
131 lines (104 loc) • 3.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _es6Promise = require("es6-promise");
var _fs = require("fs");
var _fs2 = _interopRequireDefault(_fs);
var _constants = require("./constants");
var _logger = require("./logger");
var _logger2 = _interopRequireDefault(_logger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fileUtils = {
readFile: function readFile(filePath) {
return new _es6Promise.Promise(function (resolve, reject) {
_fs2.default.readFile(filePath, "utf8", function (err, contents) {
if (err) {
_logger2.default.fail("read '" + filePath + "'", err);
return reject(err);
}
_logger2.default.pass("read '" + filePath + "'");
return resolve(contents);
});
});
},
readFiles: function readFiles(files) {
return _es6Promise.Promise.all(files.map(function (file) {
return fileUtils.readFile(file.oldPath).then(function (contents) {
file.contents = contents;
return _es6Promise.Promise.resolve(file);
});
}));
},
readPackage: function readPackage() {
return fileUtils.readFile("package.json").then(function (contents) {
return _es6Promise.Promise.resolve(JSON.parse(contents));
});
},
removeFile: function removeFile(filePath) {
return new _es6Promise.Promise(function (resolve, reject) {
_fs2.default.unlink(filePath, function (err) {
if (err) {
_logger2.default.fail("remove '" + filePath + "'", err);
return reject(err);
}
_logger2.default.pass("remove '" + filePath + "'");
return resolve();
});
});
},
statFile: function statFile(filePath) {
return new _es6Promise.Promise(function (resolve, reject) {
_fs2.default.stat(filePath, function (err, stats) {
if (err) {
return reject(err);
}
return resolve(stats);
});
});
},
statFiles: function statFiles(files) {
return _es6Promise.Promise.all(files.map(function (file) {
return fileUtils.statFile(file.newPath).then(function () {
file.created = false;
return _es6Promise.Promise.resolve(file);
}).catch(function (err) {
if (err.code !== "ENOENT") {
return _es6Promise.Promise.reject(err);
}
file.created = true;
return _es6Promise.Promise.resolve(file);
});
}));
},
writeFile: function writeFile(filePath, contents) {
return new _es6Promise.Promise(function (resolve, reject) {
_fs2.default.writeFile(filePath, contents, "utf8", function (err) {
if (err) {
_logger2.default.fail("write '" + filePath + "'", err);
return reject(err);
}
_logger2.default.pass("write '" + filePath + "'");
return resolve();
});
});
},
writeFiles: function writeFiles(files) {
return _es6Promise.Promise.all(files.map(function (file) {
return fileUtils.writeFile(file.newPath, file.contents).then(function () {
file.written = true;
return _es6Promise.Promise.resolve(file);
});
}));
},
writePackage: function writePackage(json) {
var contents = void 0;
try {
contents = JSON.stringify(json, null, _constants.NUM_JSON_SPACES);
} catch (err) {
return _es6Promise.Promise.reject(err);
}
return fileUtils.writeFile("package.json", contents);
}
};
exports.default = fileUtils;