fix(update): repair daemon-cli compat exports after self-update
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import {
|
||||
LEGACY_DAEMON_CLI_EXPORTS,
|
||||
resolveLegacyDaemonCliAccessors,
|
||||
} from "../src/cli/daemon-cli-compat.ts";
|
||||
|
||||
const rootDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
||||
const distDir = path.join(rootDir, "dist");
|
||||
@@ -27,12 +31,32 @@ if (candidates.length === 0) {
|
||||
throw new Error("No daemon-cli bundle found in dist; cannot write legacy CLI shim.");
|
||||
}
|
||||
|
||||
const target = candidates.toSorted()[0];
|
||||
const orderedCandidates = candidates.toSorted();
|
||||
const resolved = orderedCandidates
|
||||
.map((entry) => {
|
||||
const source = fs.readFileSync(path.join(distDir, entry), "utf8");
|
||||
const accessors = resolveLegacyDaemonCliAccessors(source);
|
||||
return { entry, accessors };
|
||||
})
|
||||
.find((entry) => Boolean(entry.accessors));
|
||||
|
||||
if (!resolved?.accessors) {
|
||||
throw new Error(
|
||||
`Could not resolve daemon-cli export aliases from dist bundles: ${orderedCandidates.join(", ")}`,
|
||||
);
|
||||
}
|
||||
|
||||
const target = resolved.entry;
|
||||
const relPath = `../${target}`;
|
||||
const { accessors } = resolved;
|
||||
|
||||
const contents =
|
||||
"// Legacy shim for pre-tsdown update-cli imports.\n" +
|
||||
`export { registerDaemonCli, runDaemonInstall, runDaemonRestart, runDaemonStart, runDaemonStatus, runDaemonStop, runDaemonUninstall } from "${relPath}";\n`;
|
||||
`import * as daemonCli from "${relPath}";\n` +
|
||||
LEGACY_DAEMON_CLI_EXPORTS.map(
|
||||
(name) => `export const ${name} = daemonCli.${accessors[name]};`,
|
||||
).join("\n") +
|
||||
"\n";
|
||||
|
||||
fs.mkdirSync(cliDir, { recursive: true });
|
||||
fs.writeFileSync(path.join(cliDir, "daemon-cli.js"), contents);
|
||||
|
||||
Reference in New Issue
Block a user