slidev-addon-sm
Version:
slidev-addon slidev sm
103 lines (89 loc) • 2.72 kB
JavaScript
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);
}