@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.
- 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 +47 -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 +58 -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 +352 -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 +505 -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 +17 -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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript interfaces for Bitrise-compatible YAML pipeline structure
|
|
3
|
+
*/
|
|
4
|
+
export type Platform = 'macos' | 'linux' | 'windows';
|
|
5
|
+
export type MachineType = 'standard' | 'performance';
|
|
6
|
+
export interface YAMLEnvVar {
|
|
7
|
+
[key: string]: string;
|
|
8
|
+
}
|
|
9
|
+
export interface YAMLCIBuildMeta {
|
|
10
|
+
stack?: string;
|
|
11
|
+
machine_type?: MachineType;
|
|
12
|
+
machine_type_id?: string;
|
|
13
|
+
platform?: 'ios' | 'android';
|
|
14
|
+
}
|
|
15
|
+
export interface YAMLMeta {
|
|
16
|
+
'cibuild.io'?: YAMLCIBuildMeta;
|
|
17
|
+
'bitrise.io'?: YAMLCIBuildMeta;
|
|
18
|
+
platform?: Platform;
|
|
19
|
+
}
|
|
20
|
+
export interface YAMLStepInputs {
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}
|
|
23
|
+
export interface YAMLStep {
|
|
24
|
+
[stepNameWithVersion: string]: {
|
|
25
|
+
title?: string;
|
|
26
|
+
inputs?: YAMLStepInputs;
|
|
27
|
+
run_if?: string;
|
|
28
|
+
is_always_run?: boolean;
|
|
29
|
+
is_skippable?: boolean;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface YAMLWorkflow {
|
|
33
|
+
description?: string;
|
|
34
|
+
envs?: YAMLEnvVar[];
|
|
35
|
+
steps: YAMLStep[];
|
|
36
|
+
}
|
|
37
|
+
export interface YAMLApp {
|
|
38
|
+
envs?: YAMLEnvVar[];
|
|
39
|
+
}
|
|
40
|
+
export interface YAMLTrigger {
|
|
41
|
+
push_branch?: string;
|
|
42
|
+
pull_request_source_branch?: string;
|
|
43
|
+
workflow?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface YAMLPipeline {
|
|
46
|
+
format_version: string;
|
|
47
|
+
meta?: YAMLMeta;
|
|
48
|
+
app?: YAMLApp;
|
|
49
|
+
workflows: {
|
|
50
|
+
[name: string]: YAMLWorkflow;
|
|
51
|
+
};
|
|
52
|
+
trigger_map?: YAMLTrigger[];
|
|
53
|
+
}
|
|
54
|
+
export interface ParsedStep {
|
|
55
|
+
name: string;
|
|
56
|
+
version?: string;
|
|
57
|
+
title?: string;
|
|
58
|
+
inputs: YAMLStepInputs;
|
|
59
|
+
run_if?: string;
|
|
60
|
+
is_always_run?: boolean;
|
|
61
|
+
is_skippable?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export interface PlatformInfo {
|
|
64
|
+
platform: Platform;
|
|
65
|
+
stack?: string;
|
|
66
|
+
machineType?: MachineType;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/yaml/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAGrD,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAGD,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAGD,MAAM,WAAW,QAAQ;IACvB,CAAC,mBAAmB,EAAE,MAAM,GAAG;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;CACH;AAGD,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAGD,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC;CACrB;AAGD,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC;CAC7B;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for step pre-execution validation
|
|
3
|
+
*
|
|
4
|
+
* This module defines types for validating pipeline steps BEFORE execution.
|
|
5
|
+
* All validation checks are read-only and safe to run on the user's machine.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* When a validation check should run
|
|
9
|
+
* - 'pre-execution': Check can run before pipeline starts (commands, env vars)
|
|
10
|
+
* - 'runtime': Check must wait until step executes (files created by earlier steps)
|
|
11
|
+
*/
|
|
12
|
+
export type ValidationTiming = 'pre-execution' | 'runtime';
|
|
13
|
+
/**
|
|
14
|
+
* Severity levels for validation issues
|
|
15
|
+
*/
|
|
16
|
+
export type ValidationSeverity = 'error' | 'warning' | 'info';
|
|
17
|
+
/**
|
|
18
|
+
* Category of validation requirement
|
|
19
|
+
*/
|
|
20
|
+
export type ValidationCategory = 'command' | 'environment' | 'file' | 'directory' | 'input' | 'dependency' | 'platform';
|
|
21
|
+
/**
|
|
22
|
+
* Result of a single validation check
|
|
23
|
+
*/
|
|
24
|
+
export interface ValidationCheckResult {
|
|
25
|
+
passed: boolean;
|
|
26
|
+
message?: string;
|
|
27
|
+
details?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* A single validation requirement
|
|
31
|
+
*/
|
|
32
|
+
export interface ValidationRequirement {
|
|
33
|
+
/** Category of requirement */
|
|
34
|
+
category: ValidationCategory;
|
|
35
|
+
/** Name of the requirement (e.g., 'xcodebuild', 'JAVA_HOME', 'gradlew') */
|
|
36
|
+
name: string;
|
|
37
|
+
/** Human-readable description */
|
|
38
|
+
description: string;
|
|
39
|
+
/** When should this be validated */
|
|
40
|
+
timing: ValidationTiming;
|
|
41
|
+
/** Is this a hard requirement or a warning? */
|
|
42
|
+
severity: ValidationSeverity;
|
|
43
|
+
/**
|
|
44
|
+
* How to check this requirement (only for 'pre-execution' timing)
|
|
45
|
+
* This function must be READ-ONLY and not modify any state
|
|
46
|
+
*/
|
|
47
|
+
check?: () => Promise<ValidationCheckResult>;
|
|
48
|
+
/** Hint on how to fix if validation fails */
|
|
49
|
+
hint?: string;
|
|
50
|
+
/** If this is a dependency, which step provides it? */
|
|
51
|
+
providedBy?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A validation issue found during pre-execution checks
|
|
55
|
+
*/
|
|
56
|
+
export interface ValidationIssue {
|
|
57
|
+
/** Step that has the issue */
|
|
58
|
+
stepName: string;
|
|
59
|
+
/** Step index in the workflow */
|
|
60
|
+
stepIndex: number;
|
|
61
|
+
/** The requirement that failed */
|
|
62
|
+
requirement: ValidationRequirement;
|
|
63
|
+
/** Result of the check */
|
|
64
|
+
result: ValidationCheckResult;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Complete validation result for a workflow
|
|
68
|
+
*/
|
|
69
|
+
export interface WorkflowValidationResult {
|
|
70
|
+
/** Did all validations pass? */
|
|
71
|
+
valid: boolean;
|
|
72
|
+
/** All issues found (empty if valid) */
|
|
73
|
+
issues: ValidationIssue[];
|
|
74
|
+
/** Issues grouped by step */
|
|
75
|
+
issuesByStep: Map<string, ValidationIssue[]>;
|
|
76
|
+
/** Issues grouped by category */
|
|
77
|
+
issuesByCategory: Map<ValidationCategory, ValidationIssue[]>;
|
|
78
|
+
/** Count of errors/warnings/info */
|
|
79
|
+
counts: {
|
|
80
|
+
errors: number;
|
|
81
|
+
warnings: number;
|
|
82
|
+
info: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Output that a step provides to subsequent steps
|
|
87
|
+
*/
|
|
88
|
+
export interface StepOutput {
|
|
89
|
+
/** Name of the output (e.g., 'CIBUILD_SOURCE_DIR') */
|
|
90
|
+
name: string;
|
|
91
|
+
/** Type of output */
|
|
92
|
+
type: 'environment' | 'file' | 'directory';
|
|
93
|
+
/** Description */
|
|
94
|
+
description: string;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=validation-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-types.d.ts","sourceRoot":"","sources":["../../../src/yaml/validation-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,aAAa,GACb,MAAM,GACN,WAAW,GACX,OAAO,GACP,YAAY,GACZ,UAAU,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,QAAQ,EAAE,kBAAkB,CAAC;IAE7B,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IAEb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IAEpB,oCAAoC;IACpC,MAAM,EAAE,gBAAgB,CAAC;IAEzB,+CAA+C;IAC/C,QAAQ,EAAE,kBAAkB,CAAC;IAE7B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAE7C,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAEjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,kCAAkC;IAClC,WAAW,EAAE,qBAAqB,CAAC;IAEnC,0BAA0B;IAC1B,MAAM,EAAE,qBAAqB,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,gCAAgC;IAChC,KAAK,EAAE,OAAO,CAAC;IAEf,wCAAwC;IACxC,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B,6BAA6B;IAC7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7C,iCAAiC;IACjC,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7D,oCAAoC;IACpC,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IAEb,qBAAqB;IACrB,IAAI,EAAE,aAAa,GAAG,MAAM,GAAG,WAAW,CAAC;IAE3C,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for step pre-execution validation
|
|
3
|
+
*
|
|
4
|
+
* This module defines types for validating pipeline steps BEFORE execution.
|
|
5
|
+
* All validation checks are read-only and safe to run on the user's machine.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=validation-types.js.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML file updater for adding secret references
|
|
3
|
+
* Automatically updates YAML files with secret references after user input
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* YAML updater for adding environment variable secret references
|
|
7
|
+
*/
|
|
8
|
+
export declare class YAMLUpdater {
|
|
9
|
+
private yamlFilePath;
|
|
10
|
+
constructor(yamlFilePath: string);
|
|
11
|
+
/**
|
|
12
|
+
* Add a secret reference to the YAML file's app.envs section
|
|
13
|
+
* @param varName Environment variable name
|
|
14
|
+
* @param secretId Secret ID from secrets manager
|
|
15
|
+
* @returns True if updated successfully
|
|
16
|
+
*/
|
|
17
|
+
addSecretReference(varName: string, secretId: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Get all secret references in the YAML file
|
|
20
|
+
* @returns Map of variable names to secret IDs
|
|
21
|
+
*/
|
|
22
|
+
getSecretReferences(): Map<string, string>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=yaml-updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-updater.d.ts","sourceRoot":"","sources":["../../../src/yaml/yaml-updater.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,YAAY,EAAE,MAAM;IAIhC;;;;;OAKG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAoE9D;;;OAGG;IACH,mBAAmB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;CAiD3C"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YAML file updater for adding secret references
|
|
3
|
+
* Automatically updates YAML files with secret references after user input
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as yaml from 'js-yaml';
|
|
7
|
+
/**
|
|
8
|
+
* YAML updater for adding environment variable secret references
|
|
9
|
+
*/
|
|
10
|
+
export class YAMLUpdater {
|
|
11
|
+
yamlFilePath;
|
|
12
|
+
constructor(yamlFilePath) {
|
|
13
|
+
this.yamlFilePath = yamlFilePath;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Add a secret reference to the YAML file's app.envs section
|
|
17
|
+
* @param varName Environment variable name
|
|
18
|
+
* @param secretId Secret ID from secrets manager
|
|
19
|
+
* @returns True if updated successfully
|
|
20
|
+
*/
|
|
21
|
+
addSecretReference(varName, secretId) {
|
|
22
|
+
try {
|
|
23
|
+
// Read the YAML file
|
|
24
|
+
const content = fs.readFileSync(this.yamlFilePath, 'utf-8');
|
|
25
|
+
const doc = yaml.load(content);
|
|
26
|
+
// Get or create the app.envs section
|
|
27
|
+
if (!doc.app) {
|
|
28
|
+
doc.app = { envs: [] };
|
|
29
|
+
}
|
|
30
|
+
if (!doc.app.envs) {
|
|
31
|
+
doc.app.envs = [];
|
|
32
|
+
}
|
|
33
|
+
// Check if this variable already exists in envs
|
|
34
|
+
let variableExists = false;
|
|
35
|
+
if (Array.isArray(doc.app.envs)) {
|
|
36
|
+
for (let i = 0; i < doc.app.envs.length; i++) {
|
|
37
|
+
const item = doc.app.envs[i];
|
|
38
|
+
if (typeof item === 'object' && item !== null) {
|
|
39
|
+
const keys = Object.keys(item);
|
|
40
|
+
if (keys.includes(varName)) {
|
|
41
|
+
// Update existing variable with secret reference
|
|
42
|
+
doc.app.envs[i] = { [varName]: `$SECRET{${secretId}}` };
|
|
43
|
+
variableExists = true;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// If variable doesn't exist, add it
|
|
50
|
+
if (!variableExists) {
|
|
51
|
+
doc.app.envs.push({ [varName]: `$SECRET{${secretId}}` });
|
|
52
|
+
}
|
|
53
|
+
// Add a comment at the beginning of the file if not present
|
|
54
|
+
let updatedContent = yaml.dump(doc, {
|
|
55
|
+
indent: 2,
|
|
56
|
+
lineWidth: -1, // Don't wrap lines
|
|
57
|
+
noRefs: true,
|
|
58
|
+
});
|
|
59
|
+
// Add helpful comment about secret references if not present
|
|
60
|
+
if (!content.includes('Secret references use the format')) {
|
|
61
|
+
const comment = `# Secret references use the format $SECRET{secret_id}
|
|
62
|
+
# Values are stored in .cibuild-secrets.json (gitignored)
|
|
63
|
+
|
|
64
|
+
`;
|
|
65
|
+
// Insert comment before the YAML content
|
|
66
|
+
updatedContent = comment + updatedContent;
|
|
67
|
+
}
|
|
68
|
+
// Write the updated YAML back to file
|
|
69
|
+
fs.writeFileSync(this.yamlFilePath, updatedContent, 'utf-8');
|
|
70
|
+
console.log(`\n✅ Updated ${this.yamlFilePath} with secret reference for ${varName}`);
|
|
71
|
+
console.log(` Reference: $SECRET{${secretId}}`);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error(`❌ Error updating YAML file: ${error instanceof Error ? error.message : String(error)}`);
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get all secret references in the YAML file
|
|
81
|
+
* @returns Map of variable names to secret IDs
|
|
82
|
+
*/
|
|
83
|
+
getSecretReferences() {
|
|
84
|
+
const references = new Map();
|
|
85
|
+
try {
|
|
86
|
+
const content = fs.readFileSync(this.yamlFilePath, 'utf-8');
|
|
87
|
+
const doc = yaml.load(content);
|
|
88
|
+
// Look for secret references in app.envs
|
|
89
|
+
if (doc.app?.envs && Array.isArray(doc.app.envs)) {
|
|
90
|
+
for (const item of doc.app.envs) {
|
|
91
|
+
if (typeof item === 'object' && item !== null) {
|
|
92
|
+
for (const [key, value] of Object.entries(item)) {
|
|
93
|
+
if (typeof value === 'string' && value.startsWith('$SECRET{') && value.endsWith('}')) {
|
|
94
|
+
const secretId = value.slice(8, -1); // Extract ID from $SECRET{...}
|
|
95
|
+
references.set(key, secretId);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Also look in workflow-specific envs
|
|
102
|
+
if (doc.workflows && typeof doc.workflows === 'object') {
|
|
103
|
+
for (const workflow of Object.values(doc.workflows)) {
|
|
104
|
+
if (typeof workflow === 'object' && workflow !== null && 'envs' in workflow) {
|
|
105
|
+
const workflowEnvs = workflow.envs;
|
|
106
|
+
if (Array.isArray(workflowEnvs)) {
|
|
107
|
+
for (const item of workflowEnvs) {
|
|
108
|
+
if (typeof item === 'object' && item !== null) {
|
|
109
|
+
for (const [key, value] of Object.entries(item)) {
|
|
110
|
+
if (typeof value === 'string' && value.startsWith('$SECRET{') && value.endsWith('}')) {
|
|
111
|
+
const secretId = value.slice(8, -1);
|
|
112
|
+
references.set(key, secretId);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.warn(`Warning: Could not read secret references from YAML: ${error instanceof Error ? error.message : String(error)}`);
|
|
124
|
+
}
|
|
125
|
+
return references;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=yaml-updater.js.map
|
package/package.json
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@invarn/cibuild",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.18",
|
|
4
4
|
"description": "CI Build CLI — local pipeline orchestration and validation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.cjs",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/cli.cjs",
|
|
9
|
+
"./lib": {
|
|
10
|
+
"import": "./dist/src/lib.js",
|
|
11
|
+
"types": "./dist/src/lib.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
7
14
|
"bin": {
|
|
8
15
|
"ci": "dist/cli.cjs",
|
|
9
16
|
"cibuild": "dist/cli.cjs"
|
|
10
17
|
},
|
|
11
18
|
"files": [
|
|
12
|
-
"dist/cli.cjs"
|
|
19
|
+
"dist/cli.cjs",
|
|
20
|
+
"dist/src/**/*.js",
|
|
21
|
+
"dist/src/**/*.d.ts",
|
|
22
|
+
"dist/src/**/*.d.ts.map"
|
|
13
23
|
],
|
|
14
24
|
"scripts": {
|
|
15
25
|
"build": "./build.sh",
|
|
16
26
|
"build:npm": "node bundle.mjs",
|
|
17
27
|
"release": "node release.mjs",
|
|
18
|
-
"prepublishOnly": "node bundle.mjs",
|
|
28
|
+
"prepublishOnly": "./build.sh && node bundle.mjs",
|
|
19
29
|
"dev": "tsc --watch",
|
|
20
30
|
"clean": "rm -rf dist output artifacts",
|
|
21
31
|
"run": "./run.sh",
|
|
@@ -37,6 +47,9 @@
|
|
|
37
47
|
"url": "https://github.com/invarnhq/cibuild"
|
|
38
48
|
},
|
|
39
49
|
"homepage": "https://github.com/invarnhq/cibuild",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"js-yaml": "^4.1.0"
|
|
52
|
+
},
|
|
40
53
|
"devDependencies": {
|
|
41
54
|
"@types/jest": "^29.5.14",
|
|
42
55
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -46,7 +59,6 @@
|
|
|
46
59
|
"esbuild": "^0.27.3",
|
|
47
60
|
"javascript-obfuscator": "^5.3.0",
|
|
48
61
|
"jest": "^29.7.0",
|
|
49
|
-
"js-yaml": "^4.1.0",
|
|
50
62
|
"prompts": "^2.4.2",
|
|
51
63
|
"ts-jest": "^29.4.6",
|
|
52
64
|
"typescript": "^5.7.2"
|