aoc-automation
Version:
Advent of Code tool to automate the repetitive parts of AoC.
99 lines (91 loc) • 2 kB
text/typescript
import prompts from "prompts";
import { execSync } from "child_process";
import kleur from "kleur";
const onCancel = () => {
console.log(kleur.yellow("Aborting!"));
process.exit(1);
};
const initPrompt = () => {
const firstYear = 2015;
const currentYear = new Date().getFullYear();
const years = new Array(currentYear - firstYear + 1)
.fill(firstYear)
.map((val, i) => val + i)
.reverse();
let author = "";
try {
author = execSync("git config user.name").toString().trim();
} catch {}
return prompts(
[
{
type: "select",
name: "year",
message: "Year",
choices: years.map(year => ({ title: year, value: year })),
initial: 0,
},
{
type: "text",
name: "name",
message: "Directory name",
initial: "AdventOfCode",
},
{
type: "select",
name: "language",
message: "Language",
choices: [
{ title: "JavaScript", value: "js" },
{ title: "TypeScript", value: "ts" },
],
initial: 0,
},
{
type: prev => (prev === "ts" ? "toggle" : null),
name: "strict",
message: "Strict mode",
initial: true,
active: "yes",
inactive: "no",
},
{
type: (_, values) =>
values.language === "ts" ? "toggle" : null,
name: "vscodeSettings",
message:
"(Optional) Would you like to include the default VS Code launch.json configuration to support debugging Typescript files?",
initial: false,
active: "yes",
inactive: "no",
},
{
type: "toggle",
name: "semicolons",
message: "Semicolons",
initial: true,
active: "yes",
inactive: "no",
},
{
type: "text",
name: "author",
message: `Author`,
initial: author,
},
{
type: "select",
name: "packageManager",
message: "Package manager",
choices: [
{ title: "NPM", value: "npm" },
{ title: "Yarn", value: "yarn" },
{ title: "pnpm", value: "pnpm" },
],
initial: 0,
},
],
{ onCancel },
);
};
export default initPrompt;