59 lines
1.3 KiB
JavaScript
Executable file
59 lines
1.3 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const config = require("../ligma.config");
|
|
const dsa = require("./dsa");
|
|
|
|
const src_path = path.join(__dirname, "..", "src");
|
|
let day = 1;
|
|
|
|
try {
|
|
day = +fs.readdirSync(src_path).
|
|
filter(i => i.includes("day")).
|
|
sort((a, b) => {
|
|
return +b.substring(3) - a.substring(3);
|
|
})[0].substring(3) + 1;
|
|
|
|
if (isNaN(day)) {
|
|
console.log("day is nan");
|
|
day = 1;
|
|
}
|
|
} catch (e) {
|
|
console.log("error", e.message);
|
|
console.log("day is 1");
|
|
day = 1;
|
|
}
|
|
|
|
const day_name = `day${day}`;
|
|
const day_path = path.join(src_path, day_name);
|
|
try { fs.unlinkSync(day_path); } catch (e) { }
|
|
try { fs.mkdirSync(day_path); } catch (e) { }
|
|
|
|
function create_class(item) {
|
|
fs.writeFileSync(path.join(day_path, item.name), `export default class ${item.className} {
|
|
constructor() {
|
|
|
|
}
|
|
}`);
|
|
}
|
|
|
|
function create_function(item) {
|
|
fs.writeFileSync(path.join(day_path, item.name), `export default function ${item.fn}(${item.args}): ${item.return} {
|
|
|
|
}`);
|
|
}
|
|
|
|
config.dsa.forEach(ds => {
|
|
const item = dsa[ds];
|
|
if (item.type === "class") {
|
|
create_class(item);
|
|
} else {
|
|
create_function(item);
|
|
}
|
|
});
|
|
|
|
const align = require("./align-configs");
|
|
align.jest(day_name);
|
|
align.ts_config(day_name);
|
|
align.package_json(config, day_name);
|
|
|