@invarn/cibuild 1.3.16 → 1.3.18

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 (242) hide show
  1. package/dist/cli.cjs +1 -1
  2. package/dist/src/cli.d.ts +3 -0
  3. package/dist/src/cli.d.ts.map +1 -0
  4. package/dist/src/cli.js +987 -0
  5. package/dist/src/commands/android-scanner.d.ts +32 -0
  6. package/dist/src/commands/android-scanner.d.ts.map +1 -0
  7. package/dist/src/commands/android-scanner.js +667 -0
  8. package/dist/src/commands/build.d.ts +5 -0
  9. package/dist/src/commands/build.d.ts.map +1 -0
  10. package/dist/src/commands/build.js +1096 -0
  11. package/dist/src/commands/edit.d.ts +3 -0
  12. package/dist/src/commands/edit.d.ts.map +1 -0
  13. package/dist/src/commands/edit.js +651 -0
  14. package/dist/src/commands/file-secret-collector.d.ts +37 -0
  15. package/dist/src/commands/file-secret-collector.d.ts.map +1 -0
  16. package/dist/src/commands/file-secret-collector.js +199 -0
  17. package/dist/src/commands/github-workflow.d.ts +5 -0
  18. package/dist/src/commands/github-workflow.d.ts.map +1 -0
  19. package/dist/src/commands/github-workflow.js +45 -0
  20. package/dist/src/commands/ios-scanner.d.ts +27 -0
  21. package/dist/src/commands/ios-scanner.d.ts.map +1 -0
  22. package/dist/src/commands/ios-scanner.js +337 -0
  23. package/dist/src/commands/reset.d.ts +7 -0
  24. package/dist/src/commands/reset.d.ts.map +1 -0
  25. package/dist/src/commands/reset.js +81 -0
  26. package/dist/src/commands/secrets-sync-workflow.d.ts +15 -0
  27. package/dist/src/commands/secrets-sync-workflow.d.ts.map +1 -0
  28. package/dist/src/commands/secrets-sync-workflow.js +255 -0
  29. package/dist/src/commands/secrets-upload.d.ts +21 -0
  30. package/dist/src/commands/secrets-upload.d.ts.map +1 -0
  31. package/dist/src/commands/secrets-upload.js +177 -0
  32. package/dist/src/commands/secrets-upload.test.d.ts +5 -0
  33. package/dist/src/commands/secrets-upload.test.d.ts.map +1 -0
  34. package/dist/src/commands/secrets-upload.test.js +60 -0
  35. package/dist/src/config.d.ts +3 -0
  36. package/dist/src/config.d.ts.map +1 -0
  37. package/dist/src/config.js +47 -0
  38. package/dist/src/envman/cli.d.ts +21 -0
  39. package/dist/src/envman/cli.d.ts.map +1 -0
  40. package/dist/src/envman/cli.js +240 -0
  41. package/dist/src/envman/envman.d.ts +83 -0
  42. package/dist/src/envman/envman.d.ts.map +1 -0
  43. package/dist/src/envman/envman.js +361 -0
  44. package/dist/src/envman/envman.test.d.ts +5 -0
  45. package/dist/src/envman/envman.test.d.ts.map +1 -0
  46. package/dist/src/envman/envman.test.js +236 -0
  47. package/dist/src/envman/index.d.ts +23 -0
  48. package/dist/src/envman/index.d.ts.map +1 -0
  49. package/dist/src/envman/index.js +23 -0
  50. package/dist/src/envman/types.d.ts +55 -0
  51. package/dist/src/envman/types.d.ts.map +1 -0
  52. package/dist/src/envman/types.js +12 -0
  53. package/dist/src/lib.d.ts +27 -0
  54. package/dist/src/lib.d.ts.map +1 -0
  55. package/dist/src/lib.js +32 -0
  56. package/dist/src/pipeline.d.ts +3 -0
  57. package/dist/src/pipeline.d.ts.map +1 -0
  58. package/dist/src/pipeline.js +57 -0
  59. package/dist/src/runner.d.ts +17 -0
  60. package/dist/src/runner.d.ts.map +1 -0
  61. package/dist/src/runner.js +234 -0
  62. package/dist/src/types.d.ts +58 -0
  63. package/dist/src/types.d.ts.map +1 -0
  64. package/dist/src/types.js +2 -0
  65. package/dist/src/yaml/bitrise-compat.d.ts +65 -0
  66. package/dist/src/yaml/bitrise-compat.d.ts.map +1 -0
  67. package/dist/src/yaml/bitrise-compat.js +206 -0
  68. package/dist/src/yaml/bitrise-compat.test.d.ts +5 -0
  69. package/dist/src/yaml/bitrise-compat.test.d.ts.map +1 -0
  70. package/dist/src/yaml/bitrise-compat.test.js +347 -0
  71. package/dist/src/yaml/converter.d.ts +33 -0
  72. package/dist/src/yaml/converter.d.ts.map +1 -0
  73. package/dist/src/yaml/converter.js +222 -0
  74. package/dist/src/yaml/converter.test.d.ts +5 -0
  75. package/dist/src/yaml/converter.test.d.ts.map +1 -0
  76. package/dist/src/yaml/converter.test.js +348 -0
  77. package/dist/src/yaml/e2e.test.d.ts +6 -0
  78. package/dist/src/yaml/e2e.test.d.ts.map +1 -0
  79. package/dist/src/yaml/e2e.test.js +446 -0
  80. package/dist/src/yaml/env-resolver.d.ts +120 -0
  81. package/dist/src/yaml/env-resolver.d.ts.map +1 -0
  82. package/dist/src/yaml/env-resolver.js +405 -0
  83. package/dist/src/yaml/env-resolver.test.d.ts +5 -0
  84. package/dist/src/yaml/env-resolver.test.d.ts.map +1 -0
  85. package/dist/src/yaml/env-resolver.test.js +502 -0
  86. package/dist/src/yaml/interactive-prompts.d.ts +71 -0
  87. package/dist/src/yaml/interactive-prompts.d.ts.map +1 -0
  88. package/dist/src/yaml/interactive-prompts.js +258 -0
  89. package/dist/src/yaml/missing-env-handler.d.ts +45 -0
  90. package/dist/src/yaml/missing-env-handler.d.ts.map +1 -0
  91. package/dist/src/yaml/missing-env-handler.js +64 -0
  92. package/dist/src/yaml/parser.d.ts +33 -0
  93. package/dist/src/yaml/parser.d.ts.map +1 -0
  94. package/dist/src/yaml/parser.js +145 -0
  95. package/dist/src/yaml/pipeline-with-secrets.d.ts +25 -0
  96. package/dist/src/yaml/pipeline-with-secrets.d.ts.map +1 -0
  97. package/dist/src/yaml/pipeline-with-secrets.js +76 -0
  98. package/dist/src/yaml/platform-detector.d.ts +83 -0
  99. package/dist/src/yaml/platform-detector.d.ts.map +1 -0
  100. package/dist/src/yaml/platform-detector.js +188 -0
  101. package/dist/src/yaml/platform-detector.test.d.ts +5 -0
  102. package/dist/src/yaml/platform-detector.test.d.ts.map +1 -0
  103. package/dist/src/yaml/platform-detector.test.js +414 -0
  104. package/dist/src/yaml/preflight-validation.d.ts +40 -0
  105. package/dist/src/yaml/preflight-validation.d.ts.map +1 -0
  106. package/dist/src/yaml/preflight-validation.js +152 -0
  107. package/dist/src/yaml/secrets-manager.d.ts +77 -0
  108. package/dist/src/yaml/secrets-manager.d.ts.map +1 -0
  109. package/dist/src/yaml/secrets-manager.js +219 -0
  110. package/dist/src/yaml/step-validator.d.ts +54 -0
  111. package/dist/src/yaml/step-validator.d.ts.map +1 -0
  112. package/dist/src/yaml/step-validator.js +403 -0
  113. package/dist/src/yaml/steps/android-sign.d.ts +35 -0
  114. package/dist/src/yaml/steps/android-sign.d.ts.map +1 -0
  115. package/dist/src/yaml/steps/android-sign.js +147 -0
  116. package/dist/src/yaml/steps/android-version.d.ts +26 -0
  117. package/dist/src/yaml/steps/android-version.d.ts.map +1 -0
  118. package/dist/src/yaml/steps/android-version.js +128 -0
  119. package/dist/src/yaml/steps/android-version.test.d.ts +5 -0
  120. package/dist/src/yaml/steps/android-version.test.d.ts.map +1 -0
  121. package/dist/src/yaml/steps/android-version.test.js +196 -0
  122. package/dist/src/yaml/steps/android.d.ts +95 -0
  123. package/dist/src/yaml/steps/android.d.ts.map +1 -0
  124. package/dist/src/yaml/steps/android.js +916 -0
  125. package/dist/src/yaml/steps/app-store-deploy.d.ts +48 -0
  126. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +1 -0
  127. package/dist/src/yaml/steps/app-store-deploy.js +162 -0
  128. package/dist/src/yaml/steps/base.d.ts +238 -0
  129. package/dist/src/yaml/steps/base.d.ts.map +1 -0
  130. package/dist/src/yaml/steps/base.js +345 -0
  131. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +26 -0
  132. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +1 -0
  133. package/dist/src/yaml/steps/bitrise-android-tools.js +198 -0
  134. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +5 -0
  135. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +1 -0
  136. package/dist/src/yaml/steps/bitrise-android-tools.test.js +280 -0
  137. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +22 -0
  138. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +1 -0
  139. package/dist/src/yaml/steps/bitrise-apk-info.js +144 -0
  140. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +5 -0
  141. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +1 -0
  142. package/dist/src/yaml/steps/bitrise-apk-info.test.js +331 -0
  143. package/dist/src/yaml/steps/bitrise-slack.d.ts +49 -0
  144. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +1 -0
  145. package/dist/src/yaml/steps/bitrise-slack.js +280 -0
  146. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +5 -0
  147. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +1 -0
  148. package/dist/src/yaml/steps/bitrise-slack.test.js +484 -0
  149. package/dist/src/yaml/steps/bitrise-ssh.d.ts +27 -0
  150. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +1 -0
  151. package/dist/src/yaml/steps/bitrise-ssh.js +134 -0
  152. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +5 -0
  153. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +1 -0
  154. package/dist/src/yaml/steps/bitrise-ssh.test.js +205 -0
  155. package/dist/src/yaml/steps/cache.d.ts +52 -0
  156. package/dist/src/yaml/steps/cache.d.ts.map +1 -0
  157. package/dist/src/yaml/steps/cache.js +352 -0
  158. package/dist/src/yaml/steps/fastlane.d.ts +27 -0
  159. package/dist/src/yaml/steps/fastlane.d.ts.map +1 -0
  160. package/dist/src/yaml/steps/fastlane.js +79 -0
  161. package/dist/src/yaml/steps/file.d.ts +27 -0
  162. package/dist/src/yaml/steps/file.d.ts.map +1 -0
  163. package/dist/src/yaml/steps/file.js +35 -0
  164. package/dist/src/yaml/steps/flutter.d.ts +63 -0
  165. package/dist/src/yaml/steps/flutter.d.ts.map +1 -0
  166. package/dist/src/yaml/steps/flutter.js +215 -0
  167. package/dist/src/yaml/steps/git-clone.d.ts +26 -0
  168. package/dist/src/yaml/steps/git-clone.d.ts.map +1 -0
  169. package/dist/src/yaml/steps/git-clone.js +111 -0
  170. package/dist/src/yaml/steps/google-play-deploy.d.ts +37 -0
  171. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +1 -0
  172. package/dist/src/yaml/steps/google-play-deploy.js +193 -0
  173. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +5 -0
  174. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +1 -0
  175. package/dist/src/yaml/steps/google-play-deploy.test.js +310 -0
  176. package/dist/src/yaml/steps/index.d.ts +10 -0
  177. package/dist/src/yaml/steps/index.d.ts.map +1 -0
  178. package/dist/src/yaml/steps/index.js +1361 -0
  179. package/dist/src/yaml/steps/ios-deps.d.ts +43 -0
  180. package/dist/src/yaml/steps/ios-deps.d.ts.map +1 -0
  181. package/dist/src/yaml/steps/ios-deps.js +141 -0
  182. package/dist/src/yaml/steps/ios-deps.test.d.ts +5 -0
  183. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +1 -0
  184. package/dist/src/yaml/steps/ios-deps.test.js +90 -0
  185. package/dist/src/yaml/steps/ios-signing.d.ts +31 -0
  186. package/dist/src/yaml/steps/ios-signing.d.ts.map +1 -0
  187. package/dist/src/yaml/steps/ios-signing.js +144 -0
  188. package/dist/src/yaml/steps/ios-version.d.ts +47 -0
  189. package/dist/src/yaml/steps/ios-version.d.ts.map +1 -0
  190. package/dist/src/yaml/steps/ios-version.js +151 -0
  191. package/dist/src/yaml/steps/linting.d.ts +47 -0
  192. package/dist/src/yaml/steps/linting.d.ts.map +1 -0
  193. package/dist/src/yaml/steps/linting.js +148 -0
  194. package/dist/src/yaml/steps/phase2.test.d.ts +6 -0
  195. package/dist/src/yaml/steps/phase2.test.d.ts.map +1 -0
  196. package/dist/src/yaml/steps/phase2.test.js +197 -0
  197. package/dist/src/yaml/steps/phase3.test.d.ts +5 -0
  198. package/dist/src/yaml/steps/phase3.test.d.ts.map +1 -0
  199. package/dist/src/yaml/steps/phase3.test.js +144 -0
  200. package/dist/src/yaml/steps/phase4.test.d.ts +5 -0
  201. package/dist/src/yaml/steps/phase4.test.d.ts.map +1 -0
  202. package/dist/src/yaml/steps/phase4.test.js +166 -0
  203. package/dist/src/yaml/steps/phase5.test.d.ts +6 -0
  204. package/dist/src/yaml/steps/phase5.test.d.ts.map +1 -0
  205. package/dist/src/yaml/steps/phase5.test.js +263 -0
  206. package/dist/src/yaml/steps/registry.d.ts +88 -0
  207. package/dist/src/yaml/steps/registry.d.ts.map +1 -0
  208. package/dist/src/yaml/steps/registry.js +125 -0
  209. package/dist/src/yaml/steps/registry.test.d.ts +5 -0
  210. package/dist/src/yaml/steps/registry.test.d.ts.map +1 -0
  211. package/dist/src/yaml/steps/registry.test.js +235 -0
  212. package/dist/src/yaml/steps/release.d.ts +50 -0
  213. package/dist/src/yaml/steps/release.d.ts.map +1 -0
  214. package/dist/src/yaml/steps/release.js +154 -0
  215. package/dist/src/yaml/steps/script.d.ts +23 -0
  216. package/dist/src/yaml/steps/script.d.ts.map +1 -0
  217. package/dist/src/yaml/steps/script.js +63 -0
  218. package/dist/src/yaml/steps/spec-validation.test.d.ts +6 -0
  219. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +1 -0
  220. package/dist/src/yaml/steps/spec-validation.test.js +130 -0
  221. package/dist/src/yaml/steps/steps.test.d.ts +6 -0
  222. package/dist/src/yaml/steps/steps.test.d.ts.map +1 -0
  223. package/dist/src/yaml/steps/steps.test.js +505 -0
  224. package/dist/src/yaml/steps/test-config.d.ts +3 -0
  225. package/dist/src/yaml/steps/test-config.d.ts.map +1 -0
  226. package/dist/src/yaml/steps/test-config.js +17 -0
  227. package/dist/src/yaml/steps/xcode-new.test.d.ts +5 -0
  228. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +1 -0
  229. package/dist/src/yaml/steps/xcode-new.test.js +211 -0
  230. package/dist/src/yaml/steps/xcode.d.ts +222 -0
  231. package/dist/src/yaml/steps/xcode.d.ts.map +1 -0
  232. package/dist/src/yaml/steps/xcode.js +999 -0
  233. package/dist/src/yaml/types.d.ts +68 -0
  234. package/dist/src/yaml/types.d.ts.map +1 -0
  235. package/dist/src/yaml/types.js +5 -0
  236. package/dist/src/yaml/validation-types.d.ts +96 -0
  237. package/dist/src/yaml/validation-types.d.ts.map +1 -0
  238. package/dist/src/yaml/validation-types.js +8 -0
  239. package/dist/src/yaml/yaml-updater.d.ts +24 -0
  240. package/dist/src/yaml/yaml-updater.d.ts.map +1 -0
  241. package/dist/src/yaml/yaml-updater.js +128 -0
  242. package/package.json +16 -4
