adr
Version:
轻量级架构记录工具 - Command-line tools for working with Architecture Decision Records
138 lines • 10.6 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const console = require("node:console");
let fs = require('fs');
let md = require('markdown').markdown;
let asciidoctor = require('@asciidoctor/core')();
const Config_1 = require("./Config");
const utils_1 = require("./utils");
let i18n = utils_1.default.getI18n();
function getStatusSection(tree) {
let statusFlag = false;
let statusSection = [];
for (let i = 0; i < tree.length; i++) {
let node = tree[i];
if (statusFlag && node[0] === 'header') {
return statusSection;
}
if (statusFlag) {
statusSection.push(node);
}
if (node[0] === 'header' && node[2] === i18n.Status) {
statusFlag = true;
}
}
return statusSection;
}
function getAsciidocStatusSection(tree) {
let statusSection = [];
tree.findBy({ 'section': 'section' }, function (section) {
if (section.getLevel() === 1 && section.getTitle() === i18n.Status) {
let content = [];
section.blocks.forEach((ele) => {
if (ele.lines && ele.lines.length > 0) {
content.push(...ele.lines.filter(line => line && line.trim() !== ''));
}
});
if (content.length > 0) {
statusSection = content; // Assigning the content to statusSection
}
}
});
return statusSection;
}
function getStatusWithDate(statusSections) {
let status = [];
for (let i = 0; i < statusSections.length; i++) {
let currentStatusSection = statusSections[i];
if (currentStatusSection[0] !== 'para') {
continue;
}
if (/\d{1,4}-\d{1,2}-\d{1,2}/.test(currentStatusSection[1])) {
status.push(currentStatusSection[1]);
}
}
return status;
}
function getAsciidocStatusWithDate(statusSections) {
let status = [];
for (let i = 0; i < statusSections.length; i++) {
let currentStatusSection = statusSections[i];
if (/\d{1,4}-\d{1,2}-\d{1,2}/.test(currentStatusSection)) {
status.push(currentStatusSection);
}
}
return status;
}
function setStatus(filePath, status) {
let fileData;
let fileExt = Config_1.default.getDocExtension();
try {
fileData = fs.readFileSync(filePath, 'utf8');
}
catch (error) {
console.log(error);
return [];
}
let flag = false;
let regExp;
if (fileExt === 'adoc' || fileExt === 'asciidoc') {
regExp = `== ${i18n.Status}`;
}
else {
regExp = `## ${i18n.Status}`;
}
let data = fileData.split('\n');
for (let i = 0; i < data.length; i++) {
let line = data[i];
if (flag && (line[0] === '#' || line[0] === '=')) {
data.splice(i, 0, `${utils_1.default.createDateString()} ${status}`);
data.splice(i + 1, 0, '');
return fs.writeFileSync(filePath, data.join('\n'));
}
if (line.match(regExp))
flag = true;
}
}
function getAllStatus(filePath) {
let fileData;
let statusSections;
let status;
let fileExt = Config_1.default.getDocExtension();
try {
fileData = fs.readFileSync(filePath, 'utf8');
}
catch (error) {
console.log(error);
return [];
}
if (fileExt === 'adoc' || fileExt === 'asciidoc') {
let tree = asciidoctor.load(fileData, { 'safe': 'safe', 'sourcemap': true });
statusSections = getAsciidocStatusSection(tree);
status = getAsciidocStatusWithDate(statusSections);
}
else {
let tree = md.parse(fileData);
statusSections = getStatusSection(tree);
status = getStatusWithDate(statusSections);
}
if (status.length === 0) {
let lastStatusSection = statusSections[statusSections.length - 1];
if (!(lastStatusSection && lastStatusSection[1])) {
return [];
}
status = [lastStatusSection[1]];
}
return status;
}
function getLatestStatus(filePath) {
let allStatus = getAllStatus(filePath);
return allStatus[allStatus.length - 1];
}
let StatusHelper = {
setStatus: setStatus,
getLatestStatus: getLatestStatus,
getAllStatus: getAllStatus
};
exports.default = StatusHelper;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdHVzSGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9TdGF0dXNIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBdUM7QUFFdkMsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3RCLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUE7QUFDckMsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQTtBQUVoRCxxQ0FBNkI7QUFDN0IsbUNBQTJCO0FBRTNCLElBQUksSUFBSSxHQUFHLGVBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUUxQixTQUFTLGdCQUFnQixDQUFFLElBQVM7SUFDbEMsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFBO0lBQ3RCLElBQUksYUFBYSxHQUFhLEVBQUUsQ0FBQTtJQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNwQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbEIsSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtZQUN0QyxPQUFPLGFBQWEsQ0FBQTtTQUNyQjtRQUNELElBQUksVUFBVSxFQUFFO1lBQ2QsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtTQUN6QjtRQUNELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuRCxVQUFVLEdBQUcsSUFBSSxDQUFBO1NBQ2xCO0tBQ0Y7SUFDRCxPQUFPLGFBQWEsQ0FBQTtBQUN0QixDQUFDO0FBRUQsU0FBUyx3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
;