UNPKG

adr

Version:

轻量级架构记录工具 - Command-line tools for working with Architecture Decision Records

138 lines 10.6 kB
"use strict"; 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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