From 578f7f5082ca2027f1f44555abb484aa01126cfb Mon Sep 17 00:00:00 2001 From: zuiidea Date: Tue, 14 Apr 2026 22:29:10 +0800 Subject: [PATCH] feat(create): add constants, CliError, and git ref resolver Made-with: Cursor --- packages/create/src/constants.ts | 11 +++++++++++ packages/create/src/errors.ts | 14 ++++++++++++++ packages/create/src/resolve-ref.ts | 26 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 packages/create/src/constants.ts create mode 100644 packages/create/src/errors.ts create mode 100644 packages/create/src/resolve-ref.ts diff --git a/packages/create/src/constants.ts b/packages/create/src/constants.ts new file mode 100644 index 0000000..d447338 --- /dev/null +++ b/packages/create/src/constants.ts @@ -0,0 +1,11 @@ +export const DEFAULT_GITHUB_REPO = "zuiidea/antd-admin"; + +/** Override full repo slug `owner/name` */ +export const ENV_REPO = "CREATE_ANTD_ADMIN_REPO"; + +/** Override ref: branch name, tag, or commit sha */ +export const ENV_REF = "CREATE_ANTD_ADMIN_REF"; + +export const EXIT_SUCCESS = 0; +export const EXIT_ERROR = 1; +export const EXIT_SIGINT = 130; diff --git a/packages/create/src/errors.ts b/packages/create/src/errors.ts new file mode 100644 index 0000000..229a6a2 --- /dev/null +++ b/packages/create/src/errors.ts @@ -0,0 +1,14 @@ +export class CliError extends Error { + constructor( + message: string, + public readonly code: + | "INVALID_INPUT" + | "DOWNLOAD_FAILED" + | "TRANSFORM_FAILED" + | "INSTALL_FAILED", + public readonly exitCode = 1 + ) { + super(message); + this.name = "CliError"; + } +} diff --git a/packages/create/src/resolve-ref.ts b/packages/create/src/resolve-ref.ts new file mode 100644 index 0000000..b9db75f --- /dev/null +++ b/packages/create/src/resolve-ref.ts @@ -0,0 +1,26 @@ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import { ENV_REF } from "./constants.js"; + +/** + * Priority: CREATE_ANTD_ADMIN_REF env → read sibling package.json version as `v${version}` → `main` on failure. + * When bundled to dist/cli.js, ../package.json is packages/create/package.json. + */ +export function resolveGitRef(): string { + const env = process.env[ENV_REF]?.trim(); + if (env) return env; + + try { + const pkgPath = path.join( + path.dirname(fileURLToPath(import.meta.url)), + "..", + "package.json" + ); + const raw = fs.readFileSync(pkgPath, "utf8"); + const { version } = JSON.parse(raw) as { version: string }; + return `v${version}`; + } catch { + return "main"; + } +}