manual-git-changelog
Version:
A simple tool for appending to a changelog based on git commits and tags.
91 lines • 3.5 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.stageFile = exports.getGitCommits = exports.getLastGitVersionTag = exports.waitForUserInput = exports.getLernaJson = exports.getPackageJson = exports.getIsoDate = exports.writeFile = exports.readFile = void 0;
const child_process_1 = require("child_process");
const fs = require("fs");
const readline = require("readline");
const util_1 = require("util");
// tslint:disable:no-var-requires
const readFile = util_1.promisify(fs.readFile);
exports.readFile = readFile;
const writeFile = util_1.promisify(fs.writeFile);
exports.writeFile = writeFile;
const gitSemverTags = util_1.promisify(require('git-semver-tags'));
const gitRawCommits = require('git-raw-commits');
const arrayifyStream = require('arrayify-stream');
function getIsoDate() {
return new Date().toISOString().substr(0, 10);
}
exports.getIsoDate = getIsoDate;
function getPackageJson() {
return __awaiter(this, void 0, void 0, function* () {
return yield readFile('package.json', 'utf8');
});
}
exports.getPackageJson = getPackageJson;
function getLernaJson() {
return __awaiter(this, void 0, void 0, function* () {
try {
return yield readFile('lerna.json', 'utf8');
}
catch (e) {
return null;
}
});
}
exports.getLernaJson = getLernaJson;
function waitForUserInput(query) {
return __awaiter(this, void 0, void 0, function* () {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
return new Promise((resolve) => rl.question(query, (answer) => {
rl.close();
resolve(answer);
}));
});
}
exports.waitForUserInput = waitForUserInput;
function getLastGitVersionTag() {
return __awaiter(this, void 0, void 0, function* () {
const tags = yield gitSemverTags();
if (!tags.length) {
// Initial release
return null;
}
else {
// Not an initial release
return tags[0];
}
});
}
exports.getLastGitVersionTag = getLastGitVersionTag;
function getGitCommits(previousVersion) {
return __awaiter(this, void 0, void 0, function* () {
return (yield arrayifyStream(gitRawCommits({ from: previousVersion, format: '%H-%s' })))
.map((commit) => commit.toString('utf8').replace('\n', ''));
});
}
exports.getGitCommits = getGitCommits;
function stageFile(file) {
return new Promise((resolve, reject) => {
child_process_1.execFile('git', ['add', file], (error) => {
if (error) {
return reject(error);
}
resolve();
});
});
}
exports.stageFile = stageFile;
//# sourceMappingURL=IOUtil.js.map