diff --git a/packages/create/src/download.ts b/packages/create/src/download.ts new file mode 100644 index 0000000..613bf95 --- /dev/null +++ b/packages/create/src/download.ts @@ -0,0 +1,24 @@ +import os from "node:os"; +import path from "node:path"; +import { randomUUID } from "node:crypto"; +import { downloadTemplate } from "giget"; +import { CliError } from "./errors.js"; + +export async function downloadExampleToTemp( + gigetSource: string +): Promise { + const dir = path.join(os.tmpdir(), `create-antd-admin-${randomUUID()}`); + try { + const { dir: outDir } = await downloadTemplate(gigetSource, { + dir, + forceClean: true, + }); + return outDir; + } catch (e) { + const msg = e instanceof Error ? e.message : String(e); + throw new CliError( + `Failed to download template.\nSource: ${gigetSource}\n${msg}`, + "DOWNLOAD_FAILED" + ); + } +}