diff --git a/src/actions/dev.ts b/src/actions/dev.ts index 91e8741..4afaeea 100644 --- a/src/actions/dev.ts +++ b/src/actions/dev.ts @@ -67,8 +67,6 @@ const showInfo = () => { console.log() } - - const send = async (config: Config, dayNum: number, part: 1 | 2) => { console.log(`\nPart ${part}:`) const dayData = diff --git a/src/actions/init.ts b/src/actions/init.ts index 508a9b6..6aa26b0 100644 --- a/src/actions/init.ts +++ b/src/actions/init.ts @@ -24,26 +24,34 @@ const init = async () => { const setup: Setup = await initPrompt() - const installCmd = - setup.packageManager === "npm" - ? "npm i" - : setup.packageManager === "yarn" - ? "yarn" - : "pnpm install" - - const formatCmd = - setup.packageManager === "npm" - ? "npm run format" - : setup.packageManager === "yarn" - ? "yarn format" - : "pnpm format" - - const startCmd = - setup.packageManager === "npm" - ? "npm start" - : setup.packageManager === "yarn" - ? "yarn start" - : "pnpm start" + const packageManagers = { + npm: { + install: "npm i", + format: "npm run format", + start: "npm start", + version: "npm -v", + }, + yarn: { + install: "yarn", + format: "yarn format", + start: "yarn start", + version: "yarn -v", + }, + pnpm: { + install: "pnpm install", + format: "pnpm format", + start: "pnpm start", + version: "pnpm -v", + }, + } as const + + const installCmd = packageManagers[setup.packageManager].install + + const formatCmd = packageManagers[setup.packageManager].format + + const startCmd = packageManagers[setup.packageManager].start + + const versionCmd = packageManagers[setup.packageManager].version const dir = setup.name const srcDir = path.join(dir, "src") @@ -55,9 +63,15 @@ const init = async () => { fs.mkdirSync(srcDir, { recursive: true }) + const packageManagerVersion = execSync(versionCmd).toString().trim() + const config = runnerJSON(setup) - save(dir, "package.json", packageJSON(setup)) + save( + dir, + "package.json", + packageJSON(Object.assign(setup, { packageManagerVersion })), + ) save(dir, ".prettierrc.json", prettierJSON(setup)) save(dir, ".gitignore", gitignoreTXT(setup)) save(dir, ".prettierignore", prettierignoreTXT(setup)) diff --git a/src/cli.ts b/src/cli.ts index e17e8ed..b3f0235 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -38,7 +38,7 @@ switch (String(command || "").toLowerCase()) { } case "update:readme": { updateReadme() - break; + break } default: { console.log("Command not supported") diff --git a/src/configs/packageJSON.ts b/src/configs/packageJSON.ts index 3f59367..336308c 100644 --- a/src/configs/packageJSON.ts +++ b/src/configs/packageJSON.ts @@ -1,8 +1,18 @@ import type { Setup } from "../types/common" import version from "../version.js" -const packageJSON = ({ year, language, author }: Setup) => { +const packageJSON = ({ + year, + language, + author, + packageManager, + packageManagerVersion, +}: Setup) => { const build = language === "ts" ? { build: "aocrunner build" } : {} + const preferredPackageManager = + packageManager && Boolean(packageManagerVersion) + ? { packageManager: `^${packageManager}@${packageManagerVersion}` } + : {} return { name: `aoc${year}`, @@ -27,6 +37,7 @@ const packageJSON = ({ year, language, author }: Setup) => { engines: { node: ">=16.13.0", }, + ...preferredPackageManager, } } diff --git a/src/types/common.ts b/src/types/common.ts index da41392..fc400d8 100644 --- a/src/types/common.ts +++ b/src/types/common.ts @@ -6,6 +6,7 @@ export type Setup = { author: string semicolons: boolean strict: boolean + packageManagerVersion?: string } type DayConfig = {