yaclt
Version:
Yet Another Change Log Tool
93 lines • 10 kB
JavaScript
;
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActionValidate = void 0;
var fs_1 = __importDefault(require("fs"));
var path_1 = __importDefault(require("path"));
var yargs_1 = __importDefault(require("yargs"));
var file_utils_1 = require("../utils/file-utils");
var hook_handler_1 = require("../utils/hook-handler");
var logger_1 = require("../utils/logger");
var string_utils_1 = require("../utils/string-utils");
var actionValidateHandler = function (options) {
var e_1, _a, e_2, _b;
var noneFoundWarning = "No changelog entries found in " + options.logsDir;
if (!fs_1.default.existsSync(options.logsDir)) {
logger_1.Logger.warn(noneFoundWarning);
return false;
}
var filePaths = fs_1.default.readdirSync(options.logsDir);
if (filePaths.length === 0) {
logger_1.Logger.warn(noneFoundWarning);
return false;
}
var hasInvalidEntries = false;
var regex = new RegExp("^" + options.validationPattern + "$");
var changeTypePattern = string_utils_1.formatToChangeTypeTemplate(options.format);
try {
for (var filePaths_1 = __values(filePaths), filePaths_1_1 = filePaths_1.next(); !filePaths_1_1.done; filePaths_1_1 = filePaths_1.next()) {
var filePath = filePaths_1_1.value;
var lines = file_utils_1.readLines(path_1.default.join(options.logsDir, filePath));
var _loop_1 = function (line) {
if (!regex.test(line)) {
logger_1.Logger.error("Malformed changelog entry found in file " + filePath + ": " + line);
hasInvalidEntries = true;
}
if (changeTypePattern) {
var changeType = options.changeTypes.find(function (changeType) {
return line.includes(changeTypePattern({ changeType: changeType }));
});
if (!changeType || changeType === "UNCATEGORIZED") {
logger_1.Logger.error("Invalid change type found in changelog file " + filePath + ": " + line);
hasInvalidEntries = true;
}
}
};
try {
for (var lines_1 = (e_2 = void 0, __values(lines)), lines_1_1 = lines_1.next(); !lines_1_1.done; lines_1_1 = lines_1.next()) {
var line = lines_1_1.value;
_loop_1(line);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (lines_1_1 && !lines_1_1.done && (_b = lines_1.return)) _b.call(lines_1);
}
finally { if (e_2) throw e_2.error; }
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (filePaths_1_1 && !filePaths_1_1.done && (_a = filePaths_1.return)) _a.call(filePaths_1);
}
finally { if (e_1) throw e_1.error; }
}
if (hasInvalidEntries) {
var message = "Malformed changelog entries found.";
logger_1.Logger.value(false);
logger_1.Logger.error(message);
yargs_1.default.exit(1, new Error(message));
return false;
}
logger_1.Logger.value(true);
logger_1.Logger.success("All changelog entries formatted correctly!");
return true;
};
exports.ActionValidate = hook_handler_1.handleHooks(actionValidateHandler, "preValidate", "postValidate");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy92YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUFvQjtBQUNwQiw4Q0FBd0I7QUFDeEIsZ0RBQTBCO0FBQzFCLGtEQUFnRDtBQUNoRCxzREFBMEQ7QUFDMUQsMENBQXlDO0FBQ3pDLHNEQUFtRTtBQVVuRSxJQUFNLHFCQUFxQixHQUFHLFVBQUMsT0FBOEI7O0lBQzNELElBQU0sZ0JBQWdCLEdBQUcsbUNBQWlDLE9BQU8sQ0FBQyxPQUFTLENBQUM7SUFDNUUsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ25DLGVBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsSUFBTSxTQUFTLEdBQUcsWUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUMxQixlQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUVELElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBRTlCLElBQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLE1BQUksT0FBTyxDQUFDLGlCQUFpQixNQUFHLENBQUMsQ0FBQztJQUMzRCxJQUFNLGlCQUFpQixHQUFHLHlDQUEwQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzs7UUFDckUsS0FBdUIsSUFBQSxjQUFBLFNBQUEsU0FBUyxDQUFBLG9DQUFBLDJEQUFFO1lBQTdCLElBQU0sUUFBUSxzQkFBQTtZQUNqQixJQUFNLEtBQUssR0FBRyxzQkFBUyxDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO29DQUVuRCxJQUFJO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUNyQixlQUFNLENBQUMsS0FBSyxDQUNWLDZDQUEyQyxRQUFRLFVBQUssSUFBTSxDQUMvRCxDQUFDO29CQUVGLGlCQUFpQixHQUFHLElBQUksQ0FBQztpQkFDMUI7Z0JBR0QsSUFBSSxpQkFBaUIsRUFBRTtvQkFDckIsSUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBQyxVQUFrQjt3QkFDN0QsT0FBQSxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsVUFBVSxZQUFBLEVBQUUsQ0FBQyxDQUFDO29CQUFoRCxDQUFnRCxDQUNqRCxDQUFDO29CQUNGLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxLQUFLLGVBQWUsRUFBRTt3QkFDakQsZUFBTSxDQUFDLEtBQUssQ0FDVixpREFBK0MsUUFBUSxVQUFLLElBQU0sQ0FDbkUsQ0FBQzt3QkFDRixpQkFBaUIsR0FBRyxJQUFJLENBQUM7cUJBQzFCO2lCQUNGOzs7Z0JBcEJILEtBQW1CLElBQUEseUJBQUEsU0FBQSxLQUFLLENBQUEsQ0FBQSw0QkFBQTtvQkFBbkIsSUFBTSxJQUFJLGtCQUFBOzRCQUFKLElBQUk7aUJBcUJkOzs7Ozs7Ozs7U0FDRjs7Ozs7Ozs7O0lBRUQsSUFBSSxpQkFBaUIsRUFBRTtRQUNyQixJQUFNLE9BQU8sR0FBRyxvQ0FBb0MsQ0FBQztRQUNyRCxlQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BCLGVBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEIsZUFBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsZUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixlQUFNLENBQUMsT0FBTyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDN0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFVyxRQUFBLGNBQWMsR0FBRywwQkFBVyxDQUN2QyxxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGNBQWMsQ0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB5YXJncyBmcm9tIFwieWFyZ3NcIjtcbmltcG9ydCB7IHJlYWRMaW5lcyB9IGZyb20gXCIuLi91dGlscy9maWxlLXV0aWxzXCI7XG5pbXBvcnQgeyBoYW5kbGVIb29rcywgSG9vayB9IGZyb20gXCIuLi91dGlscy9ob29rLWhhbmRsZXJcIjtcbmltcG9ydCB7IExvZ2dlciB9IGZyb20gXCIuLi91dGlscy9sb2dnZXJcIjtcbmltcG9ydCB7IGZvcm1hdFRvQ2hhbmdlVHlwZVRlbXBsYXRlIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZy11dGlsc1wiO1xuaW1wb3J0IHsgQWN0aW9uT3B0aW9ucyB9IGZyb20gXCIuL2FjdGlvbi1vcHRpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uVmFsaWRhdGVPcHRpb25zIGV4dGVuZHMgQWN0aW9uT3B0aW9ucyB7XG4gIGNoYW5nZVR5cGVzOiBzdHJpbmdbXTtcbiAgdmFsaWRhdGlvblBhdHRlcm46IHN0cmluZztcbiAgcHJlVmFsaWRhdGU/OiBIb29rO1xuICBwb3N0VmFsaWRhdGU/OiBIb29rO1xufVxuXG5jb25zdCBhY3Rpb25WYWxpZGF0ZUhhbmRsZXIgPSAob3B0aW9uczogQWN0aW9uVmFsaWRhdGVPcHRpb25zKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG5vbmVGb3VuZFdhcm5pbmcgPSBgTm8gY2hhbmdlbG9nIGVudHJpZXMgZm91bmQgaW4gJHtvcHRpb25zLmxvZ3NEaXJ9YDtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKG9wdGlvbnMubG9nc0RpcikpIHtcbiAgICBMb2dnZXIud2Fybihub25lRm91bmRXYXJuaW5nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWxlUGF0aHMgPSBmcy5yZWFkZGlyU3luYyhvcHRpb25zLmxvZ3NEaXIpO1xuICBpZiAoZmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgIExvZ2dlci53YXJuKG5vbmVGb3VuZFdhcm5pbmcpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCBoYXNJbnZhbGlkRW50cmllcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXiR7b3B0aW9ucy52YWxpZGF0aW9uUGF0dGVybn0kYCk7XG4gIGNvbnN0IGNoYW5nZVR5cGVQYXR0ZXJuID0gZm9ybWF0VG9DaGFuZ2VUeXBlVGVtcGxhdGUob3B0aW9ucy5mb3JtYXQpO1xuICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGZpbGVQYXRocykge1xuICAgIGNvbnN0IGxpbmVzID0gcmVhZExpbmVzKHBhdGguam9pbihvcHRpb25zLmxvZ3NEaXIsIGZpbGVQYXRoKSk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIGlmICghcmVnZXgudGVzdChsaW5lKSkge1xuICAgICAgICBMb2dnZXIuZXJyb3IoXG4gICAgICAgICAgYE1hbGZvcm1lZCBjaGFuZ2Vsb2cgZW50cnkgZm91bmQgaW4gZmlsZSAke2ZpbGVQYXRofTogJHtsaW5lfWBcbiAgICAgICAgKTtcblxuICAgICAgICBoYXNJbnZhbGlkRW50cmllcyA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIC8vIG9ubHkgdmFsaWRhdGUgY2hhbmdlVHlwZXMgaWYgZm9ybWF0IGluY2x1ZGVzIHRoZSBjaGFuZ2VUeXBlIEhhbmRsZWJhcnMgdmFyaWFibGVcbiAgICAgIGlmIChjaGFuZ2VUeXBlUGF0dGVybikge1xuICAgICAgICBjb25zdCBjaGFuZ2VUeXBlID0gb3B0aW9ucy5jaGFuZ2VUeXBlcy5maW5kKChjaGFuZ2VUeXBlOiBzdHJpbmcpID0+XG4gICAgICAgICAgbGluZS5pbmNsdWRlcyhjaGFuZ2VUeXBlUGF0dGVybih7IGNoYW5nZVR5cGUgfSkpXG4gICAgICAgICk7XG4gICAgICAgIGlmICghY2hhbmdlVHlwZSB8fCBjaGFuZ2VUeXBlID09PSBcIlVOQ0FURUdPUklaRURcIikge1xuICAgICAgICAgIExvZ2dlci5lcnJvcihcbiAgICAgICAgICAgIGBJbnZhbGlkIGNoYW5nZSB0eXBlIGZvdW5kIGluIGNoYW5nZWxvZyBmaWxlICR7ZmlsZVBhdGh9OiAke2xpbmV9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgaGFzSW52YWxpZEVudHJpZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGhhc0ludmFsaWRFbnRyaWVzKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IFwiTWFsZm9ybWVkIGNoYW5nZWxvZyBlbnRyaWVzIGZvdW5kLlwiO1xuICAgIExvZ2dlci52YWx1ZShmYWxzZSk7XG4gICAgTG9nZ2VyLmVycm9yKG1lc3NhZ2UpO1xuICAgIHlhcmdzLmV4aXQoMSwgbmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBMb2dnZXIudmFsdWUodHJ1ZSk7XG4gIExvZ2dlci5zdWNjZXNzKFwiQWxsIGNoYW5nZWxvZyBlbnRyaWVzIGZvcm1hdHRlZCBjb3JyZWN0bHkhXCIpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBBY3Rpb25WYWxpZGF0ZSA9IGhhbmRsZUhvb2tzKFxuICBhY3Rpb25WYWxpZGF0ZUhhbmRsZXIsXG4gIFwicHJlVmFsaWRhdGVcIixcbiAgXCJwb3N0VmFsaWRhdGVcIlxuKTtcbiJdfQ==