From db696409d35b85708828da1eff4fc53a594e61ca Mon Sep 17 00:00:00 2001 From: zuiidea Date: Tue, 14 Apr 2026 22:32:21 +0800 Subject: [PATCH] feat(create): reject non-empty target directories Made-with: Cursor --- packages/create/src/paths.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 packages/create/src/paths.ts diff --git a/packages/create/src/paths.ts b/packages/create/src/paths.ts new file mode 100644 index 0000000..64e8176 --- /dev/null +++ b/packages/create/src/paths.ts @@ -0,0 +1,17 @@ +import fs from "node:fs"; +import path from "node:path"; +import { CliError } from "./errors.js"; + +export function resolveTargetRoot(cwd: string, dir: string): string { + const abs = path.resolve(cwd, dir); + if (fs.existsSync(abs)) { + const entries = fs.readdirSync(abs); + if (entries.length > 0) { + throw new CliError( + `Target directory is not empty: ${abs}`, + "INVALID_INPUT" + ); + } + } + return abs; +}