12345678910111213141516171819202122232425262728293031323334353637 |
- "use strict";
- const fs = require("fs-extra");
- const path = require("path");
- const { BLANK_LINE, COMMIT_GUIDELINE } = require("./constants");
- module.exports.readExistingChangelog = readExistingChangelog;
- /**
- * Read the existing changelog, if it exists.
- * @param {import("@lerna/package").Package} pkg
- * @returns {Promise<[string, string]>} A tuple of changelog location and contents
- */
- function readExistingChangelog(pkg) {
- const changelogFileLoc = path.join(pkg.location, "CHANGELOG.md");
- let chain = Promise.resolve();
- // catch allows missing file to pass without breaking chain
- chain = chain.then(() => fs.readFile(changelogFileLoc, "utf8").catch(() => ""));
- chain = chain.then((changelogContents) => {
- // Remove the header if it exists, thus starting at the first entry.
- const headerIndex = changelogContents.indexOf(COMMIT_GUIDELINE);
- if (headerIndex !== -1) {
- return changelogContents.substring(headerIndex + COMMIT_GUIDELINE.length + BLANK_LINE.length);
- }
- return changelogContents;
- });
- // consumer expects resolved tuple
- chain = chain.then((changelogContents) => [changelogFileLoc, changelogContents]);
- return chain;
- }
|