@invarn/cibuild 1.3.16 → 1.3.17
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.cjs +1 -1
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +987 -0
- package/dist/src/commands/android-scanner.d.ts +32 -0
- package/dist/src/commands/android-scanner.d.ts.map +1 -0
- package/dist/src/commands/android-scanner.js +667 -0
- package/dist/src/commands/build.d.ts +5 -0
- package/dist/src/commands/build.d.ts.map +1 -0
- package/dist/src/commands/build.js +1096 -0
- package/dist/src/commands/edit.d.ts +3 -0
- package/dist/src/commands/edit.d.ts.map +1 -0
- package/dist/src/commands/edit.js +651 -0
- package/dist/src/commands/file-secret-collector.d.ts +37 -0
- package/dist/src/commands/file-secret-collector.d.ts.map +1 -0
- package/dist/src/commands/file-secret-collector.js +199 -0
- package/dist/src/commands/github-workflow.d.ts +5 -0
- package/dist/src/commands/github-workflow.d.ts.map +1 -0
- package/dist/src/commands/github-workflow.js +45 -0
- package/dist/src/commands/ios-scanner.d.ts +27 -0
- package/dist/src/commands/ios-scanner.d.ts.map +1 -0
- package/dist/src/commands/ios-scanner.js +337 -0
- package/dist/src/commands/reset.d.ts +7 -0
- package/dist/src/commands/reset.d.ts.map +1 -0
- package/dist/src/commands/reset.js +81 -0
- package/dist/src/commands/secrets-sync-workflow.d.ts +15 -0
- package/dist/src/commands/secrets-sync-workflow.d.ts.map +1 -0
- package/dist/src/commands/secrets-sync-workflow.js +255 -0
- package/dist/src/commands/secrets-upload.d.ts +21 -0
- package/dist/src/commands/secrets-upload.d.ts.map +1 -0
- package/dist/src/commands/secrets-upload.js +177 -0
- package/dist/src/commands/secrets-upload.test.d.ts +5 -0
- package/dist/src/commands/secrets-upload.test.d.ts.map +1 -0
- package/dist/src/commands/secrets-upload.test.js +60 -0
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +46 -0
- package/dist/src/envman/cli.d.ts +21 -0
- package/dist/src/envman/cli.d.ts.map +1 -0
- package/dist/src/envman/cli.js +240 -0
- package/dist/src/envman/envman.d.ts +83 -0
- package/dist/src/envman/envman.d.ts.map +1 -0
- package/dist/src/envman/envman.js +361 -0
- package/dist/src/envman/envman.test.d.ts +5 -0
- package/dist/src/envman/envman.test.d.ts.map +1 -0
- package/dist/src/envman/envman.test.js +236 -0
- package/dist/src/envman/index.d.ts +23 -0
- package/dist/src/envman/index.d.ts.map +1 -0
- package/dist/src/envman/index.js +23 -0
- package/dist/src/envman/types.d.ts +55 -0
- package/dist/src/envman/types.d.ts.map +1 -0
- package/dist/src/envman/types.js +12 -0
- package/dist/src/lib.d.ts +27 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +32 -0
- package/dist/src/pipeline.d.ts +3 -0
- package/dist/src/pipeline.d.ts.map +1 -0
- package/dist/src/pipeline.js +57 -0
- package/dist/src/runner.d.ts +17 -0
- package/dist/src/runner.d.ts.map +1 -0
- package/dist/src/runner.js +234 -0
- package/dist/src/types.d.ts +57 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/yaml/bitrise-compat.d.ts +65 -0
- package/dist/src/yaml/bitrise-compat.d.ts.map +1 -0
- package/dist/src/yaml/bitrise-compat.js +206 -0
- package/dist/src/yaml/bitrise-compat.test.d.ts +5 -0
- package/dist/src/yaml/bitrise-compat.test.d.ts.map +1 -0
- package/dist/src/yaml/bitrise-compat.test.js +347 -0
- package/dist/src/yaml/converter.d.ts +33 -0
- package/dist/src/yaml/converter.d.ts.map +1 -0
- package/dist/src/yaml/converter.js +222 -0
- package/dist/src/yaml/converter.test.d.ts +5 -0
- package/dist/src/yaml/converter.test.d.ts.map +1 -0
- package/dist/src/yaml/converter.test.js +348 -0
- package/dist/src/yaml/e2e.test.d.ts +6 -0
- package/dist/src/yaml/e2e.test.d.ts.map +1 -0
- package/dist/src/yaml/e2e.test.js +446 -0
- package/dist/src/yaml/env-resolver.d.ts +120 -0
- package/dist/src/yaml/env-resolver.d.ts.map +1 -0
- package/dist/src/yaml/env-resolver.js +405 -0
- package/dist/src/yaml/env-resolver.test.d.ts +5 -0
- package/dist/src/yaml/env-resolver.test.d.ts.map +1 -0
- package/dist/src/yaml/env-resolver.test.js +502 -0
- package/dist/src/yaml/interactive-prompts.d.ts +71 -0
- package/dist/src/yaml/interactive-prompts.d.ts.map +1 -0
- package/dist/src/yaml/interactive-prompts.js +258 -0
- package/dist/src/yaml/missing-env-handler.d.ts +45 -0
- package/dist/src/yaml/missing-env-handler.d.ts.map +1 -0
- package/dist/src/yaml/missing-env-handler.js +64 -0
- package/dist/src/yaml/parser.d.ts +33 -0
- package/dist/src/yaml/parser.d.ts.map +1 -0
- package/dist/src/yaml/parser.js +145 -0
- package/dist/src/yaml/pipeline-with-secrets.d.ts +25 -0
- package/dist/src/yaml/pipeline-with-secrets.d.ts.map +1 -0
- package/dist/src/yaml/pipeline-with-secrets.js +76 -0
- package/dist/src/yaml/platform-detector.d.ts +83 -0
- package/dist/src/yaml/platform-detector.d.ts.map +1 -0
- package/dist/src/yaml/platform-detector.js +188 -0
- package/dist/src/yaml/platform-detector.test.d.ts +5 -0
- package/dist/src/yaml/platform-detector.test.d.ts.map +1 -0
- package/dist/src/yaml/platform-detector.test.js +414 -0
- package/dist/src/yaml/preflight-validation.d.ts +40 -0
- package/dist/src/yaml/preflight-validation.d.ts.map +1 -0
- package/dist/src/yaml/preflight-validation.js +152 -0
- package/dist/src/yaml/secrets-manager.d.ts +77 -0
- package/dist/src/yaml/secrets-manager.d.ts.map +1 -0
- package/dist/src/yaml/secrets-manager.js +219 -0
- package/dist/src/yaml/step-validator.d.ts +54 -0
- package/dist/src/yaml/step-validator.d.ts.map +1 -0
- package/dist/src/yaml/step-validator.js +403 -0
- package/dist/src/yaml/steps/android-sign.d.ts +35 -0
- package/dist/src/yaml/steps/android-sign.d.ts.map +1 -0
- package/dist/src/yaml/steps/android-sign.js +147 -0
- package/dist/src/yaml/steps/android-version.d.ts +26 -0
- package/dist/src/yaml/steps/android-version.d.ts.map +1 -0
- package/dist/src/yaml/steps/android-version.js +128 -0
- package/dist/src/yaml/steps/android-version.test.d.ts +5 -0
- package/dist/src/yaml/steps/android-version.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/android-version.test.js +196 -0
- package/dist/src/yaml/steps/android.d.ts +95 -0
- package/dist/src/yaml/steps/android.d.ts.map +1 -0
- package/dist/src/yaml/steps/android.js +916 -0
- package/dist/src/yaml/steps/app-store-deploy.d.ts +48 -0
- package/dist/src/yaml/steps/app-store-deploy.d.ts.map +1 -0
- package/dist/src/yaml/steps/app-store-deploy.js +162 -0
- package/dist/src/yaml/steps/base.d.ts +238 -0
- package/dist/src/yaml/steps/base.d.ts.map +1 -0
- package/dist/src/yaml/steps/base.js +345 -0
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts +26 -0
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-android-tools.js +198 -0
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +5 -0
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-android-tools.test.js +280 -0
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts +22 -0
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-apk-info.js +144 -0
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +5 -0
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-apk-info.test.js +331 -0
- package/dist/src/yaml/steps/bitrise-slack.d.ts +49 -0
- package/dist/src/yaml/steps/bitrise-slack.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-slack.js +280 -0
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts +5 -0
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-slack.test.js +484 -0
- package/dist/src/yaml/steps/bitrise-ssh.d.ts +27 -0
- package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-ssh.js +134 -0
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +5 -0
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/bitrise-ssh.test.js +205 -0
- package/dist/src/yaml/steps/cache.d.ts +52 -0
- package/dist/src/yaml/steps/cache.d.ts.map +1 -0
- package/dist/src/yaml/steps/cache.js +351 -0
- package/dist/src/yaml/steps/fastlane.d.ts +27 -0
- package/dist/src/yaml/steps/fastlane.d.ts.map +1 -0
- package/dist/src/yaml/steps/fastlane.js +79 -0
- package/dist/src/yaml/steps/file.d.ts +27 -0
- package/dist/src/yaml/steps/file.d.ts.map +1 -0
- package/dist/src/yaml/steps/file.js +35 -0
- package/dist/src/yaml/steps/flutter.d.ts +63 -0
- package/dist/src/yaml/steps/flutter.d.ts.map +1 -0
- package/dist/src/yaml/steps/flutter.js +215 -0
- package/dist/src/yaml/steps/git-clone.d.ts +26 -0
- package/dist/src/yaml/steps/git-clone.d.ts.map +1 -0
- package/dist/src/yaml/steps/git-clone.js +111 -0
- package/dist/src/yaml/steps/google-play-deploy.d.ts +37 -0
- package/dist/src/yaml/steps/google-play-deploy.d.ts.map +1 -0
- package/dist/src/yaml/steps/google-play-deploy.js +193 -0
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts +5 -0
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/google-play-deploy.test.js +310 -0
- package/dist/src/yaml/steps/index.d.ts +10 -0
- package/dist/src/yaml/steps/index.d.ts.map +1 -0
- package/dist/src/yaml/steps/index.js +1361 -0
- package/dist/src/yaml/steps/ios-deps.d.ts +43 -0
- package/dist/src/yaml/steps/ios-deps.d.ts.map +1 -0
- package/dist/src/yaml/steps/ios-deps.js +141 -0
- package/dist/src/yaml/steps/ios-deps.test.d.ts +5 -0
- package/dist/src/yaml/steps/ios-deps.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/ios-deps.test.js +90 -0
- package/dist/src/yaml/steps/ios-signing.d.ts +31 -0
- package/dist/src/yaml/steps/ios-signing.d.ts.map +1 -0
- package/dist/src/yaml/steps/ios-signing.js +144 -0
- package/dist/src/yaml/steps/ios-version.d.ts +47 -0
- package/dist/src/yaml/steps/ios-version.d.ts.map +1 -0
- package/dist/src/yaml/steps/ios-version.js +151 -0
- package/dist/src/yaml/steps/linting.d.ts +47 -0
- package/dist/src/yaml/steps/linting.d.ts.map +1 -0
- package/dist/src/yaml/steps/linting.js +148 -0
- package/dist/src/yaml/steps/phase2.test.d.ts +6 -0
- package/dist/src/yaml/steps/phase2.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/phase2.test.js +197 -0
- package/dist/src/yaml/steps/phase3.test.d.ts +5 -0
- package/dist/src/yaml/steps/phase3.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/phase3.test.js +144 -0
- package/dist/src/yaml/steps/phase4.test.d.ts +5 -0
- package/dist/src/yaml/steps/phase4.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/phase4.test.js +166 -0
- package/dist/src/yaml/steps/phase5.test.d.ts +6 -0
- package/dist/src/yaml/steps/phase5.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/phase5.test.js +263 -0
- package/dist/src/yaml/steps/registry.d.ts +88 -0
- package/dist/src/yaml/steps/registry.d.ts.map +1 -0
- package/dist/src/yaml/steps/registry.js +125 -0
- package/dist/src/yaml/steps/registry.test.d.ts +5 -0
- package/dist/src/yaml/steps/registry.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/registry.test.js +235 -0
- package/dist/src/yaml/steps/release.d.ts +50 -0
- package/dist/src/yaml/steps/release.d.ts.map +1 -0
- package/dist/src/yaml/steps/release.js +154 -0
- package/dist/src/yaml/steps/script.d.ts +23 -0
- package/dist/src/yaml/steps/script.d.ts.map +1 -0
- package/dist/src/yaml/steps/script.js +63 -0
- package/dist/src/yaml/steps/spec-validation.test.d.ts +6 -0
- package/dist/src/yaml/steps/spec-validation.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/spec-validation.test.js +130 -0
- package/dist/src/yaml/steps/steps.test.d.ts +6 -0
- package/dist/src/yaml/steps/steps.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/steps.test.js +474 -0
- package/dist/src/yaml/steps/test-config.d.ts +3 -0
- package/dist/src/yaml/steps/test-config.d.ts.map +1 -0
- package/dist/src/yaml/steps/test-config.js +16 -0
- package/dist/src/yaml/steps/xcode-new.test.d.ts +5 -0
- package/dist/src/yaml/steps/xcode-new.test.d.ts.map +1 -0
- package/dist/src/yaml/steps/xcode-new.test.js +211 -0
- package/dist/src/yaml/steps/xcode.d.ts +222 -0
- package/dist/src/yaml/steps/xcode.d.ts.map +1 -0
- package/dist/src/yaml/steps/xcode.js +999 -0
- package/dist/src/yaml/types.d.ts +68 -0
- package/dist/src/yaml/types.d.ts.map +1 -0
- package/dist/src/yaml/types.js +5 -0
- package/dist/src/yaml/validation-types.d.ts +96 -0
- package/dist/src/yaml/validation-types.d.ts.map +1 -0
- package/dist/src/yaml/validation-types.js +8 -0
- package/dist/src/yaml/yaml-updater.d.ts +24 -0
- package/dist/src/yaml/yaml-updater.d.ts.map +1 -0
- package/dist/src/yaml/yaml-updater.js +128 -0
- package/package.json +16 -4
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
derivedDataDir: "~/Library/Developer/Xcode/DerivedData",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
export function loadConfig(configPath) {
|
|
19
|
+
const path = configPath ?? resolve(process.cwd(), "ci.config.json");
|
|
20
|
+
if (!existsSync(path)) {
|
|
21
|
+
console.log("No config file found, using defaults");
|
|
22
|
+
return DEFAULT_CONFIG;
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const content = readFileSync(path, "utf-8");
|
|
26
|
+
const userConfig = JSON.parse(content);
|
|
27
|
+
return {
|
|
28
|
+
...DEFAULT_CONFIG,
|
|
29
|
+
...userConfig,
|
|
30
|
+
interpreters: {
|
|
31
|
+
...DEFAULT_CONFIG.interpreters,
|
|
32
|
+
...(userConfig.interpreters || {}),
|
|
33
|
+
},
|
|
34
|
+
paths: {
|
|
35
|
+
...DEFAULT_CONFIG.paths,
|
|
36
|
+
...(userConfig.paths || {}),
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`Failed to load config from ${path}:`, error);
|
|
42
|
+
console.log("Using default configuration");
|
|
43
|
+
return DEFAULT_CONFIG;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# 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"}
|