readmeasy
Version:
Creates README.md for node modules using any template engine as easy as possible.
58 lines • 2.91 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.findTemplateFile = exports.findOrCreateTemplateFile = void 0;
/* eslint-disable no-console */
const measy_1 = require("measy");
const top_pkg_dir_1 = __importDefault(require("top-pkg-dir"));
const path_1 = require("path");
const fs_1 = require("fs");
const utils_1 = require("./utils");
Object.defineProperty(exports, "findOrCreateTemplateFile", { enumerable: true, get: function () { return utils_1.findOrCreateTemplateFile; } });
Object.defineProperty(exports, "findTemplateFile", { enumerable: true, get: function () { return utils_1.findTemplateFile; } });
const shields_1 = __importDefault(require("./shields"));
/** @ignore */
const transform = require("doctoc/lib/transform"); // eslint-disable-line @typescript-eslint/no-var-requires
/** @ignore */
const TOC_TAG = "<!-- START doctoc -->\n<!-- END doctoc -->";
/**
* Creates README.md from REDAME template.
* @param options are the options.
*/
async function createReadMe(
/* istanbul ignore next: Ignore default parameters. */
options = {}) {
const dir = options.dir || (await top_pkg_dir_1.default());
const readmeTemplate = options.templateExtension
? path_1.join(dir, `README.${options.templateExtension}`)
: await utils_1.findOrCreateTemplateFile({ dir, defaultContent: options.defaultContent, templateExtension: options.templateExtension });
const packageJson = await utils_1.readPackageJson(dir);
const engine = options.engine || measy_1.engineOfExtension(path_1.extname(readmeTemplate));
if (!engine || !measy_1.isEngineSupported(engine)) {
throw new Error("Cannot determine template engine.");
}
let rendered = await measy_1.render({
...options,
template: readmeTemplate,
partialDirs: utils_1.advancedSupportedEngines.has(engine)
? [path_1.join(__dirname, "../module-files/partials", engine), ...utils_1.arrify(options.partialDirs || "partials")]
: [],
contextFiles: options.contextFiles,
rootContextFiles: options.rootContextFiles,
context: { toc: TOC_TAG, allShields: shields_1.default(packageJson), package: packageJson },
functionFiles: options.functionFiles,
rootFunctionFiles: [path_1.join(__dirname, "helpers"), ...utils_1.arrify(options.rootFunctionFiles)],
engine,
});
if (rendered.includes(TOC_TAG)) {
const docTocResult = transform(rendered, "github.com", 3, undefined, true);
if (docTocResult.transformed) {
rendered = docTocResult.data;
}
}
await fs_1.promises.writeFile(path_1.join(dir, "README.md"), rendered, { encoding: "utf8" });
}
exports.default = createReadMe;
//# sourceMappingURL=index.js.map
;