UNPKG

adr-cli

Version:

Architecture Decision Records (ADR) command cli

65 lines 2.21 kB
import { existsSync, mkdirSync, readdirSync } from 'node:fs'; import LineByLine from 'n-readlines'; import Table from 'cli-table3'; import Utils from '../utils/utils.js'; const pathBase = process.cwd(); export class Directory { static getStatusForAdr(adrName, path) { const liner = new LineByLine(`${path}\\${adrName}`); let line = liner.next(); let lineNumber = 0; while (line) { const lineString = line.toString('ascii'); if (lineString.includes('* Status:')) { const parse = lineString.split('* Status:'); return parse[1]; } lineNumber++; line = liner.next(); } return 'status not found'; } getMostRecentFile(dir) { const files = this.orderReccentFiles(dir); return files.length > 0 ? files : []; } orderReccentFiles(dir) { const arrayFiles = []; const files = readdirSync(dir); for (const file of files) { arrayFiles.push(file); } return arrayFiles; } displayDirectory(dir) { const tableFiles = new Table({ head: ['Id', 'File Name', 'Status'], }); const path = `${pathBase}\\${dir}`; const lastAdrCreate = this.getMostRecentFile(path); for (const file of lastAdrCreate) { const statusAdr = Directory.getStatusForAdr(file, path); const matches = statusAdr.matchAll(/{([^}]*)}/g); const matches2 = Array.from(matches); const textColor = matches2[0][1]; const textStatus = matches2[1][1]; const seq = Number(file.slice(0, 4)); const seqPadding = seq.toString().padStart(4, '0'); tableFiles.push([ seqPadding, file, Utils.transformAdrColorToChalk(textColor, textStatus), ]); } console.log(tableFiles.toString()); } initDirectory(dir) { if (!existsSync(dir)) { mkdirSync(dir, { recursive: true }); return true; } return false; } } export default Directory; //# sourceMappingURL=directory.js.map