UNPKG

slidev-addon-sm

Version:

slidev-addon slidev sm

103 lines (89 loc) 2.72 kB
import { $, cd, fs, path } from "zx"; const args = process.argv; const courseDir = args[3]; const outfilePath = "./src/courselevel.md"; const filePath = outfilePath; const customSort = (a, b) => { if (a.includes("-") && b.includes("-")) { const numA = parseInt(a.match(/\d+/)[0], 10); const numB = parseInt(b.match(/\d+/)[0], 10); return numA - numB; } if (a.includes("-")) return true; else if (b.includes("-")) return false; //都没有 - return a.localeCompare(b) > 0 ? true : false; }; const doneLs = (dirname) => { let pagesPath = courseDir + "/" + dirname + "/pages"; fs.appendFileSync(filePath, "## " + dirname); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "ppt源"); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "```"); fs.appendFileSync(filePath, "\n"); fs.appendFileSync( filePath, "git clone your_name@110.41.45.61:/gitsrv/" + dirname + ".git" ); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "```"); fs.appendFileSync(filePath, "\n"); fs.appendFileSync( filePath, "[" + dirname + " OJ](https://oj.noicoding.cn/d/" + dirname + "/)" ); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "\n"); //目前只有cspj有文档源 if (dirname == "cspj") { fs.appendFileSync(filePath, "文档源"); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "```"); fs.appendFileSync(filePath, "\n"); fs.appendFileSync( filePath, "git clone your_name@110.41.45.61:/gitsrv/" + dirname + "docs.git" ); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "```"); fs.appendFileSync(filePath, "\n"); } fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "- " + dirname); fs.appendFileSync(filePath, "\n"); //检索pages下的md文件,并以序号排序 let subDirs = fs.readdirSync(pagesPath); subDirs.sort(customSort); subDirs.forEach((subDir) => { fs.appendFileSync(filePath, " - " + subDir.replace(".md", "")); fs.appendFileSync(filePath, "\n"); }); fs.appendFileSync(filePath, "\n"); fs.appendFileSync(filePath, "\n"); }; try { if (fs.existsSync(outfilePath)) { fs.unlinkSync(outfilePath); } let couses = [ "intro1", "basic1", "basic2", "basic3", "junior1", "junior2", // "senior1", // "senior2", // "cspj", // "csps", ]; couses.forEach((t) => { if (fs.existsSync(courseDir + "/" + t)) { doneLs(t); } }); } catch (err) { console.error(err); }