release-checker
Version:
Check your release before publishing
83 lines (82 loc) • 3.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs_1 = require("fs");
var path_1 = require("path");
function read(filename) {
return {
inDirectory: function (directory) {
return {
asJson: function () {
var content = fs_1.readFileSync(path_1.join(directory, filename)).toString();
return JSON.parse(content);
},
asString: function () {
return fs_1.readFileSync(path_1.join(directory, filename)).toString();
},
};
},
};
}
exports.read = read;
function ensureThat(filename) {
return {
inDirectory: function (directory) {
return {
canBeRead: function () {
return {
asString: function () {
try {
read(filename)
.inDirectory(directory)
.asString();
}
catch (error) {
throw new Error(filename + " file is missing in '" + directory + "' ");
}
},
asJson: function () {
try {
read(filename)
.inDirectory(directory)
.asJson();
}
catch (error) {
throw new Error(filename + " file in '" + directory + "' is badly formed");
}
},
};
},
hasScript: function (key) {
var missingScript = "script '" + key + "' in " + filename + " file is missing";
try {
var pkg = read(filename)
.inDirectory(directory)
.asJson();
var script = pkg && pkg.scripts && pkg.scripts[key];
if (!script) {
throw new Error(missingScript);
}
}
catch (error) {
throw new Error(missingScript);
}
},
};
},
};
}
exports.ensureThat = ensureThat;
function jsonPackage() {
return {
inDirectory: function (directory) {
return {
hasScript: function (key) {
var content = fs_1.readFileSync(path_1.join(directory, 'package.json')).toString();
var pkg = JSON.parse(content);
return Boolean(pkg && pkg.scripts && pkg.scripts[key]);
},
};
},
};
}
exports.jsonPackage = jsonPackage;