forked from TheOdinProject/javascript-exercises
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelpers.js
30 lines (24 loc) · 913 Bytes
/
helpers.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
const { readdir } = require("fs/promises");
function splitDirectoryName(directoryName) {
return {
exerciseNumber: directoryName.match(/\d+/),
exerciseName: directoryName.match(/[a-z]+/i),
};
}
async function getLatestExerciseDirectory() {
try {
const files = await readdir("./");
return files.findLast((file) => /^\d+_\w+$/.test(file));
} catch (err) {
console.error(err);
}
}
async function createExerciseDirectoryName(directoryName) {
const latestExerciseDirectory = await getLatestExerciseDirectory();
const latestExerciseNumber = parseInt(latestExerciseDirectory.match(/^\d+/));
if (latestExerciseDirectory === `${latestExerciseNumber}_${directoryName}`) {
throw new Error(`Exercise already exists with name "${directoryName}"`);
}
return `${latestExerciseNumber + 1}_${directoryName}`;
}
module.exports = { createExerciseDirectoryName, splitDirectoryName };