UNPKG

@tim117/aoc-schedule

Version:
51 lines 4.48 kB
#!/usr/bin/env node import yargs from 'yargs'; import { appendFile, writeFile } from 'fs/promises'; import { oraPromise } from 'ora'; import { resolve } from 'path'; async function getArgs() { const { languages, filePath } = await yargs(process.argv.slice(2)) .usage('$0 -l typescript go rust c++ -f schedule.txt') .epilogue('create-advent-schedule creates a randomized schedule for Advent of Code based on the languages that were given to the cli and outputs it to the specified --file-path.') .help() .string('file-path') .describe('file-path', 'The path to output the schedule.') .alias('file-path', 'f') .array('languages') .describe('languages', 'The languages to include in your Advent of Code schedule.') .alias('languages', 'l').argv; return { languages: languages?.map((val) => val.toString()) ?? ['typescript'], filePath: filePath ?? 'schedule.txt' }; } function makeSchedule(languages) { const schedule = {}; for (let i = 1; i < 26; ++i) { const todaysLanguage = getRandomValue(languages); schedule[i] = todaysLanguage; } return schedule; } function getRandomValue(list) { const length = list.length; const index = Math.floor(Math.random() * length); return list[index]; } async function writeSchedule({ outputPath, schedule }) { await writeFile(outputPath, ''); for (const key in schedule) { await appendFile(outputPath, `Dec ${key}\t\t${schedule[key]}\n`); } } async function main() { const { languages, filePath } = await getArgs(); const schedule = makeSchedule(languages); oraPromise(writeSchedule({ outputPath: filePath, schedule }), { text: 'Creating schedule', successText: `Schedule was successfully created at ${resolve(filePath)}.`, failText: 'Unable to create schedule.' }); } main(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL21haW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsS0FBSyxVQUFVLE9BQU87SUFDcEIsTUFBTSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRCxLQUFLLENBQUMsOENBQThDLENBQUM7U0FDckQsUUFBUSxDQUNQLHdLQUF3SyxDQUN6SztTQUNBLElBQUksRUFBRTtTQUNOLE1BQU0sQ0FBQyxXQUFXLENBQUM7U0FDbkIsUUFBUSxDQUFDLFdBQVcsRUFBRSxrQ0FBa0MsQ0FBQztTQUN6RCxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztTQUN2QixLQUFLLENBQUMsV0FBVyxDQUFDO1NBQ2xCLFFBQVEsQ0FDUCxXQUFXLEVBQ1gsMkRBQTJELENBQzVEO1NBQ0EsS0FBSyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDaEMsT0FBTztRQUNMLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRSxRQUFRLEVBQUUsUUFBUSxJQUFJLGNBQWM7S0FDckMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxTQUFtQjtJQUN2QyxNQUFNLFFBQVEsR0FBMkIsRUFBRSxDQUFDO0lBQzVDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7UUFDM0IsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pELFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUM7S0FDOUI7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUksSUFBUztJQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFNRCxLQUFLLFVBQVUsYUFBYSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBd0I7SUFDekUsTUFBTSxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO1FBQzFCLE1BQU0sVUFBVSxDQUFDLFVBQVUsRUFBRSxPQUFPLEdBQUcsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xFO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxPQUFPLEVBQUUsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRTtRQUM1RCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSx3Q0FBd0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHO1FBQ3pFLFFBQVEsRUFBRSw0QkFBNEI7S0FDdkMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELElBQUksRUFBRSxDQUFDIn0=