@@ -0,0 +1,47 @@
1
+ import { readFileSync, existsSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ const DEFAULT_CONFIG = {
4
+ artifactsDir: ".ci/artifacts",
5
+ interpreters: {
6
+ python: "python3",
7
+ ruby: "ruby",
8
+ node: "node",
9
+ bash: "/bin/bash",
10
+ },
11
+ maxConcurrentJobs: 1,
12
+ paths: {
13
+ buildsDir: ".ci-builds",
14
+ cacheDir: ".ci-cache",
15
+ peerCacheDir: "peer",
16
+ derivedDataDir: "~/Library/Developer/Xcode/DerivedData",
17
+ },
18
+ };
19
+ export function loadConfig(configPath) {
20
+ const path = configPath ?? resolve(process.cwd(), "ci.config.json");
21
+ if (!existsSync(path)) {
22
+ console.log("No config file found, using defaults");
23
+ return DEFAULT_CONFIG;
24
+ }
25
+ try {
26
+ const content = readFileSync(path, "utf-8");
27
+ const userConfig = JSON.parse(content);
28
+ return {
29
+ ...DEFAULT_CONFIG,
30
+ ...userConfig,
31
+ interpreters: {
32
+ ...DEFAULT_CONFIG.interpreters,
33
+ ...(userConfig.interpreters || {}),
34
+ },
35
+ paths: {
36
+ ...DEFAULT_CONFIG.paths,
37
+ ...(userConfig.paths || {}),
38
+ },
39
+ };
40
+ }
41
+ catch (error) {
42
+ console.error(`Failed to load config from ${path}:`, error);
43
+ console.log("Using default configuration");
44
+ return DEFAULT_CONFIG;
45
+ }
46
+ }
47
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CI Build Environment Variable Manager CLI
4
+ *
5
+ * Usage:
6
+ * envman init # Initialize empty envstore
7
+ * envman add --key KEY --value 'value' # Add variable with value
8
+ * envman add --key KEY --valuefile path # Add variable from file
9
+ * echo "value" | envman add --key KEY # Add variable from stdin
10
+ * envman add --key KEY -v 'val' --sensitive # Add sensitive variable (redacted in logs)
11
+ * envman run <command> # Run command with loaded env vars
12
+ * envman print [--format json|export|table] # Print all variables
13
+ * envman get KEY # Get single variable value
14
+ * envman unset KEY # Remove a variable
15
+ * envman clear # Clear all variables
16
+ *
17
+ * Environment:
18
+ * ENVMAN_ENVSTORE_PATH Path to the envstore file (default: .envstore.json)
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/envman/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,240 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CI Build Environment Variable Manager CLI
4
+ *
5
+ * Usage:
6
+ * envman init # Initialize empty envstore
7
+ * envman add --key KEY --value 'value' # Add variable with value
8
+ * envman add --key KEY --valuefile path # Add variable from file
9
+ * echo "value" | envman add --key KEY # Add variable from stdin
10
+ * envman add --key KEY -v 'val' --sensitive # Add sensitive variable (redacted in logs)
11
+ * envman run <command> # Run command with loaded env vars
12
+ * envman print [--format json|export|table] # Print all variables
13
+ * envman get KEY # Get single variable value
14
+ * envman unset KEY # Remove a variable
15
+ * envman clear # Clear all variables
16
+ *
17
+ * Environment:
18
+ * ENVMAN_ENVSTORE_PATH Path to the envstore file (default: .envstore.json)
19
+ */
20
+ import { parseArgs } from 'node:util';
21
+ import * as envman from './envman.js';
22
+ const HELP_TEXT = `
23
+ CI Build Environment Variable Manager (envman)
24
+
25
+ A tool for managing environment variables between CI/CD pipeline steps.
26
+ Scripts can register outputs that subsequent steps can use as environment variables.
27
+
28
+ USAGE:
29
+ envman <command> [options]
30
+
31
+ COMMANDS:
32
+ init Initialize an empty envstore file
33
+ add Add an environment variable
34
+ get <key> Get a single environment variable
35
+ unset <key> Remove an environment variable
36
+ print Print all environment variables
37
+ run <command> Run a command with loaded environment variables
38
+ clear Clear all environment variables
39
+
40
+ ADD OPTIONS:
41
+ --key, -k <name> Variable name (required)
42
+ --value, -v <value> Variable value
43
+ --valuefile, -f <path> Read value from file
44
+ --sensitive, -s Mark as sensitive (redacts in logs)
45
+ --skip-if-empty Skip if value is empty
46
+ --append, -a Append to existing value
47
+
48
+ PRINT OPTIONS:
49
+ --format <format> Output format: table (default), json, export
50
+
51
+ ENVIRONMENT:
52
+ ENVMAN_ENVSTORE_PATH Path to envstore file (default: .envstore.json)
53
+
54
+ EXAMPLES:
55
+ # Add a variable
56
+ envman add --key JAVA_HOME --value '/usr/lib/jvm/java-11'
57
+
58
+ # Add from file
59
+ envman add --key SSH_KEY --valuefile ~/.ssh/id_rsa --sensitive
60
+
61
+ # Add from stdin (useful for command output)
62
+ git rev-parse HEAD | envman add --key GIT_COMMIT
63
+
64
+ # Run a command with loaded variables
65
+ envman run gradle assembleRelease
66
+
67
+ # Export variables for shell sourcing
68
+ eval "$(envman print --format export)"
69
+
70
+ # View all variables
71
+ envman print
72
+ `;
73
+ async function main() {
74
+ const args = process.argv.slice(2);
75
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
76
+ console.log(HELP_TEXT);
77
+ process.exit(0);
78
+ }
79
+ const command = args[0];
80
+ const commandArgs = args.slice(1);
81
+ switch (command) {
82
+ case 'init':
83
+ handleInit();
84
+ break;
85
+ case 'add':
86
+ await handleAdd(commandArgs);
87
+ break;
88
+ case 'get':
89
+ handleGet(commandArgs);
90
+ break;
91
+ case 'unset':
92
+ handleUnset(commandArgs);
93
+ break;
94
+ case 'print':
95
+ handlePrint(commandArgs);
96
+ break;
97
+ case 'run':
98
+ await handleRun(commandArgs);
99
+ break;
100
+ case 'clear':
101
+ handleClear();
102
+ break;
103
+ default:
104
+ console.error(`Unknown command: ${command}`);
105
+ console.error('Run "envman --help" for usage information.');
106
+ process.exit(1);
107
+ }
108
+ }
109
+ function handleInit() {
110
+ const result = envman.init();
111
+ if (result.success) {
112
+ console.log(result.message);
113
+ }
114
+ else {
115
+ console.error(`Error: ${result.error}`);
116
+ process.exit(1);
117
+ }
118
+ }
119
+ async function handleAdd(args) {
120
+ const { values, positionals } = parseArgs({
121
+ args,
122
+ options: {
123
+ key: { type: 'string', short: 'k' },
124
+ value: { type: 'string', short: 'v' },
125
+ valuefile: { type: 'string', short: 'f' },
126
+ sensitive: { type: 'boolean', short: 's', default: false },
127
+ 'skip-if-empty': { type: 'boolean', default: false },
128
+ append: { type: 'boolean', short: 'a', default: false },
129
+ },
130
+ allowPositionals: true,
131
+ strict: false,
132
+ });
133
+ const key = values.key;
134
+ if (!key) {
135
+ console.error('Error: --key is required');
136
+ console.error('Usage: envman add --key KEY --value VALUE');
137
+ process.exit(1);
138
+ }
139
+ const value = values.value;
140
+ const valueFile = values.valuefile;
141
+ const sensitive = values.sensitive;
142
+ const skipIfEmpty = values['skip-if-empty'];
143
+ const append = values.append;
144
+ // Check if reading from stdin (no value or valuefile provided)
145
+ const isStdin = value === undefined && valueFile === undefined && !process.stdin.isTTY;
146
+ let result;
147
+ if (isStdin) {
148
+ result = await envman.addFromStdin(key, sensitive);
149
+ }
150
+ else {
151
+ result = envman.add({
152
+ key,
153
+ value,
154
+ valueFile,
155
+ sensitive,
156
+ skipIfEmpty,
157
+ append,
158
+ });
159
+ }
160
+ if (result.success) {
161
+ console.log(result.message);
162
+ }
163
+ else {
164
+ console.error(`Error: ${result.error}`);
165
+ process.exit(1);
166
+ }
167
+ }
168
+ function handleGet(args) {
169
+ if (args.length === 0) {
170
+ console.error('Error: Key is required');
171
+ console.error('Usage: envman get KEY');
172
+ process.exit(1);
173
+ }
174
+ const key = args[0];
175
+ const value = envman.get(key);
176
+ if (value === undefined) {
177
+ console.error(`Key '${key}' not found in envstore`);
178
+ process.exit(1);
179
+ }
180
+ console.log(value);
181
+ }
182
+ function handleUnset(args) {
183
+ if (args.length === 0) {
184
+ console.error('Error: Key is required');
185
+ console.error('Usage: envman unset KEY');
186
+ process.exit(1);
187
+ }
188
+ const key = args[0];
189
+ const result = envman.unset(key);
190
+ if (result.success) {
191
+ console.log(result.message);
192
+ }
193
+ else {
194
+ console.error(`Error: ${result.error}`);
195
+ process.exit(1);
196
+ }
197
+ }
198
+ function handlePrint(args) {
199
+ const { values } = parseArgs({
200
+ args,
201
+ options: {
202
+ format: { type: 'string', default: 'table' },
203
+ },
204
+ allowPositionals: false,
205
+ strict: false,
206
+ });
207
+ const format = values.format;
208
+ if (!['json', 'export', 'table'].includes(format)) {
209
+ console.error(`Invalid format: ${format}`);
210
+ console.error('Valid formats: json, export, table');
211
+ process.exit(1);
212
+ }
213
+ const output = envman.print(format);
214
+ console.log(output);
215
+ }
216
+ async function handleRun(args) {
217
+ if (args.length === 0) {
218
+ console.error('Error: Command is required');
219
+ console.error('Usage: envman run <command> [args...]');
220
+ process.exit(1);
221
+ }
222
+ const exitCode = await envman.run(args);
223
+ process.exit(exitCode);
224
+ }
225
+ function handleClear() {
226
+ const result = envman.clear();
227
+ if (result.success) {
228
+ console.log(result.message);
229
+ }
230
+ else {
231
+ console.error(`Error: ${result.error}`);
232
+ process.exit(1);
233
+ }
234
+ }
235
+ // Run main
236
+ main().catch((error) => {
237
+ console.error(`Error: ${error.message}`);
238
+ process.exit(1);
239
+ });
240
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1,83 @@
1
+ /**
2
+ * CI Build Environment Variable Manager (envman)
3
+ *
4
+ * A tool for managing environment variables between CI/CD pipeline steps.
5
+ * Similar to Bitrise's envman, this allows scripts to register outputs
6
+ * that subsequent steps can use as environment variables.
7
+ *
8
+ * Usage:
9
+ * envman add --key KEY --value 'value'
10
+ * envman add --key KEY --valuefile /path/to/file
11
+ * echo "value" | envman add --key KEY
12
+ * envman run <command>
13
+ * envman print [--format json|export]
14
+ * envman clear
15
+ */
16
+ import type { EnvStore, AddOptions, EnvmanResult } from './types.js';
17
+ export type { EnvmanResult } from './types.js';
18
+ /**
19
+ * Get the path to the envstore file
20
+ * Uses ENVMAN_ENVSTORE_PATH env var if set, otherwise defaults to .envstore.json in cwd
21
+ */
22
+ export declare function getStorePath(): string;
23
+ /**
24
+ * Load the environment store from disk
25
+ * Returns an empty store if file doesn't exist
26
+ */
27
+ export declare function loadStore(storePath?: string): EnvStore;
28
+ /**
29
+ * Save the environment store to disk
30
+ */
31
+ export declare function saveStore(store: EnvStore, storePath?: string): void;
32
+ /**
33
+ * Create an empty environment store
34
+ */
35
+ export declare function createEmptyStore(): EnvStore;
36
+ /**
37
+ * Initialize a new envstore file
38
+ * Creates an empty store at the specified path (or default)
39
+ */
40
+ export declare function init(storePath?: string): EnvmanResult;
41
+ /**
42
+ * Add an environment variable to the store
43
+ */
44
+ export declare function add(options: AddOptions, storePath?: string): EnvmanResult;
45
+ /**
46
+ * Add an environment variable from stdin
47
+ */
48
+ export declare function addFromStdin(key: string, sensitive?: boolean, storePath?: string): Promise<EnvmanResult>;
49
+ /**
50
+ * Get all environment variables from the store as a Record
51
+ */
52
+ export declare function getAll(storePath?: string): Record<string, string>;
53
+ /**
54
+ * Get a single environment variable from the store
55
+ */
56
+ export declare function get(key: string, storePath?: string): string | undefined;
57
+ /**
58
+ * Print environment variables in various formats
59
+ */
60
+ export declare function print(format?: 'json' | 'export' | 'table', storePath?: string): string;
61
+ /**
62
+ * Run a command with the environment variables from the store
63
+ */
64
+ export declare function run(command: string[], storePath?: string): Promise<number>;
65
+ /**
66
+ * Clear the environment store
67
+ */
68
+ export declare function clear(storePath?: string): EnvmanResult;
69
+ /**
70
+ * Unset (remove) a specific environment variable from the store
71
+ */
72
+ export declare function unset(key: string, storePath?: string): EnvmanResult;
73
+ /**
74
+ * Generate a bash script that sources the envstore
75
+ * This can be prepended to step scripts to load environment variables
76
+ */
77
+ export declare function generateSourceScript(storePath?: string): string;
78
+ /**
79
+ * Export all environment variables to the current process
80
+ * Useful for programmatic usage
81
+ */
82
+ export declare function exportToProcess(storePath?: string): void;
83
+ //# sourceMappingURL=envman.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envman.d.ts","sourceRoot":"","sources":["../../../src/envman/envman.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGrE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAsBtD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAGnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAK3C;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAiBrD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAsFzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwB9G;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASjE;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIvE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,MAAM,GAAE,MAAM,GAAG,QAAQ,GAAG,OAAiB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CA4C/F;AAED;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkChF;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAsBtD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAkBnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAqB/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAKxD"}