@ticatec/omniflow-core 0.1.0 → 0.2.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.
Files changed (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +112 -54
  3. package/README_CN.md +113 -55
  4. package/dist/index.d.ts +5 -4
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/plugin/PluginContext.d.ts +39 -0
  9. package/dist/plugin/PluginContext.d.ts.map +1 -0
  10. package/dist/plugin/PluginContext.js +8 -0
  11. package/dist/plugin/PluginContext.js.map +1 -0
  12. package/dist/primitives/docker.d.ts.map +1 -1
  13. package/dist/primitives/docker.js +9 -0
  14. package/dist/primitives/docker.js.map +1 -1
  15. package/dist/primitives/git.d.ts +58 -16
  16. package/dist/primitives/git.d.ts.map +1 -1
  17. package/dist/primitives/git.js +91 -33
  18. package/dist/primitives/git.js.map +1 -1
  19. package/dist/primitives/shell.d.ts +4 -0
  20. package/dist/primitives/shell.d.ts.map +1 -1
  21. package/dist/primitives/shell.js +20 -60
  22. package/dist/primitives/shell.js.map +1 -1
  23. package/dist/primitives/ssh.d.ts +8 -5
  24. package/dist/primitives/ssh.d.ts.map +1 -1
  25. package/dist/primitives/ssh.js +49 -14
  26. package/dist/primitives/ssh.js.map +1 -1
  27. package/dist/primitives/subprocess.d.ts +52 -0
  28. package/dist/primitives/subprocess.d.ts.map +1 -0
  29. package/dist/primitives/subprocess.js +353 -0
  30. package/dist/primitives/subprocess.js.map +1 -0
  31. package/dist/toolchain/providers/GradleToolchain.d.ts +1 -1
  32. package/dist/toolchain/providers/GradleToolchain.d.ts.map +1 -1
  33. package/dist/toolchain/providers/GradleToolchain.js +4 -3
  34. package/dist/toolchain/providers/GradleToolchain.js.map +1 -1
  35. package/dist/toolchain/providers/MavenToolchain.d.ts +1 -1
  36. package/dist/toolchain/providers/MavenToolchain.d.ts.map +1 -1
  37. package/dist/toolchain/providers/MavenToolchain.js +3 -3
  38. package/dist/toolchain/providers/MavenToolchain.js.map +1 -1
  39. package/dist/toolchain/providers/NodeToolchain.d.ts +1 -1
  40. package/dist/toolchain/providers/NodeToolchain.d.ts.map +1 -1
  41. package/dist/toolchain/providers/NodeToolchain.js +61 -0
  42. package/dist/toolchain/providers/NodeToolchain.js.map +1 -1
  43. package/dist/toolchain/providers/pom.d.ts.map +1 -1
  44. package/dist/toolchain/providers/pom.js +13 -0
  45. package/dist/toolchain/providers/pom.js.map +1 -1
  46. package/dist/toolchain/registry.d.ts +11 -3
  47. package/dist/toolchain/registry.d.ts.map +1 -1
  48. package/dist/toolchain/registry.js +33 -8
  49. package/dist/toolchain/registry.js.map +1 -1
  50. package/dist/utils/mask.d.ts.map +1 -1
  51. package/dist/utils/mask.js +30 -5
  52. package/dist/utils/mask.js.map +1 -1
  53. package/docs/toolchain-extension.md +301 -0
  54. package/docs/toolchain-extension_CN.md +304 -0
  55. package/package.json +23 -1
  56. package/src/context/index.ts +74 -0
  57. package/src/context/storage.ts +8 -0
  58. package/src/context/types.ts +69 -0
  59. package/src/index.ts +97 -0
  60. package/src/plugin/PluginContext.ts +57 -0
  61. package/src/primitives/docker.ts +164 -0
  62. package/src/primitives/git.ts +172 -0
  63. package/src/primitives/index.ts +4 -0
  64. package/src/primitives/shell.ts +157 -0
  65. package/src/primitives/ssh.ts +249 -0
  66. package/src/primitives/subprocess.ts +389 -0
  67. package/src/toolchain/index.ts +6 -0
  68. package/src/toolchain/providers/GradleToolchain.ts +137 -0
  69. package/src/toolchain/providers/MavenToolchain.ts +64 -0
  70. package/src/toolchain/providers/NodeToolchain.ts +172 -0
  71. package/src/toolchain/providers/pom.ts +145 -0
  72. package/src/toolchain/registry.ts +161 -0
  73. package/src/toolchain/types.ts +40 -0
  74. package/src/utils/mask.ts +73 -0
  75. package/src/utils/template.ts +62 -0
package/dist/index.d.ts CHANGED
@@ -1,15 +1,16 @@
1
1
  /**
2
- * @omniflow/core
2
+ * @ticatec/omniflow-core
3
3
  *
4
4
  * Foundational execution context, primitives, and toolchain SPI
5
5
  * for OmniFlow CI/CD orchestrator and its plugins.
6
6
  */
7
7
  export { getContext, tryGetContext, hasContext, runWithContext, createMockContext, executionLocalStorage, type ExecutionContext, type CommandResult, type Artifact, type Logger, type GitMetadata, type SourceMode } from './context/index.js';
8
- export { shell, run, sh, output, type RunOptions, type ShellOutputResult, type TemplateRunner } from './primitives/shell.js';
8
+ export { shell, run, sh, output, createMaskTransform, type RunOptions, type ShellOutputResult, type TemplateRunner } from './primitives/shell.js';
9
9
  export { ssh, SshClient, type SshServerConfig, type SshConnectionConfig, type SshTarget, type SshResult } from './primitives/ssh.js';
10
- export { git } from './primitives/git.js';
10
+ export { git, type GitCwdOptions, type GitFetchOptions, type GitResetOptions, type GitCheckoutOptions, type GitCleanOptions } from './primitives/git.js';
11
11
  export { docker, type DockerBuildOptions, type ComposeOptions } from './primitives/docker.js';
12
- export { registerToolchain, resolveToolchain, ToolchainRegistry, defaultToolchainRegistry, MavenToolchain, GradleToolchain, NodeToolchain, readPom, parseXml, type ToolchainProvider, type DetectionResult, type ProjectInfo } from './toolchain/index.js';
12
+ export { registerToolchain, resolveToolchain, ToolchainRegistry, defaultToolchainRegistry, MavenToolchain, GradleToolchain, NodeToolchain, readPom, parseXml, type ToolchainProvider, type DetectionResult, type ProjectInfo, type ResolveToolchainOptions } from './toolchain/index.js';
13
13
  export { maskString, maskObject, isSecretKey, MASK } from './utils/mask.js';
14
14
  export { templateToArgv } from './utils/template.js';
15
+ export { type PluginContext, type PluginRegisterFn, type ArtifactRegistryLike, type BranchRegistryLike, type CommandRegistryLike, type ToolchainRegistryLike } from './plugin/PluginContext.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,MAAM,EACN,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,GAAG,EACH,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,aAAa,EACb,OAAO,EACP,QAAQ,EACR,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACL,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACf,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,MAAM,EACN,mBAAmB,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,GAAG,EACH,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,GAAG,EACH,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,MAAM,EACN,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,aAAa,EACb,OAAO,EACP,QAAQ,EACR,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACL,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACf,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAA"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @omniflow/core
2
+ * @ticatec/omniflow-core
3
3
  *
4
4
  * Foundational execution context, primitives, and toolchain SPI
5
5
  * for OmniFlow CI/CD orchestrator and its plugins.
@@ -7,7 +7,7 @@
7
7
  // Context
8
8
  export { getContext, tryGetContext, hasContext, runWithContext, createMockContext, executionLocalStorage } from './context/index.js';
9
9
  // Primitives
10
- export { shell, run, sh, output } from './primitives/shell.js';
10
+ export { shell, run, sh, output, createMaskTransform } from './primitives/shell.js';
11
11
  export { ssh, SshClient } from './primitives/ssh.js';
12
12
  export { git } from './primitives/git.js';
13
13
  export { docker } from './primitives/docker.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU;AACV,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EAOtB,MAAM,oBAAoB,CAAA;AAE3B,aAAa;AACb,OAAO,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,MAAM,EAIP,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,GAAG,EACH,SAAS,EAKV,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,OAAO,EACL,MAAM,EAGP,MAAM,wBAAwB,CAAA;AAE/B,aAAa;AACb,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,aAAa,EACb,OAAO,EACP,QAAQ,EAIT,MAAM,sBAAsB,CAAA;AAE7B,YAAY;AACZ,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACL,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACf,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU;AACV,OAAO,EACL,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EAOtB,MAAM,oBAAoB,CAAA;AAE3B,aAAa;AACb,OAAO,EACL,KAAK,EACL,GAAG,EACH,EAAE,EACF,MAAM,EACN,mBAAmB,EAIpB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EACL,GAAG,EACH,SAAS,EAKV,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,GAAG,EAMJ,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,MAAM,EAGP,MAAM,wBAAwB,CAAA;AAE/B,aAAa;AACb,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,eAAe,EACf,aAAa,EACb,OAAO,EACP,QAAQ,EAKT,MAAM,sBAAsB,CAAA;AAE7B,YAAY;AACZ,OAAO,EACL,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACL,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,cAAc,EACf,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * OmniFlow Plugin SPI Contracts
3
+ *
4
+ * Provides the context and registration hook for external plugins extending
5
+ * artifact publishers, branch strategies, commands, and toolchains.
6
+ */
7
+ export interface ArtifactRegistryLike {
8
+ register(publisher: any): void;
9
+ }
10
+ export interface BranchRegistryLike {
11
+ register(strategy: any): void;
12
+ }
13
+ export interface CommandRegistryLike {
14
+ register(command: any): void;
15
+ registerFunction?(name: string, fn: any): void;
16
+ }
17
+ export interface ToolchainRegistryLike {
18
+ register(toolchain: any): void;
19
+ }
20
+ /**
21
+ * Standard SPI context passed to every plugin's `register(ctx, options)` hook.
22
+ */
23
+ export interface PluginContext<TArtifactRegistry = any, TBranchRegistry = any, TCommandRegistry = any, TToolchainRegistry = any> {
24
+ /** Registry for Docker, NPM, Maven, Raw artifact publishers */
25
+ artifactRegistry: TArtifactRegistry;
26
+ /** Registry for Git branch promotion and PR/MR drivers */
27
+ branchRegistry: TBranchRegistry;
28
+ /** Registry for BaseCommand subclasses or functional recipes */
29
+ commandRegistry: TCommandRegistry;
30
+ /** Registry for detection and build toolchains */
31
+ toolchainRegistry: TToolchainRegistry;
32
+ /** Runtime environment variables */
33
+ env: Record<string, string | undefined>;
34
+ }
35
+ /**
36
+ * The standard entry function every OmniFlow plugin exports.
37
+ */
38
+ export type PluginRegisterFn<TArtifactRegistry = any, TBranchRegistry = any, TCommandRegistry = any, TToolchainRegistry = any> = (ctx: PluginContext<TArtifactRegistry, TBranchRegistry, TCommandRegistry, TToolchainRegistry>, options?: Record<string, unknown>) => Promise<void> | void;
39
+ //# sourceMappingURL=PluginContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginContext.d.ts","sourceRoot":"","sources":["../../src/plugin/PluginContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAAA;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAA;IAC5B,gBAAgB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI,CAAA;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAC5B,iBAAiB,GAAG,GAAG,EACvB,eAAe,GAAG,GAAG,EACrB,gBAAgB,GAAG,GAAG,EACtB,kBAAkB,GAAG,GAAG;IAExB,+DAA+D;IAC/D,gBAAgB,EAAE,iBAAiB,CAAA;IACnC,0DAA0D;IAC1D,cAAc,EAAE,eAAe,CAAA;IAC/B,gEAAgE;IAChE,eAAe,EAAE,gBAAgB,CAAA;IACjC,kDAAkD;IAClD,iBAAiB,EAAE,kBAAkB,CAAA;IACrC,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,CAC1B,iBAAiB,GAAG,GAAG,EACvB,eAAe,GAAG,GAAG,EACrB,gBAAgB,GAAG,GAAG,EACtB,kBAAkB,GAAG,GAAG,IACtB,CACF,GAAG,EAAE,aAAa,CAAC,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAC5F,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * OmniFlow Plugin SPI Contracts
3
+ *
4
+ * Provides the context and registration hook for external plugins extending
5
+ * artifact publishers, branch strategies, commands, and toolchains.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=PluginContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginContext.js","sourceRoot":"","sources":["../../src/plugin/PluginContext.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/primitives/docker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,eAAO,MAAM,MAAM;IACjB;;OAEG;mBACkB,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgC3D;;OAEG;qBACoB,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUtE;;OAEG;gBACe,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU5C;;OAEG;wBACsB,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;IAsC5D;;OAEG;0BACwB,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;CAqB/D,CAAA"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/primitives/docker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CACjB;AAED,eAAO,MAAM,MAAM;IACjB;;OAEG;mBACkB,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoC3D;;OAEG;qBACoB,MAAM,eAAe,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUtE;;OAEG;gBACe,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU5C;;OAEG;wBACsB,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;IAsC5D;;OAEG;0BACwB,cAAc,GAAQ,OAAO,CAAC,IAAI,CAAC;CA6B/D,CAAA"}
@@ -6,6 +6,9 @@ export const docker = {
6
6
  * Build a Docker image.
7
7
  */
8
8
  async build(options) {
9
+ if (!options.image || typeof options.image !== 'string' || options.image.trim() === '') {
10
+ throw new Error('Docker build requires a non-empty "image" identifier');
11
+ }
9
12
  const ctx = tryGetContext();
10
13
  const cwd = options.cwd ?? (ctx?.moduleFolder ? path.resolve(ctx.workspace, ctx.moduleFolder) : ctx?.workspace ?? process.cwd());
11
14
  const dockerfile = options.dockerfile ?? 'Dockerfile';
@@ -98,10 +101,16 @@ export const docker = {
98
101
  args.push('-f', f);
99
102
  }
100
103
  }
104
+ if (options.envFile) {
105
+ args.push('--env-file', options.envFile);
106
+ }
101
107
  args.push('down');
102
108
  if (options.flags) {
103
109
  args.push(...options.flags);
104
110
  }
111
+ if (options.services && options.services.length > 0) {
112
+ args.push(...options.services);
113
+ }
105
114
  ctx?.logger.info('Docker Compose down');
106
115
  await shell.run({ cwd }) `docker ${args}`;
107
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/primitives/docker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/primitives/docker.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,61 @@
1
+ export interface GitCwdOptions {
2
+ dir?: string;
3
+ }
4
+ export interface GitFetchOptions extends GitCwdOptions {
5
+ remote?: string;
6
+ branch?: string;
7
+ }
8
+ export interface GitResetOptions extends GitCwdOptions {
9
+ target?: string;
10
+ }
11
+ export interface GitCheckoutOptions extends GitCwdOptions {
12
+ ref?: string;
13
+ }
14
+ export interface GitCleanOptions extends GitCwdOptions {
15
+ forceIgnored?: boolean;
16
+ }
1
17
  export declare const git: {
2
- /** Return full SHA of current commit */
3
- currentCommit(dir?: string): Promise<string>;
4
- /** Return short SHA of current commit */
5
- shortCommit(dir?: string): Promise<string>;
6
- /** Return current checked-out branch name, or empty string if detached HEAD */
7
- currentBranch(dir?: string): Promise<string>;
8
- /** Check if working tree has untracked or uncommitted changes */
9
- isDirty(dir?: string): Promise<boolean>;
10
- /** Fetch latest changes from remote */
11
- fetch(dir?: string, remote?: string, branch?: string): Promise<void>;
12
- /** Hard reset to target (defaults to HEAD) */
13
- resetHard(dir?: string, target?: string): Promise<void>;
14
- /** Clean working tree */
15
- clean(dir?: string, forceIgnored?: boolean): Promise<void>;
16
- /** Switch or checkout a ref */
17
- checkout(dir?: string, ref?: string): Promise<void>;
18
+ /**
19
+ * Return full SHA of current commit.
20
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
21
+ */
22
+ currentCommit(options?: string | GitCwdOptions): Promise<string>;
23
+ /**
24
+ * Return short SHA of current commit.
25
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
26
+ */
27
+ shortCommit(options?: string | GitCwdOptions): Promise<string>;
28
+ /**
29
+ * Return current checked-out branch name, or empty string if detached HEAD.
30
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
31
+ */
32
+ currentBranch(options?: string | GitCwdOptions): Promise<string>;
33
+ /**
34
+ * Check if working tree has untracked or uncommitted changes.
35
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
36
+ */
37
+ isDirty(options?: string | GitCwdOptions): Promise<boolean>;
38
+ /**
39
+ * Fetch latest changes from remote.
40
+ * @param options GitFetchOptions object { remote, branch, dir }. Defaults to { remote: 'origin' } at repo root.
41
+ */
42
+ fetch(options?: GitFetchOptions): Promise<void>;
43
+ /**
44
+ * Hard reset working tree to target commit/ref (defaults to HEAD).
45
+ * @param targetOrOptions Target ref name (string, e.g. 'HEAD', 'origin/main'), or GitResetOptions { target, dir }.
46
+ * Note: A bare string argument is treated as the target ref, NOT a directory. Pass { dir: '...' } to change directory.
47
+ */
48
+ resetHard(targetOrOptions?: string | GitResetOptions): Promise<void>;
49
+ /**
50
+ * Clean working tree untracked files.
51
+ * @param options GitCleanOptions { forceIgnored, dir }. Defaults to repo root.
52
+ */
53
+ clean(options?: GitCleanOptions): Promise<void>;
54
+ /**
55
+ * Switch or checkout a ref (defaults to main).
56
+ * @param refOrOptions Ref name (string, e.g. 'main', 'feature/login'), or GitCheckoutOptions { ref, dir }.
57
+ * Note: A bare string argument is treated as the ref name, NOT a directory. Pass { dir: '...' } to change directory.
58
+ */
59
+ checkout(refOrOptions?: string | GitCheckoutOptions): Promise<void>;
18
60
  };
19
61
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/primitives/git.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,GAAG;IACd,wCAAwC;wBACd,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlD,yCAAyC;sBACjB,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMhD,+EAA+E;wBACrD,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAUlD,iEAAiE;kBAC7C,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM7C,uCAAuC;gBACrB,MAAM,4BAA8B,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY5E,8CAA8C;oBACxB,MAAM,oBAAoB,OAAO,CAAC,IAAI,CAAC;IAU7D,yBAAyB;gBACP,MAAM,2BAAyB,OAAO,CAAC,IAAI,CAAC;IAW9D,+BAA+B;mBACV,MAAM,iBAAiB,OAAO,CAAC,IAAI,CAAC;CAS1D,CAAA"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/primitives/git.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAgBD,eAAO,MAAM,GAAG;IACd;;;OAGG;4BAC2B,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtE;;;OAGG;0BACyB,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAMpE;;;OAGG;4BAC2B,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IActE;;;OAGG;sBACqB,MAAM,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjE;;;OAGG;oBACkB,eAAe,GAAQ,OAAO,CAAC,IAAI,CAAC;IAezD;;;;OAIG;gCAC8B,MAAM,GAAG,eAAe,GAAY,OAAO,CAAC,IAAI,CAAC;IAoBlF;;;OAGG;oBACkB,eAAe,GAAQ,OAAO,CAAC,IAAI,CAAC;IAYzD;;;;OAIG;4BAC0B,MAAM,GAAG,kBAAkB,GAAY,OAAO,CAAC,IAAI,CAAC;CAmBlF,CAAA"}
@@ -1,57 +1,98 @@
1
1
  import { execa } from 'execa';
2
2
  import { tryGetContext } from '../context/index.js';
3
- function resolveDir(dir) {
4
- if (dir)
5
- return dir;
3
+ function resolveGitCwd(optionsOrDir) {
4
+ if (typeof optionsOrDir === 'string') {
5
+ return optionsOrDir;
6
+ }
7
+ if (optionsOrDir?.dir) {
8
+ return optionsOrDir.dir;
9
+ }
6
10
  const ctx = tryGetContext();
7
- return ctx?.workspace ?? process.cwd();
11
+ if (ctx) {
12
+ return ctx.projectRoot ?? ctx.workspace ?? process.cwd();
13
+ }
14
+ return process.cwd();
8
15
  }
9
16
  export const git = {
10
- /** Return full SHA of current commit */
11
- async currentCommit(dir) {
12
- const cwd = resolveDir(dir);
17
+ /**
18
+ * Return full SHA of current commit.
19
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
20
+ */
21
+ async currentCommit(options) {
22
+ const cwd = resolveGitCwd(options);
13
23
  const { stdout } = await execa('git', ['rev-parse', 'HEAD'], { cwd });
14
24
  return stdout.trim();
15
25
  },
16
- /** Return short SHA of current commit */
17
- async shortCommit(dir) {
18
- const cwd = resolveDir(dir);
26
+ /**
27
+ * Return short SHA of current commit.
28
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
29
+ */
30
+ async shortCommit(options) {
31
+ const cwd = resolveGitCwd(options);
19
32
  const { stdout } = await execa('git', ['rev-parse', '--short', 'HEAD'], { cwd });
20
33
  return stdout.trim();
21
34
  },
22
- /** Return current checked-out branch name, or empty string if detached HEAD */
23
- async currentBranch(dir) {
24
- const cwd = resolveDir(dir);
35
+ /**
36
+ * Return current checked-out branch name, or empty string if detached HEAD.
37
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
38
+ */
39
+ async currentBranch(options) {
40
+ const cwd = resolveGitCwd(options);
25
41
  try {
26
42
  const { stdout } = await execa('git', ['symbolic-ref', '--short', 'HEAD'], { cwd });
27
43
  return stdout.trim();
28
44
  }
29
45
  catch {
30
- return '';
46
+ const isInside = await execa('git', ['rev-parse', '--is-inside-work-tree'], { cwd, reject: false });
47
+ if (!isInside.failed) {
48
+ return ''; // Valid git repo, but detached HEAD
49
+ }
50
+ throw new Error(`Not a git repository: ${cwd}`);
31
51
  }
32
52
  },
33
- /** Check if working tree has untracked or uncommitted changes */
34
- async isDirty(dir) {
35
- const cwd = resolveDir(dir);
53
+ /**
54
+ * Check if working tree has untracked or uncommitted changes.
55
+ * @param options Directory path or GitCwdOptions object. Defaults to repository root.
56
+ */
57
+ async isDirty(options) {
58
+ const cwd = resolveGitCwd(options);
36
59
  const { stdout } = await execa('git', ['status', '--porcelain'], { cwd });
37
60
  return stdout.trim().length > 0;
38
61
  },
39
- /** Fetch latest changes from remote */
40
- async fetch(dir, remote = 'origin', branch) {
41
- const cwd = resolveDir(dir);
62
+ /**
63
+ * Fetch latest changes from remote.
64
+ * @param options GitFetchOptions object { remote, branch, dir }. Defaults to { remote: 'origin' } at repo root.
65
+ */
66
+ async fetch(options = {}) {
67
+ const cwd = resolveGitCwd(options);
68
+ const rem = options.remote ?? 'origin';
69
+ const br = options.branch;
42
70
  const ctx = tryGetContext();
43
71
  if (ctx?.dryRun) {
44
- ctx.logger.info(`[DRY-RUN] git fetch ${remote} ${branch ?? ''}`);
72
+ ctx.logger.info(`[DRY-RUN] git fetch ${rem}${br ? ` ${br}` : ''}`);
45
73
  return;
46
74
  }
47
- const args = ['fetch', remote];
48
- if (branch)
49
- args.push(branch);
75
+ const args = ['fetch', rem];
76
+ if (br)
77
+ args.push(br);
50
78
  await execa('git', args, { cwd });
51
79
  },
52
- /** Hard reset to target (defaults to HEAD) */
53
- async resetHard(dir, target = 'HEAD') {
54
- const cwd = resolveDir(dir);
80
+ /**
81
+ * Hard reset working tree to target commit/ref (defaults to HEAD).
82
+ * @param targetOrOptions Target ref name (string, e.g. 'HEAD', 'origin/main'), or GitResetOptions { target, dir }.
83
+ * Note: A bare string argument is treated as the target ref, NOT a directory. Pass { dir: '...' } to change directory.
84
+ */
85
+ async resetHard(targetOrOptions = 'HEAD') {
86
+ let target = 'HEAD';
87
+ let cwd;
88
+ if (typeof targetOrOptions === 'object' && targetOrOptions !== null) {
89
+ target = targetOrOptions.target ?? 'HEAD';
90
+ cwd = resolveGitCwd(targetOrOptions);
91
+ }
92
+ else {
93
+ target = targetOrOptions;
94
+ cwd = resolveGitCwd();
95
+ }
55
96
  const ctx = tryGetContext();
56
97
  if (ctx?.dryRun) {
57
98
  ctx.logger.info(`[DRY-RUN] git reset --hard ${target}`);
@@ -59,10 +100,14 @@ export const git = {
59
100
  }
60
101
  await execa('git', ['reset', '--hard', target], { cwd });
61
102
  },
62
- /** Clean working tree */
63
- async clean(dir, forceIgnored = false) {
64
- const cwd = resolveDir(dir);
103
+ /**
104
+ * Clean working tree untracked files.
105
+ * @param options GitCleanOptions { forceIgnored, dir }. Defaults to repo root.
106
+ */
107
+ async clean(options = {}) {
108
+ const cwd = resolveGitCwd(options);
65
109
  const ctx = tryGetContext();
110
+ const forceIgnored = options.forceIgnored ?? false;
66
111
  if (ctx?.dryRun) {
67
112
  ctx.logger.info(`[DRY-RUN] git clean -fd${forceIgnored ? 'x' : ''}`);
68
113
  return;
@@ -70,9 +115,22 @@ export const git = {
70
115
  const flags = forceIgnored ? ['clean', '-fdx'] : ['clean', '-fd'];
71
116
  await execa('git', flags, { cwd });
72
117
  },
73
- /** Switch or checkout a ref */
74
- async checkout(dir, ref = 'main') {
75
- const cwd = resolveDir(dir);
118
+ /**
119
+ * Switch or checkout a ref (defaults to main).
120
+ * @param refOrOptions Ref name (string, e.g. 'main', 'feature/login'), or GitCheckoutOptions { ref, dir }.
121
+ * Note: A bare string argument is treated as the ref name, NOT a directory. Pass { dir: '...' } to change directory.
122
+ */
123
+ async checkout(refOrOptions = 'main') {
124
+ let ref = 'main';
125
+ let cwd;
126
+ if (typeof refOrOptions === 'object' && refOrOptions !== null) {
127
+ ref = refOrOptions.ref ?? 'main';
128
+ cwd = resolveGitCwd(refOrOptions);
129
+ }
130
+ else {
131
+ ref = refOrOptions;
132
+ cwd = resolveGitCwd();
133
+ }
76
134
  const ctx = tryGetContext();
77
135
  if (ctx?.dryRun) {
78
136
  ctx.logger.info(`[DRY-RUN] git checkout ${ref}`);
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/primitives/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/primitives/git.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { createMaskTransform } from './subprocess.js';
2
+ export { createMaskTransform };
1
3
  export interface RunOptions {
2
4
  /** Working directory (defaults to context's active module or workspace) */
3
5
  cwd?: string;
@@ -12,6 +14,8 @@ export interface ShellOutputResult {
12
14
  stdout: string;
13
15
  stderr: string;
14
16
  exitCode: number;
17
+ failed?: boolean;
18
+ signal?: string;
15
19
  }
16
20
  /**
17
21
  * Tagged template runner signature.
@@ -1 +1 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/primitives/shell.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AA4GD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACnF;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAAA;AACxD,wBAAgB,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AA4BrG;;GAEG;AACH,wBAAsB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE1F;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE9F;AAED,eAAO,MAAM,KAAK;;;;CAIjB,CAAA"}
1
+ {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/primitives/shell.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,mBAAmB,EACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAkED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACnF;AAED;;;;GAIG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,cAAc,CAAA;AACxD,wBAAgB,GAAG,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AA4BrG;;GAEG;AACH,wBAAsB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE1F;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE9F;AAED,eAAO,MAAM,KAAK;;;;CAIjB,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import path from 'node:path';
2
- import fs from 'node:fs';
3
2
  import { execa } from 'execa';
4
3
  import { tryGetContext } from '../context/index.js';
5
4
  import { templateToArgv } from '../utils/template.js';
6
- import { isSecretKey, maskString } from '../utils/mask.js';
5
+ import { maskString } from '../utils/mask.js';
6
+ import { resolveEnv, getSecretValues, runSubprocess, createMaskTransform } from './subprocess.js';
7
+ export { createMaskTransform };
7
8
  function resolveCwd(explicitCwd) {
8
9
  if (explicitCwd)
9
10
  return explicitCwd;
@@ -18,29 +19,6 @@ function resolveCwd(explicitCwd) {
18
19
  }
19
20
  return process.cwd();
20
21
  }
21
- function resolveEnv(explicitEnv) {
22
- const ctx = tryGetContext();
23
- const base = { ...process.env };
24
- if (ctx?.env) {
25
- Object.assign(base, ctx.env);
26
- }
27
- if (explicitEnv) {
28
- Object.assign(base, explicitEnv);
29
- }
30
- return base;
31
- }
32
- function getSecretValues() {
33
- const ctx = tryGetContext();
34
- if (!ctx?.env)
35
- return [];
36
- const secrets = [];
37
- for (const [k, v] of Object.entries(ctx.env)) {
38
- if (isSecretKey(k) && typeof v === 'string' && v.length >= 3) {
39
- secrets.push(v);
40
- }
41
- }
42
- return secrets;
43
- }
44
22
  /**
45
23
  * Execute command via execa, piping output and handling dryRun.
46
24
  */
@@ -50,14 +28,15 @@ async function executeInternal(fileOrCmd, args, options) {
50
28
  const env = resolveEnv(options.env);
51
29
  const secrets = getSecretValues();
52
30
  const cmdDisplay = args ? [fileOrCmd, ...args].join(' ') : fileOrCmd;
31
+ const maskedCmd = maskString(cmdDisplay, secrets);
53
32
  // Dry-run interception
54
33
  if (ctx?.dryRun) {
55
- const maskedCmd = maskString(cmdDisplay, secrets);
56
34
  ctx.logger.info(`[DRY-RUN] Executing: ${maskedCmd} (cwd: ${cwd})`);
57
35
  return {
58
- stdout: `[DRY-RUN] ${maskedCmd}`,
36
+ stdout: '',
59
37
  stderr: '',
60
- exitCode: 0
38
+ exitCode: 0,
39
+ failed: false
61
40
  };
62
41
  }
63
42
  const execaOpts = {
@@ -66,38 +45,19 @@ async function executeInternal(fileOrCmd, args, options) {
66
45
  reject: options.reject ?? true,
67
46
  shell: options.isShell ?? false
68
47
  };
69
- // If a log file is defined in the context, write to it
70
- let logStream;
71
- if (ctx?.logFile) {
72
- try {
73
- logStream = fs.createWriteStream(ctx.logFile, { flags: 'a' });
74
- }
75
- catch {
76
- // Ignored if unable to open log file
77
- }
78
- }
79
- try {
80
- const subprocess = args
81
- ? execa(fileOrCmd, args, execaOpts)
82
- : execa(fileOrCmd, execaOpts);
83
- if (subprocess.stdout && logStream) {
84
- subprocess.stdout.pipe(logStream, { end: false });
85
- }
86
- if (subprocess.stderr && logStream) {
87
- subprocess.stderr.pipe(logStream, { end: false });
88
- }
89
- const result = await subprocess;
90
- return {
91
- stdout: typeof result.stdout === 'string' ? result.stdout : (result.stdout ? String(result.stdout) : ''),
92
- stderr: typeof result.stderr === 'string' ? result.stderr : (result.stderr ? String(result.stderr) : ''),
93
- exitCode: result.exitCode ?? 0
94
- };
95
- }
96
- finally {
97
- if (logStream) {
98
- logStream.end();
99
- }
100
- }
48
+ const displayCmd = `$ ${maskedCmd}`;
49
+ ctx?.logger?.info?.(displayCmd);
50
+ const subprocess = args
51
+ ? execa(fileOrCmd, args, execaOpts)
52
+ : execa(fileOrCmd, execaOpts);
53
+ return runSubprocess({
54
+ subprocess,
55
+ displayCmd,
56
+ cmdText: maskedCmd,
57
+ errorPrefix: 'Command',
58
+ reject: options.reject ?? true,
59
+ secrets
60
+ });
101
61
  }
102
62
  export function run(templateOrOptions, ...values) {
103
63
  // Overload 2: options passed first, returns a TemplateRunner
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/primitives/shell.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/primitives/shell.ts"],"names":[],"mappings":"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"}