-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcreateFile.js
82 lines (75 loc) · 2.12 KB
/
createFile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { readMetadata, writeMetadata } from "./metadata.js";
import assert from "node:assert";
import { stripIndent } from "common-tags";
import fs from "fs";
const getProgramText = (year, day) =>
stripIndent`
/**
* --- Day ${day}: cool_title ---
*
* https://adventofcode.com/${year}/day/${day}
*
* @param {string} input Text Input
* @returns Problem Solution
*/
export default function solve(input) {
const arr = input.split("\\n").map((x) => x);
const partOne = -1;
const partTwo = -1;
return { partOne, partTwo };
}
` + "\n";
function createFolders(yearFolder, dayFolder) {
try {
fs.mkdirSync(yearFolder);
console.log(`Created '${yearFolder}' folder`);
} catch (error) {
if (error.code !== "EEXIST") throw error;
}
try {
fs.mkdirSync(dayFolder);
console.log(`Created '${dayFolder}' folder`);
} catch (error) {
if (error.code !== "EEXIST") throw error;
}
}
export default function createFile(year, day) {
const dayPad = String(day).padStart(2, "0");
const yearFolder = `./year-${year}`;
const dayFolder = `${yearFolder}/day-${dayPad}`;
const solveFile = `${dayFolder}/solve.js`;
const inputFile = `${dayFolder}/input.txt`;
const outputFile = `${dayFolder}/output.json`;
const id = `${year}-${dayPad}`;
const metadata = readMetadata();
assert.strictEqual(
metadata.some((x) => x.id === id),
false,
"Duplicate id entry was found"
);
metadata.push({
id,
year,
day,
yearFolder,
dayFolder,
solveFile,
inputFile,
outputFile,
});
createFolders(yearFolder, dayFolder);
fs.writeFileSync(solveFile, getProgramText(year, day), {
flag: "wx",
});
fs.writeFileSync(inputFile, "", {
flag: "wx",
});
fs.writeFileSync(
outputFile,
JSON.stringify({ partOne: null, partTwo: null }, null, 4),
{
flag: "wx",
}
);
writeMetadata(metadata);
}