From 9025a2369b5a8dc5b17831da383a68e32dc3c24f Mon Sep 17 00:00:00 2001 From: pallyoung Date: Fri, 22 May 2026 00:53:58 +0800 Subject: [PATCH] fix: remove retired cli migration publish checks --- scripts/build-cli.test.ts | 13 +++++++++++++ scripts/build-cli.ts | 20 ++------------------ scripts/publish-cli.test.ts | 9 +++------ scripts/publish-cli.ts | 13 ------------- 4 files changed, 18 insertions(+), 37 deletions(-) diff --git a/scripts/build-cli.test.ts b/scripts/build-cli.test.ts index f232f4a0..8eaa5bfe 100644 --- a/scripts/build-cli.test.ts +++ b/scripts/build-cli.test.ts @@ -22,6 +22,19 @@ describe("build-cli", () => { await expect(readdir(cliWebDir)).resolves.toEqual([]); }); + it("does not recreate retired migration artifacts when preparing output directories", async () => { + const cliDistDir = await mkdtemp(join(tmpdir(), "coder-studio-cli-dist-")); + const cliEsmDir = join(cliDistDir, "esm"); + const cliWebDir = join(cliDistDir, "web"); + + await mkdir(join(cliEsmDir, "migrations"), { recursive: true }); + await writeFile(join(cliEsmDir, "migrations", "001_init.sql"), "-- stale\n"); + + await prepareCliOutputDirs({ cliDistDir, cliEsmDir, cliWebDir }); + + await expect(readdir(cliEsmDir)).resolves.toEqual([]); + }); + it("declares every bundled production dependency in the CLI package manifest", async () => { const pkg = JSON.parse(await readFile(join(CLI_DIR, "package.json"), "utf8")) as { dependencies?: Record; diff --git a/scripts/build-cli.ts b/scripts/build-cli.ts index 4f8277ee..dbaf42ce 100644 --- a/scripts/build-cli.ts +++ b/scripts/build-cli.ts @@ -4,8 +4,8 @@ */ import * as esbuild from "esbuild"; -import { copyFile, rm, writeFile } from "fs/promises"; -import { join, resolve } from "path"; +import { rm, writeFile } from "fs/promises"; +import { resolve } from "path"; import { CLI_DIR, CLI_ESM_DIR, @@ -69,22 +69,6 @@ import('./esm/bin.mjs').catch((err) => { await writeFile(binPath, binContent, { mode: 0o755 }); success(`bin.js: ${binPath}`); - // Copy migrations - info("Copying database migrations..."); - const migrationsSrc = join(SERVER_DIR, "src/storage/migrations"); - const migrationsDest = join(CLI_ESM_DIR, "migrations"); - if (await exists(migrationsSrc)) { - await ensureDir(migrationsDest); - const { readdir } = await import("fs/promises"); - const files = await readdir(migrationsSrc); - for (const file of files) { - await copyFile(join(migrationsSrc, file), join(migrationsDest, file)); - } - success(`Migrations: ${migrationsDest}`); - } else { - error("Warning: migrations source not found, skipping"); - } - // Copy web assets info("Copying web assets..."); if (await exists(WEB_DIST_DIR)) { diff --git a/scripts/publish-cli.test.ts b/scripts/publish-cli.test.ts index 2374a48c..9b6d8d9e 100644 --- a/scripts/publish-cli.test.ts +++ b/scripts/publish-cli.test.ts @@ -86,13 +86,12 @@ describe("publish-cli", () => { const dir = await mkdtemp(join(tmpdir(), "coder-studio-publish-")); const cliDir = join(dir, "packages", "cli"); - await mkdir(join(cliDir, "dist", "esm", "migrations"), { recursive: true }); + await mkdir(join(cliDir, "dist", "esm"), { recursive: true }); await mkdir(join(cliDir, "dist", "web"), { recursive: true }); await writeFile(join(cliDir, "dist", "bin.js"), "#!/usr/bin/env node\n"); await writeFile(join(cliDir, "dist", "esm", "bin.mjs"), "export {};\n"); await writeFile(join(cliDir, "dist", "esm", "index.mjs"), "export {};\n"); await writeFile(join(cliDir, "dist", "esm", "server-runner.mjs"), "export {};\n"); - await writeFile(join(cliDir, "dist", "esm", "migrations", "001_init.sql"), "-- init\n"); await writeFile(join(cliDir, "dist", "web", "index.html"), "\n"); await writeFile( join(cliDir, "package.json"), @@ -130,7 +129,7 @@ describe("publish-cli", () => { const dir = await mkdtemp(join(tmpdir(), "coder-studio-publish-")); const cliDir = join(dir, "packages", "cli"); - await mkdir(join(cliDir, "dist", "esm", "migrations"), { recursive: true }); + await mkdir(join(cliDir, "dist", "esm"), { recursive: true }); await mkdir(join(cliDir, "dist", "web"), { recursive: true }); await writeFile(join(cliDir, "dist", "bin.js"), "#!/usr/bin/env node\n"); await writeFile( @@ -139,7 +138,6 @@ describe("publish-cli", () => { ); await writeFile(join(cliDir, "dist", "esm", "index.mjs"), "export {};\n"); await writeFile(join(cliDir, "dist", "esm", "server-runner.mjs"), "export {};\n"); - await writeFile(join(cliDir, "dist", "esm", "migrations", "001_init.sql"), "-- init\n"); await writeFile(join(cliDir, "dist", "web", "index.html"), "\n"); await writeFile( join(cliDir, "package.json"), @@ -172,13 +170,12 @@ describe("publish-cli", () => { const dir = await mkdtemp(join(tmpdir(), "coder-studio-publish-")); const cliDir = join(dir, "packages", "cli"); - await mkdir(join(cliDir, "dist", "esm", "migrations"), { recursive: true }); + await mkdir(join(cliDir, "dist", "esm"), { recursive: true }); await mkdir(join(cliDir, "dist", "web"), { recursive: true }); await writeFile(join(cliDir, "dist", "bin.js"), "#!/usr/bin/env node\n"); await writeFile(join(cliDir, "dist", "esm", "bin.mjs"), "export {};\n"); await writeFile(join(cliDir, "dist", "esm", "index.mjs"), "export {};\n"); await writeFile(join(cliDir, "dist", "esm", "server-runner.mjs"), "export {};\n"); - await writeFile(join(cliDir, "dist", "esm", "migrations", "001_init.sql"), "-- init\n"); await writeFile(join(cliDir, "dist", "web", "index.html"), "\n"); await writeFile( join(cliDir, "package.json"), diff --git a/scripts/publish-cli.ts b/scripts/publish-cli.ts index e6e5cd84..988f1745 100644 --- a/scripts/publish-cli.ts +++ b/scripts/publish-cli.ts @@ -162,7 +162,6 @@ export async function assertCliPublishArtifacts( await assertFile(resolve(cliDir, "dist/esm/index.mjs")); await assertFile(resolve(cliDir, "dist/esm/server-runner.mjs")); await assertFile(resolve(cliDir, "dist/web/index.html")); - await assertDirectoryHasFile(resolve(cliDir, "dist/esm/migrations"), ".sql"); assertBundleRuntimeDependenciesDeclared( pkg.dependencies, await collectBareImports(resolve(cliDir, "dist/esm"), [ @@ -300,18 +299,6 @@ async function assertFile(path: string): Promise { } } -async function assertDirectoryHasFile(dir: string, extension: string): Promise { - const stats = await stat(dir).catch(() => null); - if (!stats?.isDirectory()) { - throw new Error(`Required publish artifact directory is missing: ${dir}`); - } - - const files = await readdir(dir); - if (!files.some((file) => file.endsWith(extension))) { - throw new Error(`Required publish artifact directory has no ${extension} files: ${dir}`); - } -} - function hasRecordValue(value: unknown, key: string, expected: string): boolean { return ( typeof value === "object" &&