UNPKG

release-notes-cli

Version:

Generate release notes from git for playstore/appstore or github

97 lines (96 loc) 3.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resolveOptions = exports.resolveTemplate = void 0; let debug = require("debug")("release-notes:fs"); let fs = require("fs"); let path = require("path"); const resolveTemplate = (template) => { debug("Trying to locate template '%s'", template); return new Promise(function (resolve, reject) { fs.access(template, fs.constants ? fs.constants.R_OK : fs.R_OK, function (error) { if (error) { debug("Template file '%s' doesn't exist, maybe it's template name", template); if (template.match(/[a-z]+(\.ejs)?/)) { const localPath = path.resolve(__dirname, "../templates/" + path.basename(template, ".ejs") + ".ejs"); debug("Checking local template file ", localPath); fs.access(localPath, fs.constants ? fs.constants.R_OK : fs.R_OK, function (err) { if (err) reject(new Error(`Unable to locate template file ${template}`)); else resolve(localPath); }); } else { reject(new Error(`Unable to locate template file ${template}`)); } } else { resolve(template); } }); }).then(readTemplate); }; exports.resolveTemplate = resolveTemplate; const resolveOptions = (originalOptions) => { const ALL_OPTIONS = [ ["b", "branch", "master"], ["t", "title", "(.*)"], ["i", "ignoreCase"], ["m", "meaning", "type"], ["o", "gitlogOption", []], ["p", "path", process.cwd()], ["s", "script"], ["mg", "mergeCommits"], ["c", "copy"], ]; return new Promise(function (resolve, reject) { const optionsFile = originalOptions.f || originalOptions.file; let options = {}; if (optionsFile) { debug("Trying to read configuration file '%s'", optionsFile); fs.readFile(optionsFile, function (err, data) { if (err) { reject(new Error("Unable to read configuration file\n" + err.message)); } else { try { let stored = JSON.parse(data); ALL_OPTIONS.forEach(function (pairs) { let short = pairs[0], long = pairs[1], def = pairs[2]; let value = [stored[short], stored[long], originalOptions[short], originalOptions[long], def].filter(value => value !== undefined)[0]; if (value !== undefined) options[short] = value; }); resolve(options); } catch (ex) { reject(new Error("Invalid JSON in configuration file")); } } }); } else { ALL_OPTIONS.forEach(function (pairs) { let short = pairs[0], long = pairs[1], def = pairs[2]; let value = [originalOptions[short], originalOptions[long], def].filter(value => value !== undefined)[0]; if (value !== undefined) options[short] = value; }); resolve(options); } }); }; exports.resolveOptions = resolveOptions; function readTemplate(template) { debug("Trying to read template '%s'", template); return new Promise(function (resolve, reject) { fs.readFile(template, function (err, templateContent) { if (err) { reject(new Error(`Unable to locate template file ${template}`)); } else { resolve(templateContent.toString()); } }); }); }