ph-cmd 6.0.2-staging.5 → 6.0.2-staging.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +33 -7
- package/dist/cli.mjs.map +1 -1
- package/dist/delegate-init-B2yYmYTD.mjs +70 -0
- package/dist/delegate-init-B2yYmYTD.mjs.map +1 -0
- package/dist/delegate-init-Da12SK8S.mjs +4 -0
- package/dist/get-version-DlUa8_Da.mjs +16 -0
- package/dist/get-version-DlUa8_Da.mjs.map +1 -0
- package/dist/{ph-cli-1NIlwpsP.mjs → ph-cli-DU9EOhSU.mjs} +17 -6
- package/dist/ph-cli-DU9EOhSU.mjs.map +1 -0
- package/dist/{ph-D-WxcGiX.mjs → run-V5sp7Ntc.mjs} +74 -136
- package/dist/run-V5sp7Ntc.mjs.map +1 -0
- package/package.json +5 -7
- package/dist/generate-commands-docs.d.mts +0 -1
- package/dist/generate-commands-docs.mjs +0 -41
- package/dist/generate-commands-docs.mjs.map +0 -1
- package/dist/ph-D-WxcGiX.mjs.map +0 -1
- package/dist/ph-cli-1NIlwpsP.mjs.map +0 -1
- package/dist/run-DJc9Lmb9.mjs +0 -10
- package/dist/run-DJc9Lmb9.mjs.map +0 -1
package/dist/cli.mjs
CHANGED
|
@@ -1,26 +1,51 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1b86dd82-6b93-5626-9454-0799daf0f315")}catch(e){}}();
|
|
4
|
+
import { t as getVersion } from "./get-version-DlUa8_Da.mjs";
|
|
5
|
+
import { phCliCommandNames } from "@powerhousedao/shared/clis/command-names";
|
|
6
|
+
import { initCliTelemetry } from "@powerhousedao/shared/clis/telemetry";
|
|
7
|
+
import { assertNodeVersion } from "@powerhousedao/shared/clis/utils";
|
|
3
8
|
//#region src/cli.ts
|
|
9
|
+
const COMMANDS_WITH_SUBCOMMANDS = new Set(["connect", "vetra"]);
|
|
10
|
+
function detectPackageManager() {
|
|
11
|
+
const ua = process.env.npm_config_user_agent;
|
|
12
|
+
if (!ua) return void 0;
|
|
13
|
+
return ua.split(" ")[0]?.split("/")[0] || void 0;
|
|
14
|
+
}
|
|
4
15
|
/**
|
|
5
16
|
* ph-cli and ph-cmd are loaded lazily so that the node version is checked before
|
|
6
17
|
* any code is parsed to avoid errors on startup due to unsupported dependencies.
|
|
7
18
|
*/
|
|
8
19
|
async function runPhCliCommand(phCliCommand) {
|
|
9
|
-
const { executePhCliCommand } = await import("./ph-cli-
|
|
20
|
+
const { executePhCliCommand } = await import("./ph-cli-DU9EOhSU.mjs");
|
|
10
21
|
return await executePhCliCommand(phCliCommand);
|
|
11
22
|
}
|
|
12
23
|
async function runPhCmdCommand(args) {
|
|
13
|
-
const { run } = await import("./run-
|
|
24
|
+
const { run } = await import("./run-V5sp7Ntc.mjs");
|
|
14
25
|
return await run(args);
|
|
15
26
|
}
|
|
27
|
+
let sentryClient = void 0;
|
|
16
28
|
async function main() {
|
|
17
29
|
assertNodeVersion();
|
|
18
|
-
await initCliTelemetry({
|
|
30
|
+
sentryClient = await initCliTelemetry({
|
|
19
31
|
cliName: "ph-cmd",
|
|
20
|
-
release:
|
|
32
|
+
release: getVersion()
|
|
21
33
|
});
|
|
22
34
|
const args = process.argv.slice(2);
|
|
23
35
|
const command = args[0];
|
|
36
|
+
const subcommand = command && COMMANDS_WITH_SUBCOMMANDS.has(command) && args[1] && !args[1].startsWith("-") ? args[1] : void 0;
|
|
37
|
+
sentryClient?.attachInvocationContext({
|
|
38
|
+
command,
|
|
39
|
+
subcommand,
|
|
40
|
+
pm: detectPackageManager(),
|
|
41
|
+
argv: args,
|
|
42
|
+
cwd: process.cwd()
|
|
43
|
+
});
|
|
44
|
+
if (args.length === 1 && (command === "--version" || command === "-v")) {
|
|
45
|
+
const { getPhCmdVersionInfo } = await import("@powerhousedao/shared/clis");
|
|
46
|
+
console.log(await getPhCmdVersionInfo(getVersion()));
|
|
47
|
+
process.exit(0);
|
|
48
|
+
}
|
|
24
49
|
if (command === "connect" && !args.some((arg) => [
|
|
25
50
|
"studio",
|
|
26
51
|
"build",
|
|
@@ -38,7 +63,7 @@ async function main() {
|
|
|
38
63
|
}
|
|
39
64
|
await main().catch(async (error) => {
|
|
40
65
|
const isDebug = process.argv.slice(2).includes("--debug");
|
|
41
|
-
await captureCliError(error);
|
|
66
|
+
await sentryClient?.captureCliError(error);
|
|
42
67
|
if (isDebug) throw error;
|
|
43
68
|
if (error instanceof Error) {
|
|
44
69
|
console.error(error.message);
|
|
@@ -48,4 +73,5 @@ await main().catch(async (error) => {
|
|
|
48
73
|
//#endregion
|
|
49
74
|
export {};
|
|
50
75
|
|
|
51
|
-
//# sourceMappingURL=cli.mjs.map
|
|
76
|
+
//# sourceMappingURL=cli.mjs.map
|
|
77
|
+
//# debugId=1b86dd82-6b93-5626-9454-0799daf0f315
|
package/dist/cli.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.mjs","
|
|
1
|
+
{"version":3,"file":"cli.mjs","sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { phCliCommandNames } from \"@powerhousedao/shared/clis/command-names\";\nimport {\n initCliTelemetry,\n type TelemetryClient,\n} from \"@powerhousedao/shared/clis/telemetry\";\nimport { assertNodeVersion } from \"@powerhousedao/shared/clis/utils\";\nimport { getVersion } from \"./get-version.js\";\n\n// Commands whose second positional is itself a subcommand (vs. a project\n// name / file path). Keeping this explicit avoids high-cardinality tag\n// values like `subcommand:my-package` polluting Sentry.\nconst COMMANDS_WITH_SUBCOMMANDS = new Set([\"connect\", \"vetra\"]);\n\nfunction detectPackageManager(): string | undefined {\n // npm, pnpm, yarn and bun all set npm_config_user_agent like\n // \"pnpm/8.5.0 npm/? node/v20.11.1 darwin arm64\". When the user invokes\n // `ph` directly (not via dlx/exec) it's typically unset — skip the tag\n // in that case rather than mislabel.\n const ua = process.env.npm_config_user_agent;\n if (!ua) return undefined;\n return ua.split(\" \")[0]?.split(\"/\")[0] || undefined;\n}\n\n/**\n * ph-cli and ph-cmd are loaded lazily so that the node version is checked before\n * any code is parsed to avoid errors on startup due to unsupported dependencies.\n */\n\nasync function runPhCliCommand(phCliCommand: string) {\n const { executePhCliCommand } = await import(\"./ph-cli.js\");\n return await executePhCliCommand(phCliCommand);\n}\nasync function runPhCmdCommand(args: string[]) {\n const { run } = await import(\"./run.js\");\n return await run(args);\n}\n\nlet sentryClient: TelemetryClient | undefined = undefined;\n\nasync function main() {\n assertNodeVersion();\n // Opt-out telemetry; asked once on first interactive run. No-op under\n // PH_NO_TELEMETRY / DO_NOT_TRACK / CI.\n sentryClient = await initCliTelemetry({\n cliName: \"ph-cmd\",\n release: getVersion(),\n });\n const args = process.argv.slice(2);\n const command = args[0];\n const subcommand =\n command &&\n COMMANDS_WITH_SUBCOMMANDS.has(command) &&\n args[1] &&\n !args[1].startsWith(\"-\")\n ? args[1]\n : undefined;\n sentryClient?.attachInvocationContext({\n command,\n subcommand,\n pm: detectPackageManager(),\n argv: args,\n cwd: process.cwd(),\n });\n\n // Short-circuit `ph --version` / `ph -v` so we don't pay for the full\n // cmd-ts subcommand tree (which dynamic-imports the heavy clis bundle\n // just to populate the `version` field). `ph use --version 1.2.3` and\n // similar are unaffected because they have a subcommand first.\n if (args.length === 1 && (command === \"--version\" || command === \"-v\")) {\n const { getPhCmdVersionInfo } = await import(\"@powerhousedao/shared/clis\");\n console.log(await getPhCmdVersionInfo(getVersion()));\n process.exit(0);\n }\n\n // handle the special case where running `connect` with no positional argument\n // defaults to `connect studio`\n if (\n command === \"connect\" &&\n !args.some((arg) => [\"studio\", \"build\", \"preview\"].includes(arg)) &&\n // do not default to `connect studio` when help is present, instead show general help\n // for the `connect` command\n !args.some((arg) => [\"--help\", \"-h\"].includes(arg))\n ) {\n await runPhCliCommand(\"connect\");\n process.exit(0);\n }\n\n // forward command to the local ph-cli installation if it exists\n if (\n phCliCommandNames.includes(command as (typeof phCliCommandNames)[number])\n ) {\n await runPhCliCommand(command);\n process.exit(0);\n }\n\n await runPhCmdCommand(args);\n process.exit(0);\n}\n\nawait main().catch(async (error) => {\n const isDebug = process.argv.slice(2).includes(\"--debug\");\n // No-op when telemetry is disabled; flushes before we exit otherwise.\n await sentryClient?.captureCliError(error);\n if (isDebug) {\n throw error;\n }\n if (error instanceof Error) {\n console.error(error.message);\n process.exit(1);\n } else {\n throw error;\n }\n});\n"],"names":[],"mappings":";;;;;;;;AAYA,MAAM,4BAA4B,IAAI,IAAI,CAAC,WAAW,QAAQ,CAAC;AAE/D,SAAS,uBAA2C;CAKlD,MAAM,KAAK,QAAQ,IAAI;AACvB,KAAI,CAAC,GAAI,QAAO,KAAA;AAChB,QAAO,GAAG,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,KAAA;;;;;;AAQ5C,eAAe,gBAAgB,cAAsB;CACnD,MAAM,EAAE,wBAAwB,MAAM,OAAO;AAC7C,QAAO,MAAM,oBAAoB,aAAa;;AAEhD,eAAe,gBAAgB,MAAgB;CAC7C,MAAM,EAAE,QAAQ,MAAM,OAAO;AAC7B,QAAO,MAAM,IAAI,KAAK;;AAGxB,IAAI,eAA4C,KAAA;AAEhD,eAAe,OAAO;AACpB,oBAAmB;AAGnB,gBAAe,MAAM,iBAAiB;EACpC,SAAS;EACT,SAAS,YAAY;EACtB,CAAC;CACF,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;CAClC,MAAM,UAAU,KAAK;CACrB,MAAM,aACJ,WACA,0BAA0B,IAAI,QAAQ,IACtC,KAAK,MACL,CAAC,KAAK,GAAG,WAAW,IAAI,GACpB,KAAK,KACL,KAAA;AACN,eAAc,wBAAwB;EACpC;EACA;EACA,IAAI,sBAAsB;EAC1B,MAAM;EACN,KAAK,QAAQ,KAAK;EACnB,CAAC;AAMF,KAAI,KAAK,WAAW,MAAM,YAAY,eAAe,YAAY,OAAO;EACtE,MAAM,EAAE,wBAAwB,MAAM,OAAO;AAC7C,UAAQ,IAAI,MAAM,oBAAoB,YAAY,CAAC,CAAC;AACpD,UAAQ,KAAK,EAAE;;AAKjB,KACE,YAAY,aACZ,CAAC,KAAK,MAAM,QAAQ;EAAC;EAAU;EAAS;EAAU,CAAC,SAAS,IAAI,CAAC,IAGjE,CAAC,KAAK,MAAM,QAAQ,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,CAAC,EACnD;AACA,QAAM,gBAAgB,UAAU;AAChC,UAAQ,KAAK,EAAE;;AAIjB,KACE,kBAAkB,SAAS,QAA8C,EACzE;AACA,QAAM,gBAAgB,QAAQ;AAC9B,UAAQ,KAAK,EAAE;;AAGjB,OAAM,gBAAgB,KAAK;AAC3B,SAAQ,KAAK,EAAE;;AAGjB,MAAM,MAAM,CAAC,MAAM,OAAO,UAAU;CAClC,MAAM,UAAU,QAAQ,KAAK,MAAM,EAAE,CAAC,SAAS,UAAU;AAEzD,OAAM,cAAc,gBAAgB,MAAM;AAC1C,KAAI,QACF,OAAM;AAER,KAAI,iBAAiB,OAAO;AAC1B,UAAQ,MAAM,MAAM,QAAQ;AAC5B,UAAQ,KAAK,EAAE;OAEf,OAAM;EAER","debug_id":"1b86dd82-6b93-5626-9454-0799daf0f315"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a3aea0b9-2ac4-5174-b85c-2bfa3f527017")}catch(e){}}();
|
|
3
|
+
import { execSync } from "node:child_process";
|
|
4
|
+
//#region src/utils/delegate-init.ts
|
|
5
|
+
const PH_CLI_PACKAGE = "@powerhousedao/ph-cli";
|
|
6
|
+
const MIN_PH_CLI_MAJOR = 6;
|
|
7
|
+
/**
|
|
8
|
+
* Resolves a concrete `@powerhousedao/ph-cli` version, verifies it's >= 6.x,
|
|
9
|
+
* and shells out via the user's package manager (npx / pnpm dlx / etc.) to
|
|
10
|
+
* run `ph-cli init`. Used by both `ph init` (forwards verbatim) and
|
|
11
|
+
* `ph setup-globals` (forwards with `--name .ph` injected after chdir to ~).
|
|
12
|
+
*
|
|
13
|
+
* Does NOT call `process.exit`: callers are responsible for any post-init
|
|
14
|
+
* fix-up + exit.
|
|
15
|
+
*/
|
|
16
|
+
async function delegateInit(args, extraForwardedArgs = []) {
|
|
17
|
+
const { fetchNpmVersionFromRegistryForTag, handleMutuallyExclusiveOptions, parsePackageManager, parseTag } = await import("@powerhousedao/shared/clis");
|
|
18
|
+
handleMutuallyExclusiveOptions({
|
|
19
|
+
tag: args.tag,
|
|
20
|
+
version: args.version,
|
|
21
|
+
dev: args.dev,
|
|
22
|
+
staging: args.staging
|
|
23
|
+
}, "versioning strategy");
|
|
24
|
+
handleMutuallyExclusiveOptions({
|
|
25
|
+
npm: args.npm,
|
|
26
|
+
pnpm: args.pnpm,
|
|
27
|
+
yarn: args.yarn,
|
|
28
|
+
bun: args.bun,
|
|
29
|
+
packageManager: args.packageManager
|
|
30
|
+
}, "package manager");
|
|
31
|
+
const tag = parseTag(args);
|
|
32
|
+
const phCliVersionOrTag = args.version ?? tag;
|
|
33
|
+
const pm = parsePackageManager(args) ?? "npm";
|
|
34
|
+
const forwardedArgs = [...extraForwardedArgs, ...process.argv.slice(3)];
|
|
35
|
+
let resolvedVersion = args.version;
|
|
36
|
+
try {
|
|
37
|
+
if (!resolvedVersion) resolvedVersion = await fetchNpmVersionFromRegistryForTag(PH_CLI_PACKAGE, tag);
|
|
38
|
+
} catch (err) {
|
|
39
|
+
if (args.debug) console.error(">>> ph-cli version resolution skipped:", err);
|
|
40
|
+
}
|
|
41
|
+
const { coerce } = await import("semver");
|
|
42
|
+
const parsed = resolvedVersion ? coerce(resolvedVersion) : null;
|
|
43
|
+
if (parsed && parsed.major < MIN_PH_CLI_MAJOR) {
|
|
44
|
+
console.error(`${PH_CLI_PACKAGE}@${phCliVersionOrTag} resolves to ${resolvedVersion}, which doesn't support 'init' (requires >= ${MIN_PH_CLI_MAJOR}.0.0).\nTry: ph init --dev <args> or ph init --version <${MIN_PH_CLI_MAJOR}.x.x> <args>`);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
const phCliPackage = `${PH_CLI_PACKAGE}@${resolvedVersion ?? phCliVersionOrTag}`;
|
|
48
|
+
const { resolveCommand } = await import("package-manager-detector");
|
|
49
|
+
const resolved = resolveCommand(pm, "execute", [
|
|
50
|
+
phCliPackage,
|
|
51
|
+
"init",
|
|
52
|
+
...forwardedArgs
|
|
53
|
+
]);
|
|
54
|
+
if (!resolved) throw new Error(`Could not resolve execute command for package manager "${pm}".`);
|
|
55
|
+
const { command: cmd, args: cmdArgs } = resolved;
|
|
56
|
+
const fullCmd = `${cmd} ${cmdArgs.join(" ")}`;
|
|
57
|
+
if (args.debug) console.log(">>> Delegating to ph-cli:", fullCmd);
|
|
58
|
+
try {
|
|
59
|
+
execSync(fullCmd, { stdio: "inherit" });
|
|
60
|
+
} catch (err) {
|
|
61
|
+
const e = err;
|
|
62
|
+
if (typeof e.status === "number" && !e.signal) process.exit(e.status);
|
|
63
|
+
throw err;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//#endregion
|
|
67
|
+
export { delegateInit as t };
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=delegate-init-B2yYmYTD.mjs.map
|
|
70
|
+
//# debugId=a3aea0b9-2ac4-5174-b85c-2bfa3f527017
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate-init-B2yYmYTD.mjs","sources":["../src/utils/delegate-init.ts"],"sourcesContent":["import type { Agent } from \"package-manager-detector\";\nimport { execSync } from \"node:child_process\";\n\nconst PH_CLI_PACKAGE = \"@powerhousedao/ph-cli\";\n// `init` was added to ph-cli in the 6.x rewrite. Older versions (still on\n// the `latest` tag at time of writing) shell out via commander and bail with\n// a confusing \"unknown command 'init'\" error after a 90-second dlx install.\n// This floor lets us fail fast with an actionable message instead.\nconst MIN_PH_CLI_MAJOR = 6;\n\n/**\n * Subset of `initArgs` the delegator actually inspects. Keeping this loose\n * lets `setup-globals` reuse the helper without an extra type import dance.\n */\nexport interface DelegateInitArgs {\n packageManager?: Agent;\n npm?: boolean;\n pnpm?: boolean;\n yarn?: boolean;\n bun?: boolean;\n tag?: string;\n version?: string;\n dev?: boolean;\n staging?: boolean;\n debug?: boolean;\n}\n\n/**\n * Resolves a concrete `@powerhousedao/ph-cli` version, verifies it's >= 6.x,\n * and shells out via the user's package manager (npx / pnpm dlx / etc.) to\n * run `ph-cli init`. Used by both `ph init` (forwards verbatim) and\n * `ph setup-globals` (forwards with `--name .ph` injected after chdir to ~).\n *\n * Does NOT call `process.exit`: callers are responsible for any post-init\n * fix-up + exit.\n */\nexport async function delegateInit(\n args: DelegateInitArgs,\n extraForwardedArgs: string[] = [],\n): Promise<void> {\n const {\n fetchNpmVersionFromRegistryForTag,\n handleMutuallyExclusiveOptions,\n parsePackageManager,\n parseTag,\n } = await import(\"@powerhousedao/shared/clis\");\n\n handleMutuallyExclusiveOptions(\n {\n tag: args.tag,\n version: args.version,\n dev: args.dev,\n staging: args.staging,\n },\n \"versioning strategy\",\n );\n\n handleMutuallyExclusiveOptions(\n {\n npm: args.npm,\n pnpm: args.pnpm,\n yarn: args.yarn,\n bun: args.bun,\n packageManager: args.packageManager,\n },\n \"package manager\",\n );\n\n const tag = parseTag(args);\n const phCliVersionOrTag = args.version ?? tag;\n const pm = parsePackageManager(args) ?? \"npm\";\n // `process.argv` here is `[node, ph-cmd-bin, <subcommand>, ...userArgs]`.\n // Forward everything from the user, prepending caller-supplied flags.\n const forwardedArgs = [...extraForwardedArgs, ...process.argv.slice(3)];\n\n // Resolve the tag to a concrete version up front and verify it's >= 6.x.\n // `--version` is user-supplied so we trust it and only resolve when a tag\n // (latest/staging/dev) is in play.\n let resolvedVersion = args.version;\n try {\n if (!resolvedVersion) {\n resolvedVersion = await fetchNpmVersionFromRegistryForTag(\n PH_CLI_PACKAGE,\n tag,\n );\n }\n } catch (err) {\n // Network/registry hiccup — fall through to the dlx so a flaky\n // connection doesn't block the user. The dlx will surface its own\n // error if the version genuinely can't be installed.\n if (args.debug) {\n console.error(\">>> ph-cli version resolution skipped:\", err);\n }\n }\n const { coerce } = await import(\"semver\");\n const parsed = resolvedVersion ? coerce(resolvedVersion) : null;\n if (parsed && parsed.major < MIN_PH_CLI_MAJOR) {\n // Print + exit (rather than throw) to avoid the cli.ts catch handler\n // shipping this expected user-input error to Sentry.\n console.error(\n `${PH_CLI_PACKAGE}@${phCliVersionOrTag} resolves to ${resolvedVersion}, ` +\n `which doesn't support 'init' (requires >= ${MIN_PH_CLI_MAJOR}.0.0).\\n` +\n `Try: ph init --dev <args> or ph init --version <${MIN_PH_CLI_MAJOR}.x.x> <args>`,\n );\n process.exit(1);\n }\n\n const phCliPackage = `${PH_CLI_PACKAGE}@${resolvedVersion ?? phCliVersionOrTag}`;\n const { resolveCommand } = await import(\"package-manager-detector\");\n const resolved = resolveCommand(pm, \"execute\", [\n phCliPackage,\n \"init\",\n ...forwardedArgs,\n ]);\n\n if (!resolved) {\n throw new Error(\n `Could not resolve execute command for package manager \"${pm}\".`,\n );\n }\n\n const { command: cmd, args: cmdArgs } = resolved;\n const fullCmd = `${cmd} ${cmdArgs.join(\" \")}`;\n\n if (args.debug) {\n console.log(\">>> Delegating to ph-cli:\", fullCmd);\n }\n\n try {\n execSync(fullCmd, { stdio: \"inherit\" });\n } catch (err) {\n // Propagate normal non-zero exits but throw on abnormal exits to ensure\n // the error is reported.\n const e = err as {\n status?: number | null;\n signal?: NodeJS.Signals | null;\n };\n if (typeof e.status === \"number\" && !e.signal) {\n process.exit(e.status);\n }\n throw err;\n }\n}\n"],"names":[],"mappings":";;;;AAGA,MAAM,iBAAiB;AAKvB,MAAM,mBAAmB;;;;;;;;;;AA4BzB,eAAsB,aACpB,MACA,qBAA+B,EAAE,EAClB;CACf,MAAM,EACJ,mCACA,gCACA,qBACA,aACE,MAAM,OAAO;AAEjB,gCACE;EACE,KAAK,KAAK;EACV,SAAS,KAAK;EACd,KAAK,KAAK;EACV,SAAS,KAAK;EACf,EACD,sBACD;AAED,gCACE;EACE,KAAK,KAAK;EACV,MAAM,KAAK;EACX,MAAM,KAAK;EACX,KAAK,KAAK;EACV,gBAAgB,KAAK;EACtB,EACD,kBACD;CAED,MAAM,MAAM,SAAS,KAAK;CAC1B,MAAM,oBAAoB,KAAK,WAAW;CAC1C,MAAM,KAAK,oBAAoB,KAAK,IAAI;CAGxC,MAAM,gBAAgB,CAAC,GAAG,oBAAoB,GAAG,QAAQ,KAAK,MAAM,EAAE,CAAC;CAKvE,IAAI,kBAAkB,KAAK;AAC3B,KAAI;AACF,MAAI,CAAC,gBACH,mBAAkB,MAAM,kCACtB,gBACA,IACD;UAEI,KAAK;AAIZ,MAAI,KAAK,MACP,SAAQ,MAAM,0CAA0C,IAAI;;CAGhE,MAAM,EAAE,WAAW,MAAM,OAAO;CAChC,MAAM,SAAS,kBAAkB,OAAO,gBAAgB,GAAG;AAC3D,KAAI,UAAU,OAAO,QAAQ,kBAAkB;AAG7C,UAAQ,MACN,GAAG,eAAe,GAAG,kBAAkB,eAAe,gBAAgB,8CACvB,iBAAiB,+DACN,iBAAiB,cAC5E;AACD,UAAQ,KAAK,EAAE;;CAGjB,MAAM,eAAe,GAAG,eAAe,GAAG,mBAAmB;CAC7D,MAAM,EAAE,mBAAmB,MAAM,OAAO;CACxC,MAAM,WAAW,eAAe,IAAI,WAAW;EAC7C;EACA;EACA,GAAG;EACJ,CAAC;AAEF,KAAI,CAAC,SACH,OAAM,IAAI,MACR,0DAA0D,GAAG,IAC9D;CAGH,MAAM,EAAE,SAAS,KAAK,MAAM,YAAY;CACxC,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ,KAAK,IAAI;AAE3C,KAAI,KAAK,MACP,SAAQ,IAAI,6BAA6B,QAAQ;AAGnD,KAAI;AACF,WAAS,SAAS,EAAE,OAAO,WAAW,CAAC;UAChC,KAAK;EAGZ,MAAM,IAAI;AAIV,MAAI,OAAO,EAAE,WAAW,YAAY,CAAC,EAAE,OACrC,SAAQ,KAAK,EAAE,OAAO;AAExB,QAAM","debug_id":"a3aea0b9-2ac4-5174-b85c-2bfa3f527017"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { t as delegateInit } from "./delegate-init-B2yYmYTD.mjs";
|
|
2
|
+
export { delegateInit };
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="61a2b7b5-2e48-5f9f-a996-2c9799651dd1")}catch(e){}}();
|
|
4
|
+
//# debugId=61a2b7b5-2e48-5f9f-a996-2c9799651dd1
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/get-version.ts
|
|
2
|
+
/**
|
|
3
|
+
* Returns the CLI version string. Replaced inline by tsdown's `define` at
|
|
4
|
+
* build time; falls back to env vars when running un-bundled (e.g. via
|
|
5
|
+
* `bun run scripts/generate-commands-docs.ts` or `bun run src/cli.ts`).
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="09c74028-fef9-51d3-80a1-91493a57487e")}catch(e){}}();
|
|
9
|
+
function getVersion() {
|
|
10
|
+
return "6.0.2-staging.7";
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { getVersion as t };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=get-version-DlUa8_Da.mjs.map
|
|
16
|
+
//# debugId=09c74028-fef9-51d3-80a1-91493a57487e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-version-DlUa8_Da.mjs","sources":["../src/get-version.ts"],"sourcesContent":["declare const CLI_VERSION: string | undefined;\ndeclare const CLI_GIT_SHA: string | undefined;\n\n/**\n * Returns the CLI version string. Replaced inline by tsdown's `define` at\n * build time; falls back to env vars when running un-bundled (e.g. via\n * `bun run scripts/generate-commands-docs.ts` or `bun run src/cli.ts`).\n */\nexport function getVersion() {\n if (typeof CLI_VERSION !== \"undefined\") return CLI_VERSION;\n return (\n process.env.WORKSPACE_VERSION ||\n process.env.npm_package_version ||\n \"unknown\"\n );\n}\n\nexport function getGitHash() {\n if (typeof CLI_GIT_SHA !== \"undefined\") return CLI_GIT_SHA;\n return process.env.WORKSPACE_GIT_SHA || \"unknown\";\n}\n"],"names":[],"mappings":";;;;;;;;AAQA,SAAgB,aAAa;AACa,QAAA","debug_id":"09c74028-fef9-51d3-80a1-91493a57487e"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c6af2577-e4bb-5bcf-a266-7216856e6c39")}catch(e){}}();
|
|
1
3
|
import { getPowerhouseProjectInfo } from "@powerhousedao/shared/clis";
|
|
2
4
|
import { execSync } from "node:child_process";
|
|
3
5
|
import { resolveCommand } from "package-manager-detector";
|
|
4
6
|
//#region src/ph-cli.ts
|
|
5
7
|
async function executePhCliCommand(phCliCommand) {
|
|
6
8
|
const forwardedArgs = process.argv.slice(3);
|
|
7
|
-
const { projectPath, packageManager } = await getPowerhouseProjectInfo();
|
|
9
|
+
const { projectPath, packageManager } = await getPowerhouseProjectInfo(void 0, { silent: true });
|
|
10
|
+
if (!projectPath) throw new Error(`No Powerhouse project directory found, cannot run \`ph ${phCliCommand}\`.\nTo create a local project, run \`ph init\`.\nTo create a global project, run \`ph setup-globals\`.`);
|
|
8
11
|
const resolveExecuteLocalCommandResult = resolveCommand(packageManager, "execute-local", [
|
|
9
12
|
"ph-cli",
|
|
10
13
|
phCliCommand,
|
|
@@ -12,12 +15,20 @@ async function executePhCliCommand(phCliCommand) {
|
|
|
12
15
|
]);
|
|
13
16
|
if (!resolveExecuteLocalCommandResult) throw new Error(`Command ${phCliCommand} is not executable by package manager ${packageManager}. Either install "@powerhousedao/ph-cli" in your local package, or run \`ph setup-globals\` to globally install the "@powerhousedao/ph-cli" package.`);
|
|
14
17
|
const { command, args } = resolveExecuteLocalCommandResult;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
const cmd = `${command} ${args.join(" ")}`;
|
|
19
|
+
try {
|
|
20
|
+
execSync(cmd, {
|
|
21
|
+
stdio: "inherit",
|
|
22
|
+
cwd: projectPath
|
|
23
|
+
});
|
|
24
|
+
} catch (err) {
|
|
25
|
+
const e = err;
|
|
26
|
+
if (typeof e.status === "number" && !e.signal) process.exit(e.status);
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
19
29
|
}
|
|
20
30
|
//#endregion
|
|
21
31
|
export { executePhCliCommand };
|
|
22
32
|
|
|
23
|
-
//# sourceMappingURL=ph-cli-
|
|
33
|
+
//# sourceMappingURL=ph-cli-DU9EOhSU.mjs.map
|
|
34
|
+
//# debugId=c6af2577-e4bb-5bcf-a266-7216856e6c39
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ph-cli-DU9EOhSU.mjs","sources":["../src/ph-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { getPowerhouseProjectInfo } from \"@powerhousedao/shared/clis\";\nimport { execSync } from \"node:child_process\";\nimport { resolveCommand } from \"package-manager-detector\";\n\nexport async function executePhCliCommand(phCliCommand: string) {\n const forwardedArgs = process.argv.slice(3);\n const { projectPath, packageManager } = await getPowerhouseProjectInfo(\n undefined,\n { silent: true },\n );\n if (!projectPath) {\n throw new Error(\n `No Powerhouse project directory found, cannot run \\`ph ${phCliCommand}\\`.\\nTo create a local project, run \\`ph init\\`.\\nTo create a global project, run \\`ph setup-globals\\`.`,\n );\n }\n const resolveExecuteLocalCommandResult = resolveCommand(\n packageManager,\n \"execute-local\",\n [\"ph-cli\", phCliCommand, ...forwardedArgs],\n );\n if (!resolveExecuteLocalCommandResult) {\n throw new Error(\n `Command ${phCliCommand} is not executable by package manager ${packageManager}. Either install \"@powerhousedao/ph-cli\" in your local package, or run \\`ph setup-globals\\` to globally install the \"@powerhousedao/ph-cli\" package.`,\n );\n }\n const { command, args } = resolveExecuteLocalCommandResult;\n const cmd = `${command} ${args.join(\" \")}`;\n try {\n execSync(cmd, { stdio: \"inherit\", cwd: projectPath });\n } catch (err) {\n // propagate normal non-zero exits but throw on abnormal exits to ensure the error is reported\n const e = err as { status?: number | null; signal?: NodeJS.Signals | null };\n if (typeof e.status === \"number\" && !e.signal) {\n process.exit(e.status);\n }\n throw err;\n }\n}\n"],"names":[],"mappings":";;;;;;AAKA,eAAsB,oBAAoB,cAAsB;CAC9D,MAAM,gBAAgB,QAAQ,KAAK,MAAM,EAAE;CAC3C,MAAM,EAAE,aAAa,mBAAmB,MAAM,yBAC5C,KAAA,GACA,EAAE,QAAQ,MAAM,CACjB;AACD,KAAI,CAAC,YACH,OAAM,IAAI,MACR,0DAA0D,aAAa,yGACxE;CAEH,MAAM,mCAAmC,eACvC,gBACA,iBACA;EAAC;EAAU;EAAc,GAAG;EAAc,CAC3C;AACD,KAAI,CAAC,iCACH,OAAM,IAAI,MACR,WAAW,aAAa,wCAAwC,eAAe,sJAChF;CAEH,MAAM,EAAE,SAAS,SAAS;CAC1B,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,KAAK,IAAI;AACxC,KAAI;AACF,WAAS,KAAK;GAAE,OAAO;GAAW,KAAK;GAAa,CAAC;UAC9C,KAAK;EAEZ,MAAM,IAAI;AACV,MAAI,OAAO,EAAE,WAAW,YAAY,CAAC,EAAE,OACrC,SAAQ,KAAK,EAAE,OAAO;AAExB,QAAM","debug_id":"c6af2577-e4bb-5bcf-a266-7216856e6c39"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
1
|
+
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4e55daf2-12cc-5bad-84d5-68cdf04ef27e")}catch(e){}}();
|
|
3
|
+
import { t as getVersion } from "./get-version-DlUa8_Da.mjs";
|
|
4
|
+
import { t as delegateInit } from "./delegate-init-B2yYmYTD.mjs";
|
|
5
|
+
import { boolean, command, flag, oneOf, option, optional, positional, run as run$1, string, subcommands } from "cmd-ts";
|
|
6
|
+
import { debugArgs, initArgs, phCliHelpCommands } from "@powerhousedao/shared/clis/args";
|
|
7
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
8
|
+
import path from "node:path";
|
|
8
9
|
import { ALL_POWERHOUSE_DEPENDENCIES } from "@powerhousedao/shared/constants";
|
|
9
|
-
import chalk from "chalk";
|
|
10
|
-
import { detect } from "package-manager-detector/detect";
|
|
11
|
-
import { readPackage } from "read-pkg";
|
|
12
|
-
import { writePackage } from "write-package";
|
|
13
|
-
import { clean, valid } from "semver";
|
|
14
10
|
//#region src/commands/init.ts
|
|
15
11
|
/**
|
|
16
12
|
* Delegates `ph init` to the appropriate version of `@powerhousedao/ph-cli`.
|
|
@@ -21,138 +17,56 @@ const init = command({
|
|
|
21
17
|
name: "init",
|
|
22
18
|
description: "Initialize a new project",
|
|
23
19
|
args: initArgs,
|
|
24
|
-
handler: (args) => {
|
|
20
|
+
handler: async (args) => {
|
|
25
21
|
if (args.debug) console.log({ args });
|
|
26
|
-
|
|
27
|
-
tag: args.tag,
|
|
28
|
-
version: args.version,
|
|
29
|
-
dev: args.dev,
|
|
30
|
-
staging: args.staging
|
|
31
|
-
}, "versioning strategy");
|
|
32
|
-
handleMutuallyExclusiveOptions({
|
|
33
|
-
npm: args.npm,
|
|
34
|
-
pnpm: args.pnpm,
|
|
35
|
-
yarn: args.yarn,
|
|
36
|
-
bun: args.bun,
|
|
37
|
-
packageManager: args.packageManager
|
|
38
|
-
}, "package manager");
|
|
39
|
-
const phCliVersion = args.version ?? parseTag(args);
|
|
40
|
-
const pm = parsePackageManager(args) ?? "npm";
|
|
41
|
-
const forwardedArgs = process.argv.slice(3);
|
|
42
|
-
const resolved = resolveCommand(pm, "execute", [
|
|
43
|
-
`@powerhousedao/ph-cli@${phCliVersion}`,
|
|
44
|
-
"init",
|
|
45
|
-
...forwardedArgs
|
|
46
|
-
]);
|
|
47
|
-
if (!resolved) throw new Error(`Could not resolve execute command for package manager "${pm}".`);
|
|
48
|
-
const { command: cmd, args: cmdArgs } = resolved;
|
|
49
|
-
const fullCmd = `${cmd} ${cmdArgs.join(" ")}`;
|
|
50
|
-
if (args.debug) console.log(">>> Delegating to ph-cli:", fullCmd);
|
|
51
|
-
execSync(fullCmd, { stdio: "inherit" });
|
|
22
|
+
await delegateInit(args);
|
|
52
23
|
process.exit(0);
|
|
53
24
|
}
|
|
54
25
|
});
|
|
55
26
|
//#endregion
|
|
56
|
-
//#region src/utils/constants.ts
|
|
57
|
-
const PH_BIN_PATH = process.argv[1];
|
|
58
|
-
const PH_GLOBAL_PACKAGE_NAME = "ph-global";
|
|
59
|
-
const packageManagers = {
|
|
60
|
-
bun: {
|
|
61
|
-
installCommand: "bun add {{dependency}}",
|
|
62
|
-
execCommand: `bun ${PH_BIN} {{arguments}}`,
|
|
63
|
-
execScript: `bun {{arguments}}`,
|
|
64
|
-
lockfile: "bun.lock",
|
|
65
|
-
globalPathRegexp: /[\\/].bun[\\/]/,
|
|
66
|
-
updateCommand: "bun update {{dependency}}",
|
|
67
|
-
buildAffected: "bun run build:affected",
|
|
68
|
-
workspaceOption: "",
|
|
69
|
-
installDepsCommand: "bun install"
|
|
70
|
-
},
|
|
71
|
-
pnpm: {
|
|
72
|
-
installCommand: "pnpm add {{dependency}}",
|
|
73
|
-
execCommand: `pnpm exec ${PH_BIN} {{arguments}}`,
|
|
74
|
-
execScript: `pnpm {{arguments}}`,
|
|
75
|
-
lockfile: "pnpm-lock.yaml",
|
|
76
|
-
globalPathRegexp: /[\\/]pnpm[\\/]/,
|
|
77
|
-
updateCommand: "pnpm update {{dependency}}",
|
|
78
|
-
buildAffected: "pnpm run build:affected",
|
|
79
|
-
workspaceOption: "--workspace-root",
|
|
80
|
-
installDepsCommand: "pnpm install"
|
|
81
|
-
},
|
|
82
|
-
yarn: {
|
|
83
|
-
installCommand: "yarn add {{dependency}}",
|
|
84
|
-
execCommand: `yarn ${PH_BIN} {{arguments}}`,
|
|
85
|
-
execScript: `yarn {{arguments}}`,
|
|
86
|
-
lockfile: "yarn.lock",
|
|
87
|
-
globalPathRegexp: /[\\/]yarn[\\/]/,
|
|
88
|
-
updateCommand: "yarn upgrade {{dependency}}",
|
|
89
|
-
buildAffected: "yarn run build:affected",
|
|
90
|
-
workspaceOption: "-W",
|
|
91
|
-
installDepsCommand: "yarn install"
|
|
92
|
-
},
|
|
93
|
-
npm: {
|
|
94
|
-
installCommand: "npm install {{dependency}}",
|
|
95
|
-
execCommand: `npx ${PH_BIN} {{arguments}}`,
|
|
96
|
-
execScript: `npm run {{arguments}}`,
|
|
97
|
-
lockfile: "package-lock.json",
|
|
98
|
-
updateCommand: "npm update {{dependency}} --save",
|
|
99
|
-
buildAffected: "npm run build:affected",
|
|
100
|
-
workspaceOption: "",
|
|
101
|
-
installDepsCommand: "npm install"
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
//#endregion
|
|
105
|
-
//#region src/utils/package-manager.ts
|
|
106
|
-
function getPackageManagerFromPath(dir) {
|
|
107
|
-
const lowerCasePath = dir.toLowerCase();
|
|
108
|
-
if (packageManagers.bun.globalPathRegexp.test(lowerCasePath)) return "bun";
|
|
109
|
-
else if (packageManagers.pnpm.globalPathRegexp.test(lowerCasePath)) return "pnpm";
|
|
110
|
-
else if (packageManagers.yarn.globalPathRegexp.test(lowerCasePath)) return "yarn";
|
|
111
|
-
return "npm";
|
|
112
|
-
}
|
|
113
|
-
//#endregion
|
|
114
|
-
//#region src/utils/create-global-project.ts
|
|
115
|
-
const createGlobalProject = async (projectName, options = {}) => {
|
|
116
|
-
if (existsSync(POWERHOUSE_GLOBAL_DIR)) {
|
|
117
|
-
const packageJsonPath = path.join(POWERHOUSE_GLOBAL_DIR, "package.json");
|
|
118
|
-
if (existsSync(packageJsonPath)) try {
|
|
119
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
120
|
-
if (packageJson.name?.startsWith(".")) {
|
|
121
|
-
console.log("📦 Fixing invalid package name in global project...");
|
|
122
|
-
packageJson.name = PH_GLOBAL_PACKAGE_NAME;
|
|
123
|
-
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
124
|
-
}
|
|
125
|
-
} catch {}
|
|
126
|
-
console.log(`📦 Using global project: ${POWERHOUSE_GLOBAL_DIR}`);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
console.log("📦 Initializing global project...");
|
|
130
|
-
process.chdir(HOME_DIR);
|
|
131
|
-
try {
|
|
132
|
-
await createProject({
|
|
133
|
-
name: PH_GLOBAL_DIR_NAME,
|
|
134
|
-
tag: parseTag(options),
|
|
135
|
-
packageManager: parsePackageManager(options) ?? getPackageManagerFromPath(PH_BIN_PATH)
|
|
136
|
-
});
|
|
137
|
-
const packageJsonPath = path.join(POWERHOUSE_GLOBAL_DIR, "package.json");
|
|
138
|
-
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
139
|
-
packageJson.name = PH_GLOBAL_PACKAGE_NAME;
|
|
140
|
-
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
141
|
-
console.log(`🚀 Global project initialized successfully: ${POWERHOUSE_GLOBAL_DIR}`);
|
|
142
|
-
} catch (error) {
|
|
143
|
-
console.error("❌ Failed to initialize the global project", error);
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
//#endregion
|
|
147
27
|
//#region src/commands/setup-globals.ts
|
|
28
|
+
const PH_GLOBAL_PACKAGE_NAME = "ph-global";
|
|
29
|
+
/**
|
|
30
|
+
* `ph setup-globals` bootstraps the `~/.ph` project. It's the same flow as
|
|
31
|
+
* `ph init` with `--name .ph` from the user's home directory, plus a
|
|
32
|
+
* post-step that renames the package.json to `ph-global` (since `.ph` is
|
|
33
|
+
* an invalid npm name).
|
|
34
|
+
*/
|
|
148
35
|
const setupGlobals = command({
|
|
149
36
|
name: "setup-globals",
|
|
150
37
|
description: "Initialize a new global project",
|
|
151
38
|
args: initArgs,
|
|
152
39
|
handler: async (args) => {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
40
|
+
if (args.debug) console.log({ args });
|
|
41
|
+
const { HOME_DIR, PH_GLOBAL_DIR_NAME, POWERHOUSE_GLOBAL_DIR } = await import("@powerhousedao/shared/clis");
|
|
42
|
+
/**
|
|
43
|
+
* Fix the package.json `name` field for the global project — `.ph` is a
|
|
44
|
+
* valid directory name but not a valid npm package name (vite + npm
|
|
45
|
+
* reject names starting with a dot). We let `ph init` create the project
|
|
46
|
+
* as `.ph` and then rename it here to `ph-global`.
|
|
47
|
+
*/
|
|
48
|
+
const fixGlobalPackageName = () => {
|
|
49
|
+
const packageJsonPath = path.join(POWERHOUSE_GLOBAL_DIR, "package.json");
|
|
50
|
+
if (!existsSync(packageJsonPath)) return;
|
|
51
|
+
try {
|
|
52
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
|
|
53
|
+
if (packageJson.name?.startsWith(".")) {
|
|
54
|
+
packageJson.name = PH_GLOBAL_PACKAGE_NAME;
|
|
55
|
+
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
56
|
+
}
|
|
57
|
+
} catch {}
|
|
58
|
+
};
|
|
59
|
+
if (existsSync(path.join(POWERHOUSE_GLOBAL_DIR, "package.json"))) {
|
|
60
|
+
fixGlobalPackageName();
|
|
61
|
+
console.log(`📦 Using global project: ${POWERHOUSE_GLOBAL_DIR}`);
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
console.log("📦 Initializing global project...");
|
|
65
|
+
process.chdir(HOME_DIR);
|
|
66
|
+
const { delegateInit } = await import("./delegate-init-Da12SK8S.mjs");
|
|
67
|
+
await delegateInit(args, ["--name", PH_GLOBAL_DIR_NAME]);
|
|
68
|
+
fixGlobalPackageName();
|
|
69
|
+
console.log(`🚀 Global project initialized successfully: ${POWERHOUSE_GLOBAL_DIR}`);
|
|
156
70
|
process.exit(0);
|
|
157
71
|
}
|
|
158
72
|
});
|
|
@@ -174,6 +88,12 @@ const update = command({
|
|
|
174
88
|
const { skipInstall, debug } = args;
|
|
175
89
|
if (debug) console.log({ args });
|
|
176
90
|
console.log(`\n▶️ Updating Powerhouse dependencies...\n`);
|
|
91
|
+
const [{ default: chalk }, { readPackage }, { writePackage }, { getTagFromVersion, logVersionUpdate, parsePackageVersion, runCmd }] = await Promise.all([
|
|
92
|
+
import("chalk"),
|
|
93
|
+
import("read-pkg"),
|
|
94
|
+
import("write-package"),
|
|
95
|
+
import("@powerhousedao/shared/clis")
|
|
96
|
+
]);
|
|
177
97
|
const packageJson = await readPackage();
|
|
178
98
|
if (packageJson.dependencies) {
|
|
179
99
|
for (const [name, version] of Object.entries(packageJson.dependencies)) if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {
|
|
@@ -234,6 +154,7 @@ const update = command({
|
|
|
234
154
|
await writePackage(packageJson);
|
|
235
155
|
console.log(chalk.green(`\n✅ Project updated successfully\n`));
|
|
236
156
|
if (skipInstall) return;
|
|
157
|
+
const { detect } = await import("package-manager-detector/detect");
|
|
237
158
|
const packageManager = await detect();
|
|
238
159
|
if (!packageManager) throw new Error(`❌ Failed to detect your package manager. Run install manually.`);
|
|
239
160
|
console.log(`▶️ Installing updated dependencies with \`${packageManager.agent}\`\n`);
|
|
@@ -271,6 +192,7 @@ const useLocal = command({
|
|
|
271
192
|
if (debug) console.log({ args });
|
|
272
193
|
const monorepoPath = monorepoPathPositional ?? monorepoPathOption;
|
|
273
194
|
if (!monorepoPath) throw new Error("❌ Please provide the path to your local powerhouse monorepo.");
|
|
195
|
+
const { runUseLocal } = await import("@powerhousedao/shared/clis");
|
|
274
196
|
await runUseLocal(monorepoPath, skipInstall);
|
|
275
197
|
process.exit(0);
|
|
276
198
|
}
|
|
@@ -318,11 +240,18 @@ const use = command({
|
|
|
318
240
|
const { tagPositional, tagOption, version, skipInstall, debug } = args;
|
|
319
241
|
if (debug) console.log({ args });
|
|
320
242
|
const tag = tagPositional ?? tagOption;
|
|
243
|
+
const { handleMutuallyExclusiveOptions, logVersionUpdate, parsePackageVersion, runCmd } = await import("@powerhousedao/shared/clis");
|
|
321
244
|
handleMutuallyExclusiveOptions({
|
|
322
245
|
tag,
|
|
323
246
|
version
|
|
324
247
|
}, "versioning strategy");
|
|
325
248
|
if (!tag && !version) throw new Error("Please specify either a release tag or a version to use.");
|
|
249
|
+
const [{ default: chalk }, { readPackage }, { writePackage }, { clean, valid }] = await Promise.all([
|
|
250
|
+
import("chalk"),
|
|
251
|
+
import("read-pkg"),
|
|
252
|
+
import("write-package"),
|
|
253
|
+
import("semver")
|
|
254
|
+
]);
|
|
326
255
|
if (version && !valid(clean(version))) throw new Error(`❌ Invalid version: ${chalk.bold(version)}`);
|
|
327
256
|
console.log(`▶️ Updating project to use ${chalk.bold(version ?? tag)}...\n`);
|
|
328
257
|
const packageJson = await readPackage();
|
|
@@ -389,6 +318,7 @@ const use = command({
|
|
|
389
318
|
await writePackage(packageJson);
|
|
390
319
|
console.log(chalk.green(`\n✅ Project updated to use ${chalk.bold(version ?? tag)}\n`));
|
|
391
320
|
if (!skipInstall) {
|
|
321
|
+
const { detect } = await import("package-manager-detector/detect");
|
|
392
322
|
const packageManager = await detect();
|
|
393
323
|
if (!packageManager) throw new Error(`❌ Failed to detect your package manager. Run install manually.`);
|
|
394
324
|
console.log(`▶️ Installing updated dependencies with \`${packageManager.agent}\`\n`);
|
|
@@ -397,9 +327,11 @@ const use = command({
|
|
|
397
327
|
process.exit(0);
|
|
398
328
|
}
|
|
399
329
|
});
|
|
330
|
+
//#endregion
|
|
331
|
+
//#region src/commands/ph.ts
|
|
400
332
|
const ph = subcommands({
|
|
401
333
|
name: "ph",
|
|
402
|
-
version:
|
|
334
|
+
version: getVersion(),
|
|
403
335
|
description: "The Powerhouse CLI (ph-cmd) is a command-line interface tool that provides essential commands for managing Powerhouse projects.\nThe tool and it's commands are fundamental for creating, building, and running Document Models as a builder in studio mode.",
|
|
404
336
|
cmds: {
|
|
405
337
|
init,
|
|
@@ -411,6 +343,12 @@ const ph = subcommands({
|
|
|
411
343
|
}
|
|
412
344
|
});
|
|
413
345
|
//#endregion
|
|
414
|
-
|
|
346
|
+
//#region src/run.ts
|
|
347
|
+
async function run(args) {
|
|
348
|
+
return await run$1(ph, args);
|
|
349
|
+
}
|
|
350
|
+
//#endregion
|
|
351
|
+
export { run };
|
|
415
352
|
|
|
416
|
-
//# sourceMappingURL=
|
|
353
|
+
//# sourceMappingURL=run-V5sp7Ntc.mjs.map
|
|
354
|
+
//# debugId=4e55daf2-12cc-5bad-84d5-68cdf04ef27e
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-V5sp7Ntc.mjs","sources":["../src/commands/init.ts","../src/commands/setup-globals.ts","../src/commands/update.ts","../src/commands/use-local.ts","../src/commands/use.ts","../src/commands/ph.ts","../src/run.ts"],"sourcesContent":["import { initArgs } from \"@powerhousedao/shared/clis/args\";\nimport { command } from \"cmd-ts\";\nimport { delegateInit } from \"../utils/delegate-init.js\";\n\n/**\n * Delegates `ph init` to the appropriate version of `@powerhousedao/ph-cli`.\n * This ensures the init logic (boilerplate, codegen) always matches the\n * ph-cli version being installed in the new project.\n */\nexport const init = command({\n name: \"init\",\n description: \"Initialize a new project\",\n args: initArgs,\n handler: async (args) => {\n if (args.debug) {\n console.log({ args });\n }\n await delegateInit(args);\n process.exit(0);\n },\n});\n","import { initArgs } from \"@powerhousedao/shared/clis/args\";\nimport { command } from \"cmd-ts\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport path from \"node:path\";\n\nconst PH_GLOBAL_PACKAGE_NAME = \"ph-global\";\n\n/**\n * `ph setup-globals` bootstraps the `~/.ph` project. It's the same flow as\n * `ph init` with `--name .ph` from the user's home directory, plus a\n * post-step that renames the package.json to `ph-global` (since `.ph` is\n * an invalid npm name).\n */\nexport const setupGlobals = command({\n name: \"setup-globals\",\n description: \"Initialize a new global project\",\n args: initArgs,\n handler: async (args) => {\n if (args.debug) {\n console.log({ args });\n }\n\n const { HOME_DIR, PH_GLOBAL_DIR_NAME, POWERHOUSE_GLOBAL_DIR } =\n await import(\"@powerhousedao/shared/clis\");\n\n /**\n * Fix the package.json `name` field for the global project — `.ph` is a\n * valid directory name but not a valid npm package name (vite + npm\n * reject names starting with a dot). We let `ph init` create the project\n * as `.ph` and then rename it here to `ph-global`.\n */\n const fixGlobalPackageName = (): void => {\n const packageJsonPath = path.join(POWERHOUSE_GLOBAL_DIR, \"package.json\");\n if (!existsSync(packageJsonPath)) return;\n try {\n const packageJson = JSON.parse(\n readFileSync(packageJsonPath, \"utf-8\"),\n ) as { name?: string };\n if (packageJson.name?.startsWith(\".\")) {\n packageJson.name = PH_GLOBAL_PACKAGE_NAME;\n writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }\n } catch {\n // Ignore parse/write failures — leaves the file untouched.\n }\n };\n\n // The directory itself can exist without the project being bootstrapped —\n // telemetry writes `~/.ph/telemetry.json` early on. Use the presence of\n // `package.json` as the real \"is initialized\" signal.\n const globalPackageJson = path.join(POWERHOUSE_GLOBAL_DIR, \"package.json\");\n if (existsSync(globalPackageJson)) {\n // Repair-in-place: an older bootstrap may have left `name: \".ph\"` in\n // package.json, which breaks vite/npm. Fix it on every invocation.\n fixGlobalPackageName();\n console.log(`📦 Using global project: ${POWERHOUSE_GLOBAL_DIR}`);\n process.exit(0);\n }\n\n console.log(\"📦 Initializing global project...\");\n process.chdir(HOME_DIR);\n const { delegateInit } = await import(\"../utils/delegate-init.js\");\n await delegateInit(args, [\"--name\", PH_GLOBAL_DIR_NAME]);\n fixGlobalPackageName();\n console.log(\n `🚀 Global project initialized successfully: ${POWERHOUSE_GLOBAL_DIR}`,\n );\n process.exit(0);\n },\n});\n","import { debugArgs } from \"@powerhousedao/shared/clis/args\";\nimport { ALL_POWERHOUSE_DEPENDENCIES } from \"@powerhousedao/shared/constants\";\nimport { boolean, command, flag, optional } from \"cmd-ts\";\n\nexport const update = command({\n name: \"update\",\n description:\n \"Update your powerhouse dependencies to their latest tagged version\",\n args: {\n skipInstall: flag({\n type: optional(boolean),\n long: \"skip-install\",\n short: \"s\",\n description: \"Skip running `install` with your package manager\",\n }),\n ...debugArgs,\n },\n handler: async (args) => {\n const { skipInstall, debug } = args;\n if (debug) {\n console.log({ args });\n }\n console.log(`\\n▶️ Updating Powerhouse dependencies...\\n`);\n const [\n { default: chalk },\n { readPackage },\n { writePackage },\n { getTagFromVersion, logVersionUpdate, parsePackageVersion, runCmd },\n ] = await Promise.all([\n import(\"chalk\"),\n import(\"read-pkg\"),\n import(\"write-package\"),\n import(\"@powerhousedao/shared/clis\"),\n ]);\n const packageJson = await readPackage();\n\n if (packageJson.dependencies) {\n for (const [name, version] of Object.entries(packageJson.dependencies)) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.dependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.devDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.devDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.devDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.optionalDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.optionalDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.optionalDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.peerDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.peerDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.peerDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n await writePackage(packageJson);\n\n console.log(chalk.green(`\\n✅ Project updated successfully\\n`));\n\n if (skipInstall) return;\n\n const { detect } = await import(\"package-manager-detector/detect\");\n const packageManager = await detect();\n\n if (!packageManager) {\n throw new Error(\n `❌ Failed to detect your package manager. Run install manually.`,\n );\n }\n console.log(\n `▶️ Installing updated dependencies with \\`${packageManager.agent}\\`\\n`,\n );\n runCmd(`${packageManager.agent} install`);\n process.exit(0);\n },\n});\n","import { debugArgs } from \"@powerhousedao/shared/clis/args\";\nimport {\n boolean,\n command,\n flag,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\n\nexport const useLocal = command({\n name: \"use-local\",\n description:\n \"Use your local `powerhouse` monorepo dependencies the current project.\",\n args: {\n monorepoPathPositional: positional({\n type: optional(string),\n displayName: \"monorepo path\",\n description:\n \"Path to your local powerhouse monorepo relative to this project\",\n }),\n monorepoPathOption: option({\n type: optional(string),\n long: \"path\",\n short: \"p\",\n description:\n \"Path to your local powerhouse monorepo relative to this project\",\n }),\n skipInstall: flag({\n type: optional(boolean),\n long: \"skip-install\",\n short: \"s\",\n description: \"Skip running `install` with `pnpm`\",\n }),\n ...debugArgs,\n },\n handler: async (args) => {\n const { monorepoPathPositional, monorepoPathOption, skipInstall, debug } =\n args;\n if (debug) {\n console.log({ args });\n }\n const monorepoPath = monorepoPathPositional ?? monorepoPathOption;\n\n if (!monorepoPath) {\n throw new Error(\n \"❌ Please provide the path to your local powerhouse monorepo.\",\n );\n }\n\n const { runUseLocal } = await import(\"@powerhousedao/shared/clis\");\n await runUseLocal(monorepoPath, skipInstall);\n process.exit(0);\n },\n});\n","import { debugArgs } from \"@powerhousedao/shared/clis/args\";\nimport { ALL_POWERHOUSE_DEPENDENCIES } from \"@powerhousedao/shared/constants\";\nimport {\n boolean,\n command,\n flag,\n oneOf,\n option,\n optional,\n positional,\n run,\n string,\n} from \"cmd-ts\";\n\nexport const use = command({\n name: \"use\",\n description: \"Specify the release version of Powerhouse dependencies to use.\",\n args: {\n tagPositional: positional({\n type: optional(oneOf([\"latest\", \"staging\", \"dev\"])),\n displayName: \"tag\",\n description: `Specify the release tag to use for your project. Can be one of: \"latest\", \"staging\", or \"dev\".`,\n }),\n tagOption: option({\n type: optional(oneOf([\"latest\", \"staging\", \"dev\"])),\n long: \"tag\",\n short: \"t\",\n description: `Specify the release tag to use for your project. Can be one of: \"latest\", \"staging\", or \"dev\".`,\n }),\n version: option({\n type: optional(string),\n long: \"version\",\n short: \"v\",\n description:\n \"Specify the exact semver release version to use for your project.\",\n }),\n skipInstall: flag({\n type: optional(boolean),\n long: \"skip-install\",\n short: \"s\",\n description: \"Skip running `install` with your package manager\",\n }),\n ...debugArgs,\n },\n handler: async (args) => {\n const { tagPositional, tagOption, version, skipInstall, debug } = args;\n if (debug) {\n console.log({ args });\n }\n const tag = tagPositional ?? tagOption;\n const {\n handleMutuallyExclusiveOptions,\n logVersionUpdate,\n parsePackageVersion,\n runCmd,\n } = await import(\"@powerhousedao/shared/clis\");\n handleMutuallyExclusiveOptions({ tag, version }, \"versioning strategy\");\n\n if (!tag && !version) {\n throw new Error(\n \"Please specify either a release tag or a version to use.\",\n );\n }\n\n const [\n { default: chalk },\n { readPackage },\n { writePackage },\n { clean, valid },\n ] = await Promise.all([\n import(\"chalk\"),\n import(\"read-pkg\"),\n import(\"write-package\"),\n import(\"semver\"),\n ]);\n\n if (version && !valid(clean(version))) {\n throw new Error(`❌ Invalid version: ${chalk.bold(version)}`);\n }\n\n console.log(\n `▶️ Updating project to use ${chalk.bold(version ?? tag)}...\\n`,\n );\n\n const packageJson = await readPackage();\n\n if (packageJson.dependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.dependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.dependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.devDependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.devDependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.devDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.optionalDependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.optionalDependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.optionalDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.peerDependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.peerDependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.peerDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n await writePackage(packageJson);\n\n console.log(\n chalk.green(\n `\\n✅ Project updated to use ${chalk.bold(version ?? tag)}\\n`,\n ),\n );\n\n if (!skipInstall) {\n const { detect } = await import(\"package-manager-detector/detect\");\n const packageManager = await detect();\n if (!packageManager) {\n throw new Error(\n `❌ Failed to detect your package manager. Run install manually.`,\n );\n }\n console.log(\n `▶️ Installing updated dependencies with \\`${packageManager.agent}\\`\\n`,\n );\n runCmd(`${packageManager.agent} install`);\n }\n\n process.exit(0);\n },\n});\n\nexport async function runUse(args: string[]) {\n await run(use, args);\n}\n","import { phCliHelpCommands } from \"@powerhousedao/shared/clis/args\";\nimport { subcommands } from \"cmd-ts\";\nimport { getVersion } from \"../get-version.js\";\nimport { init } from \"./init.js\";\nimport { setupGlobals } from \"./setup-globals.js\";\nimport { update } from \"./update.js\";\nimport { useLocal } from \"./use-local.js\";\nimport { use } from \"./use.js\";\n\n// `--version` is intercepted in cli.ts before the subcommand tree is\n// constructed, so cmd-ts only needs the bare version string here. The\n// rich version output (with project info, package manager, etc.) is\n// produced by `getPhCmdVersionInfo` along that short-circuit path.\nexport const ph = subcommands({\n name: \"ph\",\n version: getVersion(),\n description:\n \"The Powerhouse CLI (ph-cmd) is a command-line interface tool that provides essential commands for managing Powerhouse projects.\\nThe tool and it's commands are fundamental for creating, building, and running Document Models as a builder in studio mode.\",\n cmds: {\n init,\n use,\n update,\n \"setup-globals\": setupGlobals,\n \"use-local\": useLocal,\n ...phCliHelpCommands,\n },\n});\n","import { run as runCmdTs } from \"cmd-ts\";\nimport { ph } from \"./commands/ph.js\";\n\nexport async function run(args: string[]) {\n return await runCmdTs(ph, args);\n}\n"],"names":["runCmdTs"],"mappings":"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","debug_id":"4e55daf2-12cc-5bad-84d5-68cdf04ef27e"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ph-cmd",
|
|
3
|
-
"version": "6.0.2-staging.
|
|
3
|
+
"version": "6.0.2-staging.7",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"type": "module",
|
|
@@ -27,21 +27,19 @@
|
|
|
27
27
|
"cmd-ts": "0.15.0",
|
|
28
28
|
"package-manager-detector": "1.6.0",
|
|
29
29
|
"read-pkg": "10.1.0",
|
|
30
|
-
"write-package": "7.2.0",
|
|
31
30
|
"semver": "7.7.4",
|
|
32
|
-
"
|
|
33
|
-
"@powerhousedao/
|
|
34
|
-
"@powerhousedao/shared": "6.0.2-staging.5"
|
|
31
|
+
"write-package": "7.2.0",
|
|
32
|
+
"@powerhousedao/shared": "6.0.2-staging.7"
|
|
35
33
|
},
|
|
36
34
|
"devDependencies": {
|
|
37
35
|
"tsdown": "0.21.1",
|
|
38
36
|
"vitest": "4.1.1",
|
|
39
|
-
"
|
|
37
|
+
"@powerhousedao/codegen": "6.0.2-staging.7"
|
|
40
38
|
},
|
|
41
39
|
"scripts": {
|
|
42
40
|
"tsc": "tsc",
|
|
43
41
|
"lint": "eslint",
|
|
44
|
-
"generate-docs": "
|
|
42
|
+
"generate-docs": "bun run scripts/generate-commands-docs.ts",
|
|
45
43
|
"build": "tsdown",
|
|
46
44
|
"postbuild": "bun generate-docs",
|
|
47
45
|
"dev": "bun run ./src/cli.ts",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { a as setupGlobals, i as update, n as use, o as init, r as useLocal, t as ph } from "./ph-D-WxcGiX.mjs";
|
|
2
|
-
import { writeCliDocsMarkdownFile } from "@powerhousedao/codegen/file-builders";
|
|
3
|
-
//#region src/generate-commands-docs.ts
|
|
4
|
-
const commands = [
|
|
5
|
-
{
|
|
6
|
-
name: "init",
|
|
7
|
-
command: init
|
|
8
|
-
},
|
|
9
|
-
{
|
|
10
|
-
name: "use",
|
|
11
|
-
command: use
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
name: "update",
|
|
15
|
-
command: update
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: "setup-globals",
|
|
19
|
-
command: setupGlobals
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
name: "use-local",
|
|
23
|
-
command: useLocal
|
|
24
|
-
}
|
|
25
|
-
];
|
|
26
|
-
const cliDescription = ph.description ?? "";
|
|
27
|
-
async function main() {
|
|
28
|
-
await writeCliDocsMarkdownFile({
|
|
29
|
-
filePath: "COMMANDS.md",
|
|
30
|
-
docsTitle: `PH-CMD CLI Commands (6.0.2-staging.5)`,
|
|
31
|
-
docsIntroduction: "This document provides detailed information about the available commands in the PH-CMD CLI. The CLI is published as `ph-cmd` and is invoked with the `ph` command.",
|
|
32
|
-
cliDescription,
|
|
33
|
-
entries: commands
|
|
34
|
-
});
|
|
35
|
-
process.exit(0);
|
|
36
|
-
}
|
|
37
|
-
await main();
|
|
38
|
-
//#endregion
|
|
39
|
-
export {};
|
|
40
|
-
|
|
41
|
-
//# sourceMappingURL=generate-commands-docs.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-commands-docs.mjs","names":[],"sources":["../src/generate-commands-docs.ts"],"sourcesContent":["import { writeCliDocsMarkdownFile } from \"@powerhousedao/codegen/file-builders\";\nimport { init } from \"./commands/init.js\";\nimport { ph } from \"./commands/ph.js\";\nimport { setupGlobals } from \"./commands/setup-globals.js\";\nimport { update } from \"./commands/update.js\";\nimport { useLocal } from \"./commands/use-local.js\";\nimport { use } from \"./commands/use.js\";\n\nconst commands = [\n { name: \"init\", command: init },\n { name: \"use\", command: use },\n { name: \"update\", command: update },\n { name: \"setup-globals\", command: setupGlobals },\n { name: \"use-local\", command: useLocal },\n];\n\nconst cliDescription = ph.description ?? \"\";\ndeclare const CLI_VERSION: string;\n\nasync function main() {\n await writeCliDocsMarkdownFile({\n filePath: \"COMMANDS.md\",\n docsTitle: `PH-CMD CLI Commands (${CLI_VERSION})`,\n docsIntroduction:\n \"This document provides detailed information about the available commands in the PH-CMD CLI. The CLI is published as `ph-cmd` and is invoked with the `ph` command.\",\n cliDescription,\n entries: commands,\n });\n process.exit(0);\n}\n\nawait main();\n"],"mappings":";;;AAQA,MAAM,WAAW;CACf;EAAE,MAAM;EAAQ,SAAS;EAAM;CAC/B;EAAE,MAAM;EAAO,SAAS;EAAK;CAC7B;EAAE,MAAM;EAAU,SAAS;EAAQ;CACnC;EAAE,MAAM;EAAiB,SAAS;EAAc;CAChD;EAAE,MAAM;EAAa,SAAS;EAAU;CACzC;AAED,MAAM,iBAAiB,GAAG,eAAe;AAGzC,eAAe,OAAO;AACpB,OAAM,yBAAyB;EAC7B,UAAU;EACV,WAAW;EACX,kBACE;EACF;EACA,SAAS;EACV,CAAC;AACF,SAAQ,KAAK,EAAE;;AAGjB,MAAM,MAAM"}
|
package/dist/ph-D-WxcGiX.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ph-D-WxcGiX.mjs","names":[],"sources":["../src/commands/init.ts","../src/utils/constants.ts","../src/utils/package-manager.ts","../src/utils/create-global-project.ts","../src/commands/setup-globals.ts","../src/commands/update.ts","../src/commands/use-local.ts","../src/commands/use.ts","../src/commands/ph.ts"],"sourcesContent":["import {\n handleMutuallyExclusiveOptions,\n initArgs,\n parsePackageManager,\n parseTag,\n} from \"@powerhousedao/shared/clis\";\nimport { command } from \"cmd-ts\";\nimport { execSync } from \"node:child_process\";\nimport { resolveCommand } from \"package-manager-detector\";\n\n/**\n * Delegates `ph init` to the appropriate version of `@powerhousedao/ph-cli`.\n * This ensures the init logic (boilerplate, codegen) always matches the\n * ph-cli version being installed in the new project.\n */\nexport const init = command({\n name: \"init\",\n description: \"Initialize a new project\",\n args: initArgs,\n handler: (args) => {\n if (args.debug) {\n console.log({ args });\n }\n\n handleMutuallyExclusiveOptions(\n {\n tag: args.tag,\n version: args.version,\n dev: args.dev,\n staging: args.staging,\n },\n \"versioning strategy\",\n );\n\n handleMutuallyExclusiveOptions(\n {\n npm: args.npm,\n pnpm: args.pnpm,\n yarn: args.yarn,\n bun: args.bun,\n packageManager: args.packageManager,\n },\n \"package manager\",\n );\n\n const phCliVersion = args.version ?? parseTag(args);\n const pm = parsePackageManager(args) ?? \"npm\";\n\n // Forward original args as-is to ph-cli\n const forwardedArgs = process.argv.slice(3);\n const phCliPackage = `@powerhousedao/ph-cli@${phCliVersion}`;\n const resolved = resolveCommand(pm, \"execute\", [\n phCliPackage,\n \"init\",\n ...forwardedArgs,\n ]);\n\n if (!resolved) {\n throw new Error(\n `Could not resolve execute command for package manager \"${pm}\".`,\n );\n }\n\n const { command: cmd, args: cmdArgs } = resolved;\n const fullCmd = `${cmd} ${cmdArgs.join(\" \")}`;\n\n if (args.debug) {\n console.log(\">>> Delegating to ph-cli:\", fullCmd);\n }\n\n execSync(fullCmd, { stdio: \"inherit\" });\n process.exit(0);\n },\n});\n","import { PH_BIN } from \"@powerhousedao/shared/clis\";\n\nexport const PH_BIN_PATH = process.argv[1];\nexport const PH_CLI_COMMANDS = [\n \"init\",\n \"dev\",\n \"connect\",\n \"generate\",\n \"reactor\",\n \"switchboard\",\n \"help\",\n \"install\",\n \"add\",\n \"i\",\n \"remove\",\n \"uninstall\",\n \"service\",\n \"list\",\n \"inspect\",\n \"version\",\n \"login\",\n \"logout\",\n];\nexport const PH_GLOBAL_PACKAGE_NAME = \"ph-global\";\n\nexport const packageManagers = {\n bun: {\n installCommand: \"bun add {{dependency}}\",\n execCommand: `bun ${PH_BIN} {{arguments}}`,\n execScript: `bun {{arguments}}`,\n lockfile: \"bun.lock\",\n globalPathRegexp: /[\\\\/].bun[\\\\/]/,\n updateCommand: \"bun update {{dependency}}\",\n buildAffected: \"bun run build:affected\",\n workspaceOption: \"\",\n installDepsCommand: \"bun install\",\n },\n pnpm: {\n installCommand: \"pnpm add {{dependency}}\",\n execCommand: `pnpm exec ${PH_BIN} {{arguments}}`,\n execScript: `pnpm {{arguments}}`,\n lockfile: \"pnpm-lock.yaml\",\n globalPathRegexp: /[\\\\/]pnpm[\\\\/]/,\n updateCommand: \"pnpm update {{dependency}}\",\n buildAffected: \"pnpm run build:affected\",\n workspaceOption: \"--workspace-root\",\n installDepsCommand: \"pnpm install\",\n },\n yarn: {\n installCommand: \"yarn add {{dependency}}\",\n execCommand: `yarn ${PH_BIN} {{arguments}}`,\n execScript: `yarn {{arguments}}`,\n lockfile: \"yarn.lock\",\n globalPathRegexp: /[\\\\/]yarn[\\\\/]/,\n updateCommand: \"yarn upgrade {{dependency}}\",\n buildAffected: \"yarn run build:affected\",\n workspaceOption: \"-W\",\n installDepsCommand: \"yarn install\",\n },\n npm: {\n installCommand: \"npm install {{dependency}}\",\n execCommand: `npx ${PH_BIN} {{arguments}}`,\n execScript: `npm run {{arguments}}`,\n lockfile: \"package-lock.json\",\n updateCommand: \"npm update {{dependency}} --save\",\n buildAffected: \"npm run build:affected\",\n workspaceOption: \"\",\n installDepsCommand: \"npm install\",\n },\n} as const;\n","import {\n POWERHOUSE_CONFIG_FILE,\n POWERHOUSE_GLOBAL_DIR,\n} from \"@powerhousedao/shared/clis\";\nimport { execSync } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport path, { dirname } from \"node:path\";\nimport { packageManagers } from \"./constants.js\";\nimport { createGlobalProject } from \"./create-global-project.js\";\nimport type { PackageManager, PathValidation, ProjectInfo } from \"./types.js\";\n\nexport function defaultPathValidation() {\n return true;\n}\n\nexport function isPowerhouseProject(dir: string) {\n const powerhouseConfigPath = path.join(dir, POWERHOUSE_CONFIG_FILE);\n\n return existsSync(powerhouseConfigPath);\n}\n\nexport function findNodeProjectRoot(\n dir: string,\n pathValidation: PathValidation = defaultPathValidation,\n) {\n const packageJsonPath = path.join(dir, \"package.json\");\n\n if (existsSync(packageJsonPath) && pathValidation(dir)) {\n return dir;\n }\n\n const parentDir = dirname(dir);\n\n if (parentDir === dir) {\n return null;\n }\n\n return findNodeProjectRoot(parentDir, pathValidation);\n}\n\nexport function getPackageManagerFromPath(dir: string): PackageManager {\n const lowerCasePath = dir.toLowerCase();\n\n if (packageManagers.bun.globalPathRegexp.test(lowerCasePath)) {\n return \"bun\";\n } else if (packageManagers.pnpm.globalPathRegexp.test(lowerCasePath)) {\n return \"pnpm\";\n } else if (packageManagers.yarn.globalPathRegexp.test(lowerCasePath)) {\n return \"yarn\";\n }\n\n return \"npm\";\n}\n\nexport function getPackageManagerFromLockfile(dir: string): PackageManager {\n if (existsSync(path.join(dir, packageManagers.pnpm.lockfile))) {\n return \"pnpm\";\n } else if (existsSync(path.join(dir, packageManagers.yarn.lockfile))) {\n return \"yarn\";\n } else if (existsSync(path.join(dir, packageManagers.bun.lockfile))) {\n return \"bun\";\n }\n\n return \"npm\";\n}\n\nexport async function getProjectInfo(\n debug?: boolean,\n generateGlobalProject = true,\n): Promise<ProjectInfo> {\n const currentPath = process.cwd();\n\n if (debug) {\n console.log(\">>> currentPath:\", currentPath);\n }\n\n const projectPath = findNodeProjectRoot(currentPath, isPowerhouseProject);\n\n if (!projectPath) {\n let available = existsSync(POWERHOUSE_GLOBAL_DIR);\n\n if (generateGlobalProject) {\n await createGlobalProject();\n available = true;\n }\n\n return {\n available,\n isGlobal: true,\n path: POWERHOUSE_GLOBAL_DIR,\n };\n }\n\n return {\n isGlobal: false,\n available: true,\n path: projectPath,\n };\n}\n\nexport function forwardPHCommand(\n packageManager: PackageManager,\n projectPath: string,\n args: string,\n debug?: boolean,\n captureOutput = false,\n) {\n const manager = packageManagers[packageManager];\n const command = manager.execCommand;\n const execCommand = command.replace(\"{{arguments}}\", args);\n\n const commandOptions = { cwd: projectPath };\n\n if (debug) {\n console.log(\">>> execCommand:\", execCommand);\n console.log(\">>> commandOptions:\", commandOptions);\n console.log(\">>> projectPath:\", projectPath);\n console.log(\">>> packageManager:\", packageManager);\n }\n\n if (captureOutput) {\n // Capture output and return it\n try {\n return execSync(execCommand, {\n stdio: \"pipe\",\n encoding: \"utf8\",\n ...commandOptions,\n });\n } catch (error) {\n throw new Error(\n `Failed to execute command: ${execCommand}\\nError: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n } else {\n // Original behavior - pipe directly to stdout/stderr\n execSync(execCommand, {\n stdio: \"inherit\",\n ...commandOptions,\n });\n return \"\";\n }\n}\n\n/**\n * Recursively searches for a specific file by traversing up the directory tree.\n * Starting from the given path, it checks each parent directory until it finds\n * the target file or reaches the root directory.\n *\n * @param startPath - The absolute path of the directory to start searching from\n * @param targetFile - The name of the file to search for (e.g., 'package.json', 'pnpm-workspace.yaml')\n * @returns The absolute path of the directory containing the target file, or null if not found\n *\n * @example\n * // Find the workspace root directory\n * const workspaceRoot = findContainerDirectory('/path/to/project/src', 'pnpm-workspace.yaml');\n *\n * // Find the nearest package.json\n * const packageDir = findContainerDirectory('/path/to/project/src/components', 'package.json');\n */\nexport const findContainerDirectory = (\n startPath: string,\n targetFile: string,\n): string | null => {\n const filePath = path.join(startPath, targetFile);\n\n if (existsSync(filePath)) {\n return startPath;\n }\n\n const parentDir = path.dirname(startPath);\n\n //reached the root directory and haven't found the file\n if (parentDir === startPath) {\n return null;\n }\n\n return findContainerDirectory(parentDir, targetFile);\n};\n","import { createProject } from \"@powerhousedao/codegen\";\nimport {\n HOME_DIR,\n PH_GLOBAL_DIR_NAME,\n POWERHOUSE_GLOBAL_DIR,\n parsePackageManager,\n parseTag,\n} from \"@powerhousedao/shared/clis\";\nimport { existsSync, readFileSync, writeFileSync } from \"fs\";\nimport path from \"path\";\nimport { PH_BIN_PATH, PH_GLOBAL_PACKAGE_NAME } from \"./constants.js\";\nimport { getPackageManagerFromPath } from \"./package-manager.js\";\nimport type { GlobalProjectOptions } from \"./types.js\";\n\nexport const createGlobalProject = async (\n projectName?: string,\n options: GlobalProjectOptions = {},\n) => {\n // check if the global project already exists\n const globalProjectExists = existsSync(POWERHOUSE_GLOBAL_DIR);\n\n if (globalProjectExists) {\n // Fix existing installations with invalid \".ph\" package name\n const packageJsonPath = path.join(POWERHOUSE_GLOBAL_DIR, \"package.json\");\n if (existsSync(packageJsonPath)) {\n try {\n const packageJson = JSON.parse(\n readFileSync(packageJsonPath, \"utf-8\"),\n ) as { name?: string };\n if (packageJson.name?.startsWith(\".\")) {\n console.log(\"📦 Fixing invalid package name in global project...\");\n packageJson.name = PH_GLOBAL_PACKAGE_NAME;\n writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n }\n } catch {\n // Ignore errors reading/writing package.json\n }\n }\n console.log(`📦 Using global project: ${POWERHOUSE_GLOBAL_DIR}`);\n return;\n }\n\n console.log(\"📦 Initializing global project...\");\n process.chdir(HOME_DIR);\n\n try {\n await createProject({\n name: PH_GLOBAL_DIR_NAME,\n tag: parseTag(options),\n packageManager:\n parsePackageManager(options) ?? getPackageManagerFromPath(PH_BIN_PATH),\n });\n\n // Fix the package.json name - \".ph\" is invalid for npm/vite\n // The directory name can be \".ph\" but the package name must be valid\n const packageJsonPath = path.join(POWERHOUSE_GLOBAL_DIR, \"package.json\");\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\")) as {\n name?: string;\n };\n packageJson.name = PH_GLOBAL_PACKAGE_NAME;\n writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n console.log(\n `🚀 Global project initialized successfully: ${POWERHOUSE_GLOBAL_DIR}`,\n );\n } catch (error) {\n console.error(\"❌ Failed to initialize the global project\", error);\n }\n};\n","import { initArgs } from \"@powerhousedao/shared/clis\";\nimport { command } from \"cmd-ts\";\nimport { createGlobalProject } from \"../utils/create-global-project.js\";\n\nexport const setupGlobals = command({\n name: \"setup-globals\",\n description: \"Initialize a new global project\",\n args: initArgs,\n handler: async (args) => {\n const { namePositional, nameOption, debug, ...options } = args;\n if (debug) {\n console.log({ args });\n }\n const name = namePositional ?? nameOption;\n await createGlobalProject(name, options);\n process.exit(0);\n },\n});\n","import {\n debugArgs,\n getTagFromVersion,\n logVersionUpdate,\n parsePackageVersion,\n runCmd,\n} from \"@powerhousedao/shared/clis\";\nimport { ALL_POWERHOUSE_DEPENDENCIES } from \"@powerhousedao/shared/constants\";\nimport chalk from \"chalk\";\nimport { boolean, command, flag, optional } from \"cmd-ts\";\nimport { detect } from \"package-manager-detector/detect\";\nimport { readPackage } from \"read-pkg\";\nimport { writePackage } from \"write-package\";\n\nexport const update = command({\n name: \"update\",\n description:\n \"Update your powerhouse dependencies to their latest tagged version\",\n args: {\n skipInstall: flag({\n type: optional(boolean),\n long: \"skip-install\",\n short: \"s\",\n description: \"Skip running `install` with your package manager\",\n }),\n ...debugArgs,\n },\n handler: async (args) => {\n const { skipInstall, debug } = args;\n if (debug) {\n console.log({ args });\n }\n console.log(`\\n▶️ Updating Powerhouse dependencies...\\n`);\n const packageJson = await readPackage();\n\n if (packageJson.dependencies) {\n for (const [name, version] of Object.entries(packageJson.dependencies)) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.dependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.devDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.devDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.devDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.optionalDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.optionalDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.optionalDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.peerDependencies) {\n for (const [name, version] of Object.entries(\n packageJson.peerDependencies,\n )) {\n if (version && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const tag = getTagFromVersion(version);\n const newVersion = await parsePackageVersion({ name, tag });\n packageJson.peerDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version,\n newVersion,\n });\n }\n }\n }\n\n await writePackage(packageJson);\n\n console.log(chalk.green(`\\n✅ Project updated successfully\\n`));\n\n if (skipInstall) return;\n\n const packageManager = await detect();\n\n if (!packageManager) {\n throw new Error(\n `❌ Failed to detect your package manager. Run install manually.`,\n );\n }\n console.log(\n `▶️ Installing updated dependencies with \\`${packageManager.agent}\\`\\n`,\n );\n runCmd(`${packageManager.agent} install`);\n process.exit(0);\n },\n});\n","import { debugArgs, runUseLocal } from \"@powerhousedao/shared/clis\";\nimport {\n boolean,\n command,\n flag,\n option,\n optional,\n positional,\n string,\n} from \"cmd-ts\";\n\nexport const useLocal = command({\n name: \"use-local\",\n description:\n \"Use your local `powerhouse` monorepo dependencies the current project.\",\n args: {\n monorepoPathPositional: positional({\n type: optional(string),\n displayName: \"monorepo path\",\n description:\n \"Path to your local powerhouse monorepo relative to this project\",\n }),\n monorepoPathOption: option({\n type: optional(string),\n long: \"path\",\n short: \"p\",\n description:\n \"Path to your local powerhouse monorepo relative to this project\",\n }),\n skipInstall: flag({\n type: optional(boolean),\n long: \"skip-install\",\n short: \"s\",\n description: \"Skip running `install` with `pnpm`\",\n }),\n ...debugArgs,\n },\n handler: async (args) => {\n const { monorepoPathPositional, monorepoPathOption, skipInstall, debug } =\n args;\n if (debug) {\n console.log({ args });\n }\n const monorepoPath = monorepoPathPositional ?? monorepoPathOption;\n\n if (!monorepoPath) {\n throw new Error(\n \"❌ Please provide the path to your local powerhouse monorepo.\",\n );\n }\n\n await runUseLocal(monorepoPath, skipInstall);\n process.exit(0);\n },\n});\n","import {\n debugArgs,\n handleMutuallyExclusiveOptions,\n logVersionUpdate,\n parsePackageVersion,\n runCmd,\n} from \"@powerhousedao/shared/clis\";\nimport { ALL_POWERHOUSE_DEPENDENCIES } from \"@powerhousedao/shared/constants\";\nimport chalk from \"chalk\";\nimport {\n boolean,\n command,\n flag,\n oneOf,\n option,\n optional,\n positional,\n run,\n string,\n} from \"cmd-ts\";\nimport { detect } from \"package-manager-detector/detect\";\nimport { readPackage } from \"read-pkg\";\nimport { clean, valid } from \"semver\";\nimport { writePackage } from \"write-package\";\n\nexport const use = command({\n name: \"use\",\n description: \"Specify the release version of Powerhouse dependencies to use.\",\n args: {\n tagPositional: positional({\n type: optional(oneOf([\"latest\", \"staging\", \"dev\"])),\n displayName: \"tag\",\n description: `Specify the release tag to use for your project. Can be one of: \"latest\", \"staging\", or \"dev\".`,\n }),\n tagOption: option({\n type: optional(oneOf([\"latest\", \"staging\", \"dev\"])),\n long: \"tag\",\n short: \"t\",\n description: `Specify the release tag to use for your project. Can be one of: \"latest\", \"staging\", or \"dev\".`,\n }),\n version: option({\n type: optional(string),\n long: \"version\",\n short: \"v\",\n description:\n \"Specify the exact semver release version to use for your project.\",\n }),\n skipInstall: flag({\n type: optional(boolean),\n long: \"skip-install\",\n short: \"s\",\n description: \"Skip running `install` with your package manager\",\n }),\n ...debugArgs,\n },\n handler: async (args) => {\n const { tagPositional, tagOption, version, skipInstall, debug } = args;\n if (debug) {\n console.log({ args });\n }\n const tag = tagPositional ?? tagOption;\n handleMutuallyExclusiveOptions({ tag, version }, \"versioning strategy\");\n\n if (!tag && !version) {\n throw new Error(\n \"Please specify either a release tag or a version to use.\",\n );\n }\n\n if (version && !valid(clean(version))) {\n throw new Error(`❌ Invalid version: ${chalk.bold(version)}`);\n }\n\n console.log(\n `▶️ Updating project to use ${chalk.bold(version ?? tag)}...\\n`,\n );\n\n const packageJson = await readPackage();\n\n if (packageJson.dependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.dependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.dependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.devDependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.devDependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.devDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.optionalDependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.optionalDependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.optionalDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n if (packageJson.peerDependencies) {\n for (const [name, existingVersion] of Object.entries(\n packageJson.peerDependencies,\n )) {\n if (existingVersion && ALL_POWERHOUSE_DEPENDENCIES.includes(name)) {\n const newVersion = await parsePackageVersion({ name, tag, version });\n packageJson.peerDependencies[name] = newVersion;\n logVersionUpdate({\n name,\n version: existingVersion,\n newVersion,\n });\n }\n }\n }\n\n await writePackage(packageJson);\n\n console.log(\n chalk.green(\n `\\n✅ Project updated to use ${chalk.bold(version ?? tag)}\\n`,\n ),\n );\n\n if (!skipInstall) {\n const packageManager = await detect();\n if (!packageManager) {\n throw new Error(\n `❌ Failed to detect your package manager. Run install manually.`,\n );\n }\n console.log(\n `▶️ Installing updated dependencies with \\`${packageManager.agent}\\`\\n`,\n );\n runCmd(`${packageManager.agent} install`);\n }\n\n process.exit(0);\n },\n});\n\nexport async function runUse(args: string[]) {\n await run(use, args);\n}\n","import {\n getPhCmdVersionInfo,\n phCliHelpCommands,\n} from \"@powerhousedao/shared/clis\";\nimport { subcommands } from \"cmd-ts\";\nimport { init } from \"./init.js\";\nimport { setupGlobals } from \"./setup-globals.js\";\nimport { update } from \"./update.js\";\nimport { useLocal } from \"./use-local.js\";\nimport { use } from \"./use.js\";\n\ndeclare const CLI_VERSION: string;\nconst phCmdVersionInfo = await getPhCmdVersionInfo(CLI_VERSION);\nexport const ph = subcommands({\n name: \"ph\",\n version: phCmdVersionInfo,\n description:\n \"The Powerhouse CLI (ph-cmd) is a command-line interface tool that provides essential commands for managing Powerhouse projects.\\nThe tool and it's commands are fundamental for creating, building, and running Document Models as a builder in studio mode.\",\n cmds: {\n init,\n use,\n update,\n \"setup-globals\": setupGlobals,\n \"use-local\": useLocal,\n ...phCliHelpCommands,\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ph-cli-1NIlwpsP.mjs","names":[],"sources":["../src/ph-cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { getPowerhouseProjectInfo } from \"@powerhousedao/shared/clis\";\nimport { execSync } from \"node:child_process\";\nimport { resolveCommand } from \"package-manager-detector\";\n\nexport async function executePhCliCommand(phCliCommand: string) {\n const forwardedArgs = process.argv.slice(3);\n const { projectPath, packageManager } = await getPowerhouseProjectInfo();\n const resolveExecuteLocalCommandResult = resolveCommand(\n packageManager,\n \"execute-local\",\n [\"ph-cli\", phCliCommand, ...forwardedArgs],\n );\n if (!resolveExecuteLocalCommandResult) {\n throw new Error(\n `Command ${phCliCommand} is not executable by package manager ${packageManager}. Either install \"@powerhousedao/ph-cli\" in your local package, or run \\`ph setup-globals\\` to globally install the \"@powerhousedao/ph-cli\" package.`,\n );\n }\n const { command, args } = resolveExecuteLocalCommandResult;\n const cmd = `${command} ${args.join(\" \")}`;\n execSync(cmd, { stdio: \"inherit\", cwd: projectPath });\n}\n"],"mappings":";;;;AAKA,eAAsB,oBAAoB,cAAsB;CAC9D,MAAM,gBAAgB,QAAQ,KAAK,MAAM,EAAE;CAC3C,MAAM,EAAE,aAAa,mBAAmB,MAAM,0BAA0B;CACxE,MAAM,mCAAmC,eACvC,gBACA,iBACA;EAAC;EAAU;EAAc,GAAG;EAAc,CAC3C;AACD,KAAI,CAAC,iCACH,OAAM,IAAI,MACR,WAAW,aAAa,wCAAwC,eAAe,sJAChF;CAEH,MAAM,EAAE,SAAS,SAAS;AAE1B,UADY,GAAG,QAAQ,GAAG,KAAK,KAAK,IAAI,IAC1B;EAAE,OAAO;EAAW,KAAK;EAAa,CAAC"}
|
package/dist/run-DJc9Lmb9.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run-DJc9Lmb9.mjs","names":["runCmdTs"],"sources":["../src/run.ts"],"sourcesContent":["import { run as runCmdTs } from \"cmd-ts\";\nimport { ph } from \"./commands/ph.js\";\n\nexport async function run(args: string[]) {\n return await runCmdTs(ph, args);\n}\n"],"mappings":";;;AAGA,eAAsB,IAAI,MAAgB;AACxC,QAAO,MAAMA,MAAS,IAAI,KAAK"}
|