indraq_cli 1.3.0 → 1.5.5

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 (86) hide show
  1. package/README.md +1082 -657
  2. package/dist/cli/create-program.d.ts.map +1 -1
  3. package/dist/cli/create-program.js +24 -6
  4. package/dist/cli/create-program.js.map +1 -1
  5. package/dist/cli/doctor.command.d.ts.map +1 -1
  6. package/dist/cli/doctor.command.js +23 -0
  7. package/dist/cli/doctor.command.js.map +1 -1
  8. package/dist/modules/configure/configure.command.d.ts.map +1 -0
  9. package/dist/modules/configure/configure.command.js +116 -0
  10. package/dist/modules/configure/configure.command.js.map +1 -0
  11. package/dist/modules/deploy/commands/build.command.d.ts +2 -2
  12. package/dist/modules/deploy/commands/build.command.d.ts.map +1 -1
  13. package/dist/modules/deploy/commands/build.command.js +45 -16
  14. package/dist/modules/deploy/commands/build.command.js.map +1 -1
  15. package/dist/modules/deploy/commands/configure-docker.command.d.ts +2 -0
  16. package/dist/modules/deploy/commands/configure-docker.command.d.ts.map +1 -0
  17. package/dist/modules/deploy/commands/configure-docker.command.js +169 -0
  18. package/dist/modules/deploy/commands/configure-docker.command.js.map +1 -0
  19. package/dist/modules/deploy/config/docker-config.d.ts +21 -0
  20. package/dist/modules/deploy/config/docker-config.d.ts.map +1 -0
  21. package/dist/modules/deploy/config/docker-config.js +187 -0
  22. package/dist/modules/deploy/config/docker-config.js.map +1 -0
  23. package/dist/modules/deploy/index.d.ts.map +1 -1
  24. package/dist/modules/deploy/index.js +9 -26
  25. package/dist/modules/deploy/index.js.map +1 -1
  26. package/dist/modules/mobile/commands/build-mobile.command.d.ts +11 -0
  27. package/dist/modules/mobile/commands/build-mobile.command.d.ts.map +1 -0
  28. package/dist/modules/mobile/commands/build-mobile.command.js +189 -0
  29. package/dist/modules/mobile/commands/build-mobile.command.js.map +1 -0
  30. package/dist/modules/mobile/commands/configure-mobile.command.d.ts +8 -0
  31. package/dist/modules/mobile/commands/configure-mobile.command.d.ts.map +1 -0
  32. package/dist/modules/mobile/commands/configure-mobile.command.js +353 -0
  33. package/dist/modules/mobile/commands/configure-mobile.command.js.map +1 -0
  34. package/dist/modules/mobile/config/mobile-config.d.ts +43 -0
  35. package/dist/modules/mobile/config/mobile-config.d.ts.map +1 -0
  36. package/dist/modules/mobile/config/mobile-config.js +211 -0
  37. package/dist/modules/mobile/config/mobile-config.js.map +1 -0
  38. package/dist/modules/mobile/index.d.ts +3 -0
  39. package/dist/modules/mobile/index.d.ts.map +1 -0
  40. package/dist/modules/mobile/index.js +50 -0
  41. package/dist/modules/mobile/index.js.map +1 -0
  42. package/dist/modules/mobile/services/jenkins-mobile.service.d.ts +31 -0
  43. package/dist/modules/mobile/services/jenkins-mobile.service.d.ts.map +1 -0
  44. package/dist/modules/mobile/services/jenkins-mobile.service.js +344 -0
  45. package/dist/modules/mobile/services/jenkins-mobile.service.js.map +1 -0
  46. package/dist/modules/mobile/services/project.service.d.ts +11 -0
  47. package/dist/modules/mobile/services/project.service.d.ts.map +1 -0
  48. package/dist/modules/mobile/services/project.service.js +73 -0
  49. package/dist/modules/mobile/services/project.service.js.map +1 -0
  50. package/dist/modules/mobile/services/source-bundle.service.d.ts +9 -0
  51. package/dist/modules/mobile/services/source-bundle.service.d.ts.map +1 -0
  52. package/dist/modules/mobile/services/source-bundle.service.js +114 -0
  53. package/dist/modules/mobile/services/source-bundle.service.js.map +1 -0
  54. package/dist/modules/mobile/services/version-sync.service.d.ts +7 -0
  55. package/dist/modules/mobile/services/version-sync.service.d.ts.map +1 -0
  56. package/dist/modules/mobile/services/version-sync.service.js +88 -0
  57. package/dist/modules/mobile/services/version-sync.service.js.map +1 -0
  58. package/dist/shared/config/config-files.d.ts +5 -0
  59. package/dist/shared/config/config-files.d.ts.map +1 -0
  60. package/dist/shared/config/config-files.js +88 -0
  61. package/dist/shared/config/config-files.js.map +1 -0
  62. package/dist/shared/config/jenkins-config.d.ts +36 -0
  63. package/dist/shared/config/jenkins-config.d.ts.map +1 -0
  64. package/dist/shared/config/jenkins-config.js +164 -0
  65. package/dist/shared/config/jenkins-config.js.map +1 -0
  66. package/dist/shared/jenkins/configure-jenkins.d.ts +7 -0
  67. package/dist/shared/jenkins/configure-jenkins.d.ts.map +1 -0
  68. package/dist/shared/jenkins/configure-jenkins.js +84 -0
  69. package/dist/shared/jenkins/configure-jenkins.js.map +1 -0
  70. package/dist/{modules/deploy/services → shared/jenkins}/jenkins.service.d.ts +5 -4
  71. package/dist/shared/jenkins/jenkins.service.d.ts.map +1 -0
  72. package/dist/{modules/deploy/services → shared/jenkins}/jenkins.service.js +43 -89
  73. package/dist/shared/jenkins/jenkins.service.js.map +1 -0
  74. package/dist/shared/runtime/runtime-doctor.js.map +1 -1
  75. package/package.json +10 -5
  76. package/templates/jenkins/Jenkinsfile-Mobile-App +759 -0
  77. package/dist/modules/deploy/commands/configure.command.d.ts.map +0 -1
  78. package/dist/modules/deploy/commands/configure.command.js +0 -404
  79. package/dist/modules/deploy/commands/configure.command.js.map +0 -1
  80. package/dist/modules/deploy/config/deployment-config.d.ts +0 -29
  81. package/dist/modules/deploy/config/deployment-config.d.ts.map +0 -1
  82. package/dist/modules/deploy/config/deployment-config.js +0 -164
  83. package/dist/modules/deploy/config/deployment-config.js.map +0 -1
  84. package/dist/modules/deploy/services/jenkins.service.d.ts.map +0 -1
  85. package/dist/modules/deploy/services/jenkins.service.js.map +0 -1
  86. /package/dist/modules/{deploy/commands → configure}/configure.command.d.ts +0 -0
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRootEnvFile = exports.createSourceBundle = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_os_1 = require("node:os");
7
+ const node_path_1 = require("node:path");
8
+ const node_child_process_1 = require("node:child_process");
9
+ const EXCLUDED_TOP_LEVEL = new Set([
10
+ '.git',
11
+ '.indraq',
12
+ 'node_modules',
13
+ 'coverage',
14
+ 'dist',
15
+ 'build',
16
+ '.expo',
17
+ '.gradle',
18
+ '.turbo',
19
+ '.cache',
20
+ '.idea',
21
+ '.vscode'
22
+ ]);
23
+ const normalizeRelative = (value) => value.split(node_path_1.sep).join('/').replace(/^\.\//, '');
24
+ const shouldIncludeRelativePath = (value) => {
25
+ const normalized = normalizeRelative(value);
26
+ if (!normalized || normalized === '.')
27
+ return true;
28
+ const segments = normalized.split('/');
29
+ if (EXCLUDED_TOP_LEVEL.has(segments[0]))
30
+ return false;
31
+ if (normalized === '.env' || normalized.startsWith('.env.'))
32
+ return false;
33
+ if (/\.(apk|aab|ipa|tgz|tar\.gz)$/i.test(normalized))
34
+ return false;
35
+ const wrapped = `/${normalized}/`;
36
+ const blockedFragments = [
37
+ '/node_modules/',
38
+ '/android/.gradle/',
39
+ '/android/app/build/',
40
+ '/android/build/',
41
+ '/ios/Pods/',
42
+ '/ios/build/',
43
+ '/.expo/',
44
+ '/coverage/'
45
+ ];
46
+ return !blockedFragments.some((fragment) => wrapped.includes(fragment));
47
+ };
48
+ const assertTarAvailable = () => {
49
+ const result = (0, node_child_process_1.spawnSync)('tar', ['--version'], {
50
+ encoding: 'utf8',
51
+ stdio: ['ignore', 'pipe', 'pipe']
52
+ });
53
+ if (result.error || result.status !== 0) {
54
+ throw new Error('`tar` is required to package the local mobile source tree. Modern Windows, macOS, and Linux normally include it. Install/enable tar and make sure it is available in PATH.');
55
+ }
56
+ };
57
+ const sha256File = async (path) => new Promise((resolve, reject) => {
58
+ const hash = (0, node_crypto_1.createHash)('sha256');
59
+ const stream = (0, node_fs_1.createReadStream)(path);
60
+ stream.on('data', (chunk) => hash.update(chunk));
61
+ stream.on('error', reject);
62
+ stream.on('end', () => resolve(hash.digest('hex')));
63
+ });
64
+ const createSourceBundle = async (root, projectId) => {
65
+ if (!(0, node_fs_1.existsSync)(root))
66
+ throw new Error(`Project root not found: ${root}`);
67
+ assertTarAvailable();
68
+ const tempRoot = (0, node_path_1.join)((0, node_os_1.tmpdir)(), 'indraq-cli', 'mobile');
69
+ const workDirectory = (0, node_path_1.join)(tempRoot, `${projectId}-${Date.now()}`);
70
+ const stagingDirectory = (0, node_path_1.join)(workDirectory, 'source');
71
+ const archivePath = (0, node_path_1.join)(workDirectory, 'source.tar.gz');
72
+ (0, node_fs_1.mkdirSync)(stagingDirectory, { recursive: true });
73
+ try {
74
+ (0, node_fs_1.cpSync)(root, stagingDirectory, {
75
+ recursive: true,
76
+ force: true,
77
+ errorOnExist: false,
78
+ preserveTimestamps: false,
79
+ filter: (sourcePath) => {
80
+ if (sourcePath === root)
81
+ return true;
82
+ return shouldIncludeRelativePath((0, node_path_1.relative)(root, sourcePath));
83
+ }
84
+ });
85
+ const result = (0, node_child_process_1.spawnSync)('tar', ['-czf', archivePath, '-C', stagingDirectory, '.'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] });
86
+ if (result.error || result.status !== 0) {
87
+ const details = (result.stderr || result.stdout || result.error?.message || 'unknown tar error').trim();
88
+ throw new Error(`Unable to create mobile source archive with tar: ${details}`);
89
+ }
90
+ const sizeBytes = (0, node_fs_1.statSync)(archivePath).size;
91
+ if (sizeBytes <= 0)
92
+ throw new Error('Generated mobile source bundle is empty.');
93
+ const sha256 = await sha256File(archivePath);
94
+ // Staging can be much larger than the final archive, so remove it before upload.
95
+ (0, node_fs_1.rmSync)(stagingDirectory, { recursive: true, force: true });
96
+ return {
97
+ archivePath,
98
+ sha256,
99
+ sizeBytes,
100
+ cleanup: () => (0, node_fs_1.rmSync)(workDirectory, { recursive: true, force: true })
101
+ };
102
+ }
103
+ catch (error) {
104
+ (0, node_fs_1.rmSync)(workDirectory, { recursive: true, force: true });
105
+ throw error;
106
+ }
107
+ };
108
+ exports.createSourceBundle = createSourceBundle;
109
+ const getRootEnvFile = (root) => {
110
+ const path = (0, node_path_1.join)(root, '.env');
111
+ return (0, node_fs_1.existsSync)(path) ? path : null;
112
+ };
113
+ exports.getRootEnvFile = getRootEnvFile;
114
+ //# sourceMappingURL=source-bundle.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-bundle.service.js","sourceRoot":"","sources":["../../../../src/modules/mobile/services/source-bundle.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { MobileProjectType } from '../config/mobile-config';
2
+ export interface VersionSyncResult {
3
+ updatedFiles: string[];
4
+ warnings: string[];
5
+ }
6
+ export declare const syncMobileVersionIntoProject: (root: string, projectType: MobileProjectType, version: string, versionCode: number) => VersionSyncResult;
7
+ //# sourceMappingURL=version-sync.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-sync.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile/services/version-sync.service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAwED,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,EACZ,aAAa,iBAAiB,EAC9B,SAAS,MAAM,EACf,aAAa,MAAM,KAClB,iBAKF,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncMobileVersionIntoProject = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const syncExpoAppJson = (root, version, versionCode, result) => {
7
+ const appJsonPath = (0, node_path_1.join)(root, 'app.json');
8
+ if (!(0, node_fs_1.existsSync)(appJsonPath)) {
9
+ const dynamicConfig = ['app.config.js', 'app.config.ts', 'app.config.mjs', 'app.config.cjs']
10
+ .find((name) => (0, node_fs_1.existsSync)((0, node_path_1.join)(root, name)));
11
+ result.warnings.push(dynamicConfig
12
+ ? `${dynamicConfig} is dynamic, so IndraQ did not rewrite it. .indraq/mobile.json remains the source of truth and Jenkins applies the Android version during the build.`
13
+ : 'app.json was not found. .indraq/mobile.json remains the source of truth and Jenkins applies the Android version during the build.');
14
+ return;
15
+ }
16
+ try {
17
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(appJsonPath, 'utf8'));
18
+ const expo = parsed.expo && typeof parsed.expo === 'object' ? parsed.expo : {};
19
+ const android = expo.android && typeof expo.android === 'object' ? expo.android : {};
20
+ expo.version = version;
21
+ android.versionCode = versionCode;
22
+ expo.android = android;
23
+ parsed.expo = expo;
24
+ (0, node_fs_1.writeFileSync)(appJsonPath, `${JSON.stringify(parsed, null, 2)}\n`, 'utf8');
25
+ result.updatedFiles.push('app.json');
26
+ }
27
+ catch (error) {
28
+ const message = error instanceof Error ? error.message : 'unknown error';
29
+ result.warnings.push(`Could not update app.json: ${message}. Jenkins will still apply the requested Android version.`);
30
+ }
31
+ };
32
+ const syncReactNativeGradle = (root, version, versionCode, result) => {
33
+ const candidates = [
34
+ (0, node_path_1.join)(root, 'android', 'app', 'build.gradle'),
35
+ (0, node_path_1.join)(root, 'android', 'app', 'build.gradle.kts')
36
+ ];
37
+ const gradlePath = candidates.find((candidate) => (0, node_fs_1.existsSync)(candidate));
38
+ if (!gradlePath) {
39
+ result.warnings.push('android/app/build.gradle(.kts) was not found. Jenkins will validate/apply the Android version during the build.');
40
+ return;
41
+ }
42
+ const original = (0, node_fs_1.readFileSync)(gradlePath, 'utf8');
43
+ let codeUpdated = false;
44
+ let nameUpdated = false;
45
+ const lines = original.split(/\r?\n/).map((line) => {
46
+ if (!codeUpdated) {
47
+ let match = line.match(/^(\s*versionCode\s*=\s*).+$/);
48
+ if (match?.[1]) {
49
+ codeUpdated = true;
50
+ return `${match[1]}${versionCode}`;
51
+ }
52
+ match = line.match(/^(\s*versionCode\s+).+$/);
53
+ if (match?.[1]) {
54
+ codeUpdated = true;
55
+ return `${match[1]}${versionCode}`;
56
+ }
57
+ }
58
+ if (!nameUpdated) {
59
+ let match = line.match(/^(\s*versionName\s*=\s*).+$/);
60
+ if (match?.[1]) {
61
+ nameUpdated = true;
62
+ return `${match[1]}"${version}"`;
63
+ }
64
+ match = line.match(/^(\s*versionName\s+).+$/);
65
+ if (match?.[1]) {
66
+ nameUpdated = true;
67
+ return `${match[1]}"${version}"`;
68
+ }
69
+ }
70
+ return line;
71
+ });
72
+ if (!codeUpdated || !nameUpdated) {
73
+ result.warnings.push(`Could not safely rewrite ${gradlePath.endsWith('.kts') ? 'android/app/build.gradle.kts' : 'android/app/build.gradle'} because versionName/versionCode are not simple literals. Jenkins will still apply/validate them during the build.`);
74
+ return;
75
+ }
76
+ (0, node_fs_1.writeFileSync)(gradlePath, lines.join('\n'), 'utf8');
77
+ result.updatedFiles.push(gradlePath.endsWith('.kts') ? 'android/app/build.gradle.kts' : 'android/app/build.gradle');
78
+ };
79
+ const syncMobileVersionIntoProject = (root, projectType, version, versionCode) => {
80
+ const result = { updatedFiles: [], warnings: [] };
81
+ if (projectType === 'expo')
82
+ syncExpoAppJson(root, version, versionCode, result);
83
+ else
84
+ syncReactNativeGradle(root, version, versionCode, result);
85
+ return result;
86
+ };
87
+ exports.syncMobileVersionIntoProject = syncMobileVersionIntoProject;
88
+ //# sourceMappingURL=version-sync.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-sync.service.js","sourceRoot":"","sources":["../../../../src/modules/mobile/services/version-sync.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const getIndraqConfigDirectory: () => string;
2
+ export declare const getIndraqConfigPath: (filename: string) => string;
3
+ export declare const ensureIndraqConfigDirectory: () => string;
4
+ export declare const isIndraqConfigIgnoredByGit: (filename: string) => boolean;
5
+ //# sourceMappingURL=config-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-files.d.ts","sourceRoot":"","sources":["../../../src/shared/config/config-files.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,QAAO,MAAwC,CAAC;AAErF,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,KAAG,MACX,CAAC;AAmD7C,eAAO,MAAM,2BAA2B,QAAO,MAoB9C,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,UAAU,MAAM,KAAG,OAM7D,CAAC"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isIndraqConfigIgnoredByGit = exports.ensureIndraqConfigDirectory = exports.getIndraqConfigPath = exports.getIndraqConfigDirectory = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const node_child_process_1 = require("node:child_process");
7
+ const getIndraqConfigDirectory = () => (0, node_path_1.join)(process.cwd(), '.indraq');
8
+ exports.getIndraqConfigDirectory = getIndraqConfigDirectory;
9
+ const getIndraqConfigPath = (filename) => (0, node_path_1.join)((0, exports.getIndraqConfigDirectory)(), filename);
10
+ exports.getIndraqConfigPath = getIndraqConfigPath;
11
+ const SHARED_CONFIG_GITIGNORE = `# IndraQ project configuration is intentionally shared through Git.
12
+ # Machine-specific bindings and secrets must never be committed.
13
+ *.local.json
14
+ *.secret
15
+ auth
16
+ jenkins-cli.jar
17
+ `;
18
+ const ROOT_GITIGNORE_MARKER = '# IndraQ CLI shared project configuration';
19
+ const ROOT_GITIGNORE_BLOCK = `
20
+ ${ROOT_GITIGNORE_MARKER}
21
+ # These files are safe and intentionally shared with the project.
22
+ !.indraq/
23
+ !.indraq/.gitignore
24
+ !.indraq/jenkins.json
25
+ !.indraq/docker.json
26
+ !.indraq/mobile.json
27
+ `;
28
+ const ensureRootGitignoreAllowsSharedConfig = () => {
29
+ const gitCheck = (0, node_child_process_1.spawnSync)('git', ['rev-parse', '--is-inside-work-tree'], {
30
+ cwd: process.cwd(),
31
+ encoding: 'utf8',
32
+ stdio: ['ignore', 'pipe', 'ignore']
33
+ });
34
+ if (gitCheck.status !== 0 || gitCheck.stdout.trim() !== 'true')
35
+ return;
36
+ const rootGitignore = (0, node_path_1.join)(process.cwd(), '.gitignore');
37
+ let content = '';
38
+ try {
39
+ content = (0, node_fs_1.existsSync)(rootGitignore) ? (0, node_fs_1.readFileSync)(rootGitignore, 'utf8') : '';
40
+ }
41
+ catch {
42
+ return;
43
+ }
44
+ if (content.includes(ROOT_GITIGNORE_MARKER))
45
+ return;
46
+ // Earlier IndraQ CLI releases recommended ignoring the whole .indraq directory.
47
+ // Appending explicit re-includes makes the safe shared config trackable while the
48
+ // .indraq/.gitignore file continues to exclude machine-local bindings/secrets.
49
+ const separator = content.length > 0 && !content.endsWith('\n') ? '\n' : '';
50
+ try {
51
+ (0, node_fs_1.writeFileSync)(rootGitignore, `${content}${separator}${ROOT_GITIGNORE_BLOCK.replace(/^\n/, '')}`, 'utf8');
52
+ }
53
+ catch {
54
+ // The save methods still perform git check-ignore and will warn if the repository
55
+ // prevents the shared configuration from being tracked.
56
+ }
57
+ };
58
+ const ensureIndraqConfigDirectory = () => {
59
+ const directory = (0, exports.getIndraqConfigDirectory)();
60
+ (0, node_fs_1.mkdirSync)(directory, { recursive: true });
61
+ const gitignore = (0, node_path_1.join)(directory, '.gitignore');
62
+ const legacyContent = '*\n!.gitignore\n';
63
+ if (!(0, node_fs_1.existsSync)(gitignore)) {
64
+ (0, node_fs_1.writeFileSync)(gitignore, SHARED_CONFIG_GITIGNORE, 'utf8');
65
+ }
66
+ else {
67
+ try {
68
+ if ((0, node_fs_1.readFileSync)(gitignore, 'utf8') === legacyContent) {
69
+ (0, node_fs_1.writeFileSync)(gitignore, SHARED_CONFIG_GITIGNORE, 'utf8');
70
+ }
71
+ }
72
+ catch {
73
+ // Saving the actual config will surface any filesystem problem.
74
+ }
75
+ }
76
+ ensureRootGitignoreAllowsSharedConfig();
77
+ return directory;
78
+ };
79
+ exports.ensureIndraqConfigDirectory = ensureIndraqConfigDirectory;
80
+ const isIndraqConfigIgnoredByGit = (filename) => {
81
+ const result = (0, node_child_process_1.spawnSync)('git', ['check-ignore', '-q', '--', `.indraq/${filename}`], {
82
+ cwd: process.cwd(),
83
+ stdio: 'ignore'
84
+ });
85
+ return result.status === 0;
86
+ };
87
+ exports.isIndraqConfigIgnoredByGit = isIndraqConfigIgnoredByGit;
88
+ //# sourceMappingURL=config-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-files.js","sourceRoot":"","sources":["../../../src/shared/config/config-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export type JenkinsConnectionMode = 'webSocket' | 'http';
2
+ export type JenkinsEnvironmentName = 'dev' | 'prod';
3
+ export interface JenkinsEndpointConfig {
4
+ url: string;
5
+ connectionMode: JenkinsConnectionMode;
6
+ }
7
+ export interface JenkinsLocalBinding {
8
+ serverId: string;
9
+ }
10
+ export interface JenkinsResolvedConfig extends JenkinsEndpointConfig, JenkinsLocalBinding {
11
+ }
12
+ export interface JenkinsConnectionsConfig {
13
+ schemaVersion: 3;
14
+ environments: {
15
+ dev: JenkinsEndpointConfig | null;
16
+ prod: JenkinsEndpointConfig | null;
17
+ };
18
+ }
19
+ export interface JenkinsLocalBindingsConfig {
20
+ schemaVersion: 1;
21
+ environments: {
22
+ dev: JenkinsLocalBinding | null;
23
+ prod: JenkinsLocalBinding | null;
24
+ };
25
+ }
26
+ export declare const createDefaultJenkinsConnectionsConfig: () => JenkinsConnectionsConfig;
27
+ export declare const createDefaultJenkinsLocalBindingsConfig: () => JenkinsLocalBindingsConfig;
28
+ export declare const getJenkinsConnectionsConfigPath: () => string;
29
+ export declare const getJenkinsLocalBindingsConfigPath: () => string;
30
+ export declare const saveJenkinsConnectionsConfig: (config: JenkinsConnectionsConfig) => void;
31
+ export declare const saveJenkinsLocalBindingsConfig: (config: JenkinsLocalBindingsConfig) => void;
32
+ export declare const getJenkinsLocalBindingsConfig: () => JenkinsLocalBindingsConfig;
33
+ export declare const getJenkinsConnectionsConfig: () => JenkinsConnectionsConfig;
34
+ export declare const getResolvedJenkinsConnection: (environment: JenkinsEnvironmentName) => JenkinsResolvedConfig | null;
35
+ export declare const getMobileJenkinsConnection: () => JenkinsResolvedConfig | null;
36
+ //# sourceMappingURL=jenkins-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jenkins-config.d.ts","sourceRoot":"","sources":["../../../src/shared/config/jenkins-config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,MAAM,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB,EAAE,mBAAmB;CAAG;AAE5F,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE;QACZ,GAAG,EAAE,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,EAAE,qBAAqB,GAAG,IAAI,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE;QACZ,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;KAClC,CAAC;CACH;AA6FD,eAAO,MAAM,qCAAqC,QAAO,wBAGvD,CAAC;AAEH,eAAO,MAAM,uCAAuC,QAAO,0BAGzD,CAAC;AAEH,eAAO,MAAM,+BAA+B,QAAO,MAA8C,CAAC;AAClG,eAAO,MAAM,iCAAiC,QAAO,MAAoD,CAAC;AAE1G,eAAO,MAAM,4BAA4B,GAAI,QAAQ,wBAAwB,KAAG,IAM/E,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,QAAQ,0BAA0B,KAAG,IAGnF,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAO,0BAgBhD,CAAC;AAqCF,eAAO,MAAM,2BAA2B,QAAO,wBAa9C,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,aAAa,sBAAsB,KAClC,qBAAqB,GAAG,IAK1B,CAAC;AAEF,eAAO,MAAM,0BAA0B,QAAO,qBAAqB,GAAG,IAChC,CAAC"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMobileJenkinsConnection = exports.getResolvedJenkinsConnection = exports.getJenkinsConnectionsConfig = exports.getJenkinsLocalBindingsConfig = exports.saveJenkinsLocalBindingsConfig = exports.saveJenkinsConnectionsConfig = exports.getJenkinsLocalBindingsConfigPath = exports.getJenkinsConnectionsConfigPath = exports.createDefaultJenkinsLocalBindingsConfig = exports.createDefaultJenkinsConnectionsConfig = void 0;
4
+ const node_fs_1 = require("node:fs");
5
+ const config_files_1 = require("./config-files");
6
+ const CONFIG_FILENAME = 'jenkins.json';
7
+ const LOCAL_CONFIG_FILENAME = 'jenkins.local.json';
8
+ const isConnectionMode = (value) => value === 'webSocket' || value === 'http';
9
+ const isEndpoint = (value) => {
10
+ if (!value || typeof value !== 'object')
11
+ return false;
12
+ const candidate = value;
13
+ return typeof candidate.url === 'string' && isConnectionMode(candidate.connectionMode);
14
+ };
15
+ const isLegacyConnection = (value) => {
16
+ if (!value || typeof value !== 'object')
17
+ return false;
18
+ const candidate = value;
19
+ return (typeof candidate.url === 'string' &&
20
+ typeof candidate.username === 'string' &&
21
+ typeof candidate.serverId === 'string' &&
22
+ isConnectionMode(candidate.connectionMode));
23
+ };
24
+ const isNullableEndpoint = (value) => value === null || isEndpoint(value);
25
+ const isNullableLegacy = (value) => value === null || isLegacyConnection(value);
26
+ const isCurrent = (value) => {
27
+ if (!value || typeof value !== 'object')
28
+ return false;
29
+ const candidate = value;
30
+ return (candidate.schemaVersion === 3 &&
31
+ !!candidate.environments &&
32
+ isNullableEndpoint(candidate.environments.dev) &&
33
+ isNullableEndpoint(candidate.environments.prod));
34
+ };
35
+ const isV2 = (value) => {
36
+ if (!value || typeof value !== 'object')
37
+ return false;
38
+ const candidate = value;
39
+ return (candidate.schemaVersion === 2 &&
40
+ !!candidate.environments &&
41
+ isNullableLegacy(candidate.environments.dev) &&
42
+ isNullableLegacy(candidate.environments.prod));
43
+ };
44
+ const isV1 = (value) => {
45
+ if (!value || typeof value !== 'object')
46
+ return false;
47
+ const candidate = value;
48
+ return (candidate.schemaVersion === 1 &&
49
+ !!candidate.docker &&
50
+ isNullableLegacy(candidate.docker.dev) &&
51
+ isNullableLegacy(candidate.docker.prod) &&
52
+ isNullableLegacy(candidate.mobile));
53
+ };
54
+ const endpointFromLegacy = (legacy) => legacy ? { url: legacy.url, connectionMode: legacy.connectionMode } : null;
55
+ const bindingFromLegacy = (legacy) => legacy ? { serverId: legacy.serverId } : null;
56
+ const createDefaultJenkinsConnectionsConfig = () => ({
57
+ schemaVersion: 3,
58
+ environments: { dev: null, prod: null }
59
+ });
60
+ exports.createDefaultJenkinsConnectionsConfig = createDefaultJenkinsConnectionsConfig;
61
+ const createDefaultJenkinsLocalBindingsConfig = () => ({
62
+ schemaVersion: 1,
63
+ environments: { dev: null, prod: null }
64
+ });
65
+ exports.createDefaultJenkinsLocalBindingsConfig = createDefaultJenkinsLocalBindingsConfig;
66
+ const getJenkinsConnectionsConfigPath = () => (0, config_files_1.getIndraqConfigPath)(CONFIG_FILENAME);
67
+ exports.getJenkinsConnectionsConfigPath = getJenkinsConnectionsConfigPath;
68
+ const getJenkinsLocalBindingsConfigPath = () => (0, config_files_1.getIndraqConfigPath)(LOCAL_CONFIG_FILENAME);
69
+ exports.getJenkinsLocalBindingsConfigPath = getJenkinsLocalBindingsConfigPath;
70
+ const saveJenkinsConnectionsConfig = (config) => {
71
+ (0, config_files_1.ensureIndraqConfigDirectory)();
72
+ (0, node_fs_1.writeFileSync)((0, exports.getJenkinsConnectionsConfigPath)(), `${JSON.stringify(config, null, 2)}\n`, 'utf8');
73
+ if ((0, config_files_1.isIndraqConfigIgnoredByGit)(CONFIG_FILENAME)) {
74
+ process.stderr.write('⚠ .indraq/jenkins.json is ignored by Git. Remove the .indraq ignore rule if you want Jenkins URLs to survive clones.\n');
75
+ }
76
+ };
77
+ exports.saveJenkinsConnectionsConfig = saveJenkinsConnectionsConfig;
78
+ const saveJenkinsLocalBindingsConfig = (config) => {
79
+ (0, config_files_1.ensureIndraqConfigDirectory)();
80
+ (0, node_fs_1.writeFileSync)((0, exports.getJenkinsLocalBindingsConfigPath)(), `${JSON.stringify(config, null, 2)}\n`, 'utf8');
81
+ };
82
+ exports.saveJenkinsLocalBindingsConfig = saveJenkinsLocalBindingsConfig;
83
+ const getJenkinsLocalBindingsConfig = () => {
84
+ const path = (0, exports.getJenkinsLocalBindingsConfigPath)();
85
+ if (!(0, node_fs_1.existsSync)(path))
86
+ return (0, exports.createDefaultJenkinsLocalBindingsConfig)();
87
+ try {
88
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
89
+ if (parsed.schemaVersion !== 1 ||
90
+ !parsed.environments ||
91
+ ![parsed.environments.dev, parsed.environments.prod].every((item) => item === null || (typeof item === 'object' && typeof item.serverId === 'string')))
92
+ throw new Error('invalid structure');
93
+ return parsed;
94
+ }
95
+ catch (error) {
96
+ const message = error instanceof Error ? error.message : 'unknown error';
97
+ throw new Error(`Unable to read ${path}: ${message}`);
98
+ }
99
+ };
100
+ exports.getJenkinsLocalBindingsConfig = getJenkinsLocalBindingsConfig;
101
+ const migrateLegacy = (dev, prod) => {
102
+ const shared = {
103
+ schemaVersion: 3,
104
+ environments: {
105
+ dev: endpointFromLegacy(dev),
106
+ prod: endpointFromLegacy(prod)
107
+ }
108
+ };
109
+ const local = {
110
+ schemaVersion: 1,
111
+ environments: {
112
+ dev: bindingFromLegacy(dev),
113
+ prod: bindingFromLegacy(prod)
114
+ }
115
+ };
116
+ (0, exports.saveJenkinsConnectionsConfig)(shared);
117
+ (0, exports.saveJenkinsLocalBindingsConfig)(local);
118
+ return shared;
119
+ };
120
+ const migrateLegacyDeployJenkins = () => {
121
+ const legacyPath = (0, config_files_1.getIndraqConfigPath)('deploy.json');
122
+ if (!(0, node_fs_1.existsSync)(legacyPath))
123
+ return null;
124
+ try {
125
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(legacyPath, 'utf8'));
126
+ if (parsed.schemaVersion !== 2 || !isLegacyConnection(parsed.jenkins))
127
+ return null;
128
+ return migrateLegacy(parsed.jenkins, parsed.jenkins);
129
+ }
130
+ catch {
131
+ return null;
132
+ }
133
+ };
134
+ const getJenkinsConnectionsConfig = () => {
135
+ const path = (0, exports.getJenkinsConnectionsConfigPath)();
136
+ if (!(0, node_fs_1.existsSync)(path))
137
+ return migrateLegacyDeployJenkins() ?? (0, exports.createDefaultJenkinsConnectionsConfig)();
138
+ try {
139
+ const parsed = JSON.parse((0, node_fs_1.readFileSync)(path, 'utf8'));
140
+ if (isCurrent(parsed))
141
+ return parsed;
142
+ if (isV2(parsed))
143
+ return migrateLegacy(parsed.environments.dev, parsed.environments.prod);
144
+ if (isV1(parsed))
145
+ return migrateLegacy(parsed.docker.dev, parsed.docker.prod ?? parsed.mobile);
146
+ throw new Error('invalid structure');
147
+ }
148
+ catch (error) {
149
+ const message = error instanceof Error ? error.message : 'unknown error';
150
+ throw new Error(`Unable to read ${path}: ${message}`);
151
+ }
152
+ };
153
+ exports.getJenkinsConnectionsConfig = getJenkinsConnectionsConfig;
154
+ const getResolvedJenkinsConnection = (environment) => {
155
+ const endpoint = (0, exports.getJenkinsConnectionsConfig)().environments[environment];
156
+ const binding = (0, exports.getJenkinsLocalBindingsConfig)().environments[environment];
157
+ if (!endpoint || !binding)
158
+ return null;
159
+ return { ...endpoint, ...binding };
160
+ };
161
+ exports.getResolvedJenkinsConnection = getResolvedJenkinsConnection;
162
+ const getMobileJenkinsConnection = () => (0, exports.getResolvedJenkinsConnection)('prod');
163
+ exports.getMobileJenkinsConnection = getMobileJenkinsConnection;
164
+ //# sourceMappingURL=jenkins-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jenkins-config.js","sourceRoot":"","sources":["../../../src/shared/config/jenkins-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { JenkinsEndpointConfig, JenkinsLocalBinding } from '../config/jenkins-config';
2
+ export interface ConfiguredJenkinsConnection {
3
+ endpoint: JenkinsEndpointConfig;
4
+ binding: JenkinsLocalBinding;
5
+ }
6
+ export declare const promptForJenkinsConnection: (currentEndpoint: JenkinsEndpointConfig | null, currentBinding: JenkinsLocalBinding | null, label: string) => Promise<ConfiguredJenkinsConnection>;
7
+ //# sourceMappingURL=configure-jenkins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-jenkins.d.ts","sourceRoot":"","sources":["../../../src/shared/jenkins/configure-jenkins.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EAEpB,MAAM,0BAA0B,CAAC;AAiBlC,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAOD,eAAO,MAAM,0BAA0B,GACrC,iBAAiB,qBAAqB,GAAG,IAAI,EAC7C,gBAAgB,mBAAmB,GAAG,IAAI,EAC1C,OAAO,MAAM,KACZ,OAAO,CAAC,2BAA2B,CA4DrC,CAAC"}