ph-cmd 0.21.0 → 0.22.0
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/commands/forward.js +35 -1
- package/dist/commands/forward.js.map +1 -1
- package/dist/utils.d.ts +5 -1
- package/dist/utils.js +7 -2
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/forward.js
CHANGED
|
@@ -9,14 +9,48 @@ const forwardCommand = (args, options) => {
|
|
|
9
9
|
console.log("\n>>> projectInfo:", projectInfo);
|
|
10
10
|
}
|
|
11
11
|
const packageManager = getPackageManagerFromLockfile(projectInfo.path);
|
|
12
|
+
if (options.debug) {
|
|
13
|
+
console.log("\n>>> forwardScriptCommand arguments:");
|
|
14
|
+
console.log(">>> packageManager:", packageManager);
|
|
15
|
+
console.log(">>> projectPath:", projectInfo.path);
|
|
16
|
+
console.log(">>> args:", args);
|
|
17
|
+
console.log(">>> isPackageScript:", true);
|
|
18
|
+
}
|
|
19
|
+
let packageScriptExecuted = false;
|
|
20
|
+
try {
|
|
21
|
+
forwardPHCommand(
|
|
22
|
+
packageManager,
|
|
23
|
+
projectInfo.path,
|
|
24
|
+
args,
|
|
25
|
+
true,
|
|
26
|
+
options.debug
|
|
27
|
+
);
|
|
28
|
+
packageScriptExecuted = true;
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (options.debug) {
|
|
31
|
+
console.log(
|
|
32
|
+
">>> failed to forward command as package script, trying as ph command...",
|
|
33
|
+
error
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
12
37
|
if (options.debug) {
|
|
13
38
|
console.log("\n>>> forwardCommand arguments:");
|
|
14
39
|
console.log(">>> packageManager:", packageManager);
|
|
15
40
|
console.log(">>> projectPath:", projectInfo.path);
|
|
16
41
|
console.log(">>> args:", args);
|
|
42
|
+
console.log(">>> isPackageScript:", false);
|
|
17
43
|
}
|
|
18
44
|
try {
|
|
19
|
-
|
|
45
|
+
if (!packageScriptExecuted) {
|
|
46
|
+
forwardPHCommand(
|
|
47
|
+
packageManager,
|
|
48
|
+
projectInfo.path,
|
|
49
|
+
args,
|
|
50
|
+
false,
|
|
51
|
+
options.debug
|
|
52
|
+
);
|
|
53
|
+
}
|
|
20
54
|
} catch (error) {
|
|
21
55
|
console.error("\u274C Failed to forward command");
|
|
22
56
|
throw error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/forward.ts"],"names":[],"mappings":";;AAUa,MAAA,cAAA,GAAiB,CAC5B,IAAA,EACA,OACG,KAAA;AACH,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAA,OAAA,CAAQ,GAAI,CAAA,wBAAA,EAA0B,EAAE,OAAA,EAAS,CAAA;AAAA;AAGnD,EAAM,MAAA,WAAA,GAAc,cAAe,CAAA,OAAA,CAAQ,KAAK,CAAA;AAEhD,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAQ,OAAA,CAAA,GAAA,CAAI,sBAAsB,WAAW,CAAA;AAAA;AAG/C,EAAM,MAAA,cAAA,GAAiB,6BAA8B,CAAA,WAAA,CAAY,IAAI,CAAA;AAErE,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAA,OAAA,CAAQ,IAAI,
|
|
1
|
+
{"version":3,"sources":["../../src/commands/forward.ts"],"names":[],"mappings":";;AAUa,MAAA,cAAA,GAAiB,CAC5B,IAAA,EACA,OACG,KAAA;AACH,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAA,OAAA,CAAQ,GAAI,CAAA,wBAAA,EAA0B,EAAE,OAAA,EAAS,CAAA;AAAA;AAGnD,EAAM,MAAA,WAAA,GAAc,cAAe,CAAA,OAAA,CAAQ,KAAK,CAAA;AAEhD,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAQ,OAAA,CAAA,GAAA,CAAI,sBAAsB,WAAW,CAAA;AAAA;AAG/C,EAAM,MAAA,cAAA,GAAiB,6BAA8B,CAAA,WAAA,CAAY,IAAI,CAAA;AAErE,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAA,OAAA,CAAQ,IAAI,uCAAuC,CAAA;AACnD,IAAQ,OAAA,CAAA,GAAA,CAAI,uBAAuB,cAAc,CAAA;AACjD,IAAQ,OAAA,CAAA,GAAA,CAAI,kBAAoB,EAAA,WAAA,CAAY,IAAI,CAAA;AAChD,IAAQ,OAAA,CAAA,GAAA,CAAI,aAAa,IAAI,CAAA;AAC7B,IAAQ,OAAA,CAAA,GAAA,CAAI,wBAAwB,IAAI,CAAA;AAAA;AAG1C,EAAA,IAAI,qBAAwB,GAAA,KAAA;AAE5B,EAAI,IAAA;AACF,IAAA,gBAAA;AAAA,MACE,cAAA;AAAA,MACA,WAAY,CAAA,IAAA;AAAA,MACZ,IAAA;AAAA,MACA,IAAA;AAAA,MACA,OAAQ,CAAA;AAAA,KACV;AAEA,IAAwB,qBAAA,GAAA,IAAA;AAAA,WACjB,KAAO,EAAA;AACd,IAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,MAAQ,OAAA,CAAA,GAAA;AAAA,QACN,0EAAA;AAAA,QACA;AAAA,OACF;AAAA;AACF;AAGF,EAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,IAAA,OAAA,CAAQ,IAAI,iCAAiC,CAAA;AAC7C,IAAQ,OAAA,CAAA,GAAA,CAAI,uBAAuB,cAAc,CAAA;AACjD,IAAQ,OAAA,CAAA,GAAA,CAAI,kBAAoB,EAAA,WAAA,CAAY,IAAI,CAAA;AAChD,IAAQ,OAAA,CAAA,GAAA,CAAI,aAAa,IAAI,CAAA;AAC7B,IAAQ,OAAA,CAAA,GAAA,CAAI,wBAAwB,KAAK,CAAA;AAAA;AAG3C,EAAI,IAAA;AACF,IAAA,IAAI,CAAC,qBAAuB,EAAA;AAC1B,MAAA,gBAAA;AAAA,QACE,cAAA;AAAA,QACA,WAAY,CAAA,IAAA;AAAA,QACZ,IAAA;AAAA,QACA,KAAA;AAAA,QACA,OAAQ,CAAA;AAAA,OACV;AAAA;AACF,WACO,KAAO,EAAA;AACd,IAAA,OAAA,CAAQ,MAAM,kCAA6B,CAAA;AAC3C,IAAM,MAAA,KAAA;AAAA;AAEV","file":"forward.js","sourcesContent":["import {\n getProjectInfo,\n getPackageManagerFromLockfile,\n forwardPHCommand,\n} from \"../utils.js\";\n\ntype ForwardPHCommandOptions = {\n debug?: boolean;\n};\n\nexport const forwardCommand = (\n args: string,\n options: ForwardPHCommandOptions,\n) => {\n if (options.debug) {\n console.log(\">>> command arguments:\", { options });\n }\n\n const projectInfo = getProjectInfo(options.debug);\n\n if (options.debug) {\n console.log(\"\\n>>> projectInfo:\", projectInfo);\n }\n\n const packageManager = getPackageManagerFromLockfile(projectInfo.path);\n\n if (options.debug) {\n console.log(\"\\n>>> forwardScriptCommand arguments:\");\n console.log(\">>> packageManager:\", packageManager);\n console.log(\">>> projectPath:\", projectInfo.path);\n console.log(\">>> args:\", args);\n console.log(\">>> isPackageScript:\", true);\n }\n\n let packageScriptExecuted = false;\n\n try {\n forwardPHCommand(\n packageManager,\n projectInfo.path,\n args,\n true,\n options.debug,\n );\n\n packageScriptExecuted = true;\n } catch (error) {\n if (options.debug) {\n console.log(\n \">>> failed to forward command as package script, trying as ph command...\",\n error,\n );\n }\n }\n\n if (options.debug) {\n console.log(\"\\n>>> forwardCommand arguments:\");\n console.log(\">>> packageManager:\", packageManager);\n console.log(\">>> projectPath:\", projectInfo.path);\n console.log(\">>> args:\", args);\n console.log(\">>> isPackageScript:\", false);\n }\n\n try {\n if (!packageScriptExecuted) {\n forwardPHCommand(\n packageManager,\n projectInfo.path,\n args,\n false,\n options.debug,\n );\n }\n } catch (error) {\n console.error(\"❌ Failed to forward command\");\n throw error;\n }\n};\n"]}
|
package/dist/utils.d.ts
CHANGED
|
@@ -6,18 +6,22 @@ declare const POWERHOUSE_GLOBAL_DIR: string;
|
|
|
6
6
|
declare const packageManagers: {
|
|
7
7
|
bun: {
|
|
8
8
|
execCommand: string;
|
|
9
|
+
execScript: string;
|
|
9
10
|
lockfile: string;
|
|
10
11
|
};
|
|
11
12
|
pnpm: {
|
|
12
13
|
execCommand: string;
|
|
14
|
+
execScript: string;
|
|
13
15
|
lockfile: string;
|
|
14
16
|
};
|
|
15
17
|
yarn: {
|
|
16
18
|
execCommand: string;
|
|
19
|
+
execScript: string;
|
|
17
20
|
lockfile: string;
|
|
18
21
|
};
|
|
19
22
|
npm: {
|
|
20
23
|
execCommand: string;
|
|
24
|
+
execScript: string;
|
|
21
25
|
lockfile: string;
|
|
22
26
|
};
|
|
23
27
|
};
|
|
@@ -32,6 +36,6 @@ declare function isPowerhouseProject(dir: string): boolean;
|
|
|
32
36
|
declare function findNodeProjectRoot(dir: string, pathValidation?: PathValidation): string | null;
|
|
33
37
|
declare function getPackageManagerFromLockfile(dir: string): PackageManager;
|
|
34
38
|
declare function getProjectInfo(debug?: boolean): ProjectInfo;
|
|
35
|
-
declare function forwardPHCommand(packageManager: PackageManager, projectPath: string, args: string, debug?: boolean): void;
|
|
39
|
+
declare function forwardPHCommand(packageManager: PackageManager, projectPath: string, args: string, isPackageScript: boolean, debug?: boolean): void;
|
|
36
40
|
|
|
37
41
|
export { HOME_DIR, PH_BIN, PH_GLOBAL_PROJECT_NAME, POWERHOUSE_CONFIG_FILE, POWERHOUSE_GLOBAL_DIR, type PackageManager, type ProjectInfo, defaultPathValidation, findNodeProjectRoot, forwardPHCommand, getPackageManagerFromLockfile, getProjectInfo, isPowerhouseProject, packageManagers };
|
package/dist/utils.js
CHANGED
|
@@ -14,18 +14,22 @@ const POWERHOUSE_GLOBAL_DIR = path.join(
|
|
|
14
14
|
const packageManagers = {
|
|
15
15
|
bun: {
|
|
16
16
|
execCommand: `bun ${PH_BIN} {{arguments}}`,
|
|
17
|
+
execScript: `bun {{arguments}}`,
|
|
17
18
|
lockfile: "bun.lock"
|
|
18
19
|
},
|
|
19
20
|
pnpm: {
|
|
20
21
|
execCommand: `pnpm exec ${PH_BIN} {{arguments}}`,
|
|
22
|
+
execScript: `pnpm {{arguments}}`,
|
|
21
23
|
lockfile: "pnpm-lock.yaml"
|
|
22
24
|
},
|
|
23
25
|
yarn: {
|
|
24
26
|
execCommand: `yarn ${PH_BIN} {{arguments}}`,
|
|
27
|
+
execScript: `yarn {{arguments}}`,
|
|
25
28
|
lockfile: "yarn.lock"
|
|
26
29
|
},
|
|
27
30
|
npm: {
|
|
28
31
|
execCommand: `npx ${PH_BIN} {{arguments}}`,
|
|
32
|
+
execScript: `npm run {{arguments}}`,
|
|
29
33
|
lockfile: "package-lock.json"
|
|
30
34
|
}
|
|
31
35
|
};
|
|
@@ -74,9 +78,10 @@ function getProjectInfo(debug) {
|
|
|
74
78
|
path: projectPath
|
|
75
79
|
};
|
|
76
80
|
}
|
|
77
|
-
function forwardPHCommand(packageManager, projectPath, args, debug) {
|
|
81
|
+
function forwardPHCommand(packageManager, projectPath, args, isPackageScript, debug) {
|
|
78
82
|
const manager = packageManagers[packageManager];
|
|
79
|
-
const
|
|
83
|
+
const command = isPackageScript ? manager.execScript : manager.execCommand;
|
|
84
|
+
const execCommand = command.replace("{{arguments}}", args);
|
|
80
85
|
const commandOptions = { cwd: projectPath };
|
|
81
86
|
if (debug) {
|
|
82
87
|
console.log(">>> execCommand:", execCommand);
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts"],"names":[],"mappings":";;;;;AAKO,MAAM,MAAS,GAAA;AACf,MAAM,sBAAyB,GAAA;AAC/B,MAAM,WAAW,OAAQ;AACzB,MAAM,sBAAyB,GAAA;AAC/B,MAAM,wBAAwB,IAAK,CAAA,IAAA;AAAA,EACxC,QAAA;AAAA,EACA;AACF;AAEO,MAAM,eAAkB,GAAA;AAAA,EAC7B,GAAK,EAAA;AAAA,IACH,WAAA,EAAa,OAAO,MAAM,CAAA,cAAA,CAAA;AAAA,IAC1B,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAA,EAAa,aAAa,MAAM,CAAA,cAAA,CAAA;AAAA,IAChC,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,IAAM,EAAA;AAAA,IACJ,WAAA,EAAa,QAAQ,MAAM,CAAA,cAAA,CAAA;AAAA,IAC3B,QAAU,EAAA;AAAA,GACZ;AAAA,EACA,GAAK,EAAA;AAAA,IACH,WAAA,EAAa,OAAO,MAAM,CAAA,cAAA,CAAA;AAAA,IAC1B,QAAU,EAAA;AAAA;AAEd;AAWO,SAAS,qBAAwB,GAAA;AACtC,EAAO,OAAA,IAAA;AACT;AAEO,SAAS,oBAAoB,GAAa,EAAA;AAC/C,EAAA,MAAM,oBAAuB,GAAA,IAAA,CAAK,IAAK,CAAA,GAAA,EAAK,sBAAsB,CAAA;AAElE,EAAO,OAAA,EAAA,CAAG,WAAW,oBAAoB,CAAA;AAC3C;AAEO,SAAS,mBAAA,CACd,GACA,EAAA,cAAA,GAAiC,qBACjC,EAAA;AACA,EAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,IAAK,CAAA,GAAA,EAAK,cAAc,CAAA;AAErD,EAAA,IAAI,GAAG,UAAW,CAAA,eAAe,CAAK,IAAA,cAAA,CAAe,GAAG,CAAG,EAAA;AACzD,IAAO,OAAA,GAAA;AAAA;AAGT,EAAM,MAAA,SAAA,GAAY,QAAQ,GAAG,CAAA;AAE7B,EAAA,IAAI,cAAc,GAAK,EAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AAGT,EAAO,OAAA,mBAAA,CAAoB,WAAW,cAAc,CAAA;AACtD;AAEO,SAAS,8BAA8B,GAA6B,EAAA;AACzE,EAAI,IAAA,EAAA,CAAG,WAAW,IAAK,CAAA,IAAA,CAAK,KAAK,eAAgB,CAAA,IAAA,CAAK,QAAQ,CAAC,CAAG,EAAA;AAChE,IAAO,OAAA,MAAA;AAAA,GACT,MAAA,IAAW,EAAG,CAAA,UAAA,CAAW,IAAK,CAAA,IAAA,CAAK,KAAK,eAAgB,CAAA,IAAA,CAAK,QAAQ,CAAC,CAAG,EAAA;AACvE,IAAO,OAAA,MAAA;AAAA,GACT,MAAA,IAAW,EAAG,CAAA,UAAA,CAAW,IAAK,CAAA,IAAA,CAAK,KAAK,eAAgB,CAAA,GAAA,CAAI,QAAQ,CAAC,CAAG,EAAA;AACtE,IAAO,OAAA,KAAA;AAAA;AAGT,EAAO,OAAA,KAAA;AACT;AAEO,SAAS,eAAe,KAA8B,EAAA;AAC3D,EAAM,MAAA,WAAA,GAAc,QAAQ,GAAI,EAAA;AAEhC,EAAA,IAAI,KAAO,EAAA;AACT,IAAQ,OAAA,CAAA,GAAA,CAAI,oBAAoB,WAAW,CAAA;AAAA;AAG7C,EAAM,MAAA,WAAA,GAAc,mBAAoB,CAAA,WAAA,EAAa,mBAAmB,CAAA;AAExE,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAO,OAAA;AAAA,MACL,QAAU,EAAA,IAAA;AAAA,MACV,IAAM,EAAA;AAAA,KACR;AAAA;AAGF,EAAO,OAAA;AAAA,IACL,QAAU,EAAA,KAAA;AAAA,IACV,IAAM,EAAA;AAAA,GACR;AACF;AAEO,SAAS,gBACd,CAAA,cAAA,EACA,WACA,EAAA,IAAA,EACA,KACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAU,gBAAgB,cAAc,CAAA;AAC9C,EAAA,MAAM,WAAc,GAAA,OAAA,CAAQ,
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import path, { dirname } from \"node:path\";\nimport fs from \"node:fs\";\nimport { execSync } from \"node:child_process\";\nimport { homedir } from \"node:os\";\n\nexport const PH_BIN = \"ph\";\nexport const POWERHOUSE_CONFIG_FILE = \"powerhouse.config.json\";\nexport const HOME_DIR = homedir();\nexport const PH_GLOBAL_PROJECT_NAME = \".ph\";\nexport const POWERHOUSE_GLOBAL_DIR = path.join(\n HOME_DIR,\n PH_GLOBAL_PROJECT_NAME,\n);\n\nexport const packageManagers = {\n bun: {\n execCommand: `bun ${PH_BIN} {{arguments}}`,\n execScript: `bun {{arguments}}`,\n lockfile: \"bun.lock\",\n },\n pnpm: {\n execCommand: `pnpm exec ${PH_BIN} {{arguments}}`,\n execScript: `pnpm {{arguments}}`,\n lockfile: \"pnpm-lock.yaml\",\n },\n yarn: {\n execCommand: `yarn ${PH_BIN} {{arguments}}`,\n execScript: `yarn {{arguments}}`,\n lockfile: \"yarn.lock\",\n },\n npm: {\n execCommand: `npx ${PH_BIN} {{arguments}}`,\n execScript: `npm run {{arguments}}`,\n lockfile: \"package-lock.json\",\n },\n};\n\nexport type ProjectInfo = {\n isGlobal: boolean;\n path: string;\n};\n\nexport type PackageManager = \"npm\" | \"yarn\" | \"pnpm\" | \"bun\";\n\ntype PathValidation = (dir: string) => boolean;\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 fs.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 (fs.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 getPackageManagerFromLockfile(dir: string): PackageManager {\n if (fs.existsSync(path.join(dir, packageManagers.pnpm.lockfile))) {\n return \"pnpm\";\n } else if (fs.existsSync(path.join(dir, packageManagers.yarn.lockfile))) {\n return \"yarn\";\n } else if (fs.existsSync(path.join(dir, packageManagers.bun.lockfile))) {\n return \"bun\";\n }\n\n return \"npm\";\n}\n\nexport function getProjectInfo(debug?: boolean): 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 return {\n isGlobal: true,\n path: POWERHOUSE_GLOBAL_DIR,\n };\n }\n\n return {\n isGlobal: false,\n path: projectPath,\n };\n}\n\nexport function forwardPHCommand(\n packageManager: PackageManager,\n projectPath: string,\n args: string,\n isPackageScript: boolean,\n debug?: boolean,\n) {\n const manager = packageManagers[packageManager];\n const command = isPackageScript ? manager.execScript : manager.execCommand;\n\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 execSync(execCommand, {\n stdio: \"inherit\",\n ...commandOptions,\n });\n}"]}
|