indraq_cli 1.5.5 → 1.5.8

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/README.md CHANGED
@@ -18,7 +18,7 @@
18
18
  <img alt="Java 21" src="https://img.shields.io/badge/Java-21%20recommended-ED8B00?logo=openjdk&logoColor=white" />
19
19
  <img alt="TypeScript" src="https://img.shields.io/badge/TypeScript-strict-3178C6?logo=typescript&logoColor=white" />
20
20
  <img alt="License" src="https://img.shields.io/npm/l/indraq_cli" />
21
- <img alt="Version" src="https://img.shields.io/badge/version-1.5.5-264B63" />
21
+ <img alt="Version" src="https://img.shields.io/badge/version-1.5.8-264B63" />
22
22
  </p>
23
23
 
24
24
  > [!IMPORTANT]
@@ -30,7 +30,7 @@
30
30
 
31
31
  1. [What is IndraQ CLI?](#what-is-indraq-cli)
32
32
  2. [Explain it like I am new](#explain-it-like-i-am-new)
33
- 3. [What changed in v1.5.5?](#what-changed-in-v155)
33
+ 3. [What changed in v1.5.8?](#what-changed-in-v158)
34
34
  4. [Requirements](#requirements)
35
35
  5. [Install Java 21](#install-java-21)
36
36
  6. [Install IndraQ CLI](#install-indraq-cli)
@@ -59,6 +59,26 @@
59
59
 
60
60
  ---
61
61
 
62
+ ## v1.5.8 — Git-safe shared configuration
63
+
64
+ Project configuration is now intentionally shareable without exposing Jenkins credentials:
65
+
66
+ ```text
67
+ COMMIT / SHARE
68
+ .indraq/jenkins.json
69
+ .indraq/docker.json
70
+ .indraq/mobile.json
71
+
72
+ LOCAL ONLY / IGNORE
73
+ .indraq/jenkins.local.json
74
+ ```
75
+
76
+ IndraQ reuses an existing project `.gitignore`, adds `.indraq/jenkins.local.json` only when the exact rule is missing, and does not add an ignore-all `.indraq/` rule. Re-running configuration is idempotent, so the same ignore entry is never appended repeatedly. Actual Jenkins username/token/password data stays outside the repository under the user's home directory.
77
+
78
+ Docker deployments also continue to preserve Docker's existing GHCR credential store; IndraQ does not run `docker login ghcr.io` during deployment.
79
+
80
+ ---
81
+
62
82
  ## What is IndraQ CLI?
63
83
 
64
84
  IndraQ CLI is a program you install once on a developer computer and then use from **any project folder**.
@@ -145,19 +165,27 @@ You do **not** need to give Jenkins a Git URL, Git branch, app subdirectory, or
145
165
 
146
166
  ---
147
167
 
148
- ## What changed in v1.5.5?
168
+ ## What changed in v1.5.8?
169
+
170
+ v1.5.8 keeps the working Jenkins, mobile-build, GHCR, and complete-help behavior from v1.5.7 and tightens project configuration sharing.
149
171
 
150
- v1.5.5 keeps the Android versioning and Jenkins/Git workflow from v1.5.x and hardens Android builds created from Windows source snapshots.
172
+ ### Git-safe project configuration in v1.5.8
151
173
 
152
- This patch fixes the mobile Jenkinsfile Groovy escaping error, makes the mobile Jenkins job name deterministic, makes project configuration Git-shareable, keeps Jenkins login credentials machine-local, and makes Docker deployments send the exact manual deployment parameters expected by the Jenkins pipeline.
174
+ - IndraQ no longer adds `.indraq/` to the project `.gitignore`.
175
+ - Only `.indraq/jenkins.local.json` is added at the project root as the machine-local Jenkins binding.
176
+ - Existing `.gitignore` files are reused rather than replaced.
177
+ - Existing exact ignore entries are detected, so repeated configuration does not duplicate them.
178
+ - `.indraq/jenkins.json`, `.indraq/docker.json`, and `.indraq/mobile.json` remain available to Git and can be shared with another developer.
179
+ - Jenkins username/token/password remain outside the repo under `~/.indraq/jenkins/...`; another developer receives server/config metadata but not your login credential.
180
+ - Known old IndraQ-generated ignore-all rules are migrated carefully; unrelated user-authored Git rules are preserved.
153
181
 
154
182
 
155
- ### Jenkins-console-quality logs and server Gradle reuse in v1.5.5
183
+ ### Jenkins-console-quality logs and server Gradle reuse in v1.5.8
156
184
 
157
185
  - The terminal log streamer now reads Jenkins **`logText/progressiveHtml`**, the same progressive endpoint used by the classic Jenkins web console. Jenkins therefore removes/renders hidden `ConsoleNote` annotations before the CLI displays the text, so internal `ha:////...` payloads no longer pollute VS Code output.
158
186
  - HTML markup is converted back to plain terminal text while preserving usernames, timestamps, Pipeline lines, errors, and normal line spacing. `progressiveText` remains only as a compatibility fallback with explicit ConsoleNote filtering.
159
187
  - Failed mobile builds now end with a short **Key Jenkins error lines** summary plus the direct Jenkins build URL.
160
- - The mobile Jenkinsfile still normalizes Windows CRLF in `android/gradlew`, but v1.5.5 also restores the Jenkins server's shared Gradle cache at `$HOME/.gradle` instead of creating an empty per-project Gradle cache.
188
+ - The mobile Jenkinsfile still normalizes Windows CRLF in `android/gradlew`, but v1.5.8 also restores the Jenkins server's shared Gradle cache at `$HOME/.gradle` instead of creating an empty per-project Gradle cache.
161
189
  - Gradle execution prefers the exact cached project-wrapper distribution. If no exact wrapper distribution is cached, an installed Jenkins-server Gradle from the same major version can be reused. The project wrapper remains the final fallback.
162
190
  - If a wrapper download is genuinely necessary, the temporary Jenkins copy of `gradle-wrapper.properties` gets `networkTimeout=120000` (120 seconds) instead of failing at Gradle's short default timeout.
163
191
  - `FULL_RESET` no longer deletes Jenkins' shared Gradle cache. It clears project-local npm/Expo caches and generated Android state only.
@@ -260,14 +288,15 @@ Existing `.indraq/mobile.json` files are upgraded automatically. Project type, a
260
288
  |---|---|---|
261
289
  | **Node.js 22+** | Runs IndraQ CLI | `node --version` |
262
290
  | **npm** | Installs / updates the CLI | `npm --version` |
263
- | **Git** | Docker/GHCR authentication and optional source revision metadata | `git --version` |
291
+ | **Git** | GitHub identity/org discovery and optional source revision metadata | `git --version` |
292
+ | **Docker GHCR login** | Registry authentication used for image push | `docker login ghcr.io` (one-time, when needed) |
264
293
  | **Docker** | Docker deployment module | `docker --version` |
265
294
  | **Java** | Runs Jenkins CLI | `java -version` |
266
295
  | **tar** | Packages the local mobile source snapshot | `tar --version` |
267
296
  | **Jenkins account** | Starts Jenkins jobs | Jenkins username + API token |
268
297
 
269
298
  > [!TIP]
270
- > Node.js **24** is recommended for IndraQ developer machines, but v1.5.5 supports Node.js **22 and newer**.
299
+ > Node.js **24** is recommended for IndraQ developer machines, but v1.5.8 supports Node.js **22 and newer**.
271
300
 
272
301
  ### Jenkins mobile build machine
273
302
 
@@ -857,7 +886,7 @@ indraq build mobile:prod --output aab --profile clean --verbose --yes
857
886
 
858
887
  ## Android versioning and artifact names
859
888
 
860
- IndraQ v1.5.5 currently manages **Android** versioning only. iOS version/build-number management is intentionally out of scope for now.
889
+ IndraQ v1.5.8 currently manages **Android** versioning only. iOS version/build-number management is intentionally out of scope for now.
861
890
 
862
891
  ### What value does a build use?
863
892
 
@@ -1110,7 +1139,7 @@ Project-local configuration:
1110
1139
  The generated `.indraq/.gitignore` ignores **only machine-local files** such as `jenkins.local.json`. Shared project configuration is intentionally visible to Git.
1111
1140
 
1112
1141
  > [!IMPORTANT]
1113
- > Older IndraQ setups often ignored the whole `.indraq/` directory. v1.5.5 automatically appends safe re-include rules to the project root `.gitignore` so `jenkins.json`, `docker.json`, and `mobile.json` can be committed while `jenkins.local.json` remains ignored. Run `git status` after configuration and commit the three shared JSON files.
1142
+ > v1.5.8 never adds `.indraq/` as an ignore-all rule. If a project already has a root `.gitignore`, IndraQ reuses that same file and adds `.indraq/jenkins.local.json` only when that exact rule is missing. Re-running `indraq configure` does not duplicate the entry. Known ignore-all rules created by older IndraQ versions are migrated while unrelated user ignore rules are preserved.
1114
1143
 
1115
1144
  ### `jenkins.json`
1116
1145
 
@@ -1196,7 +1225,7 @@ Expected for this release:
1196
1225
  1.5.3
1197
1226
  ```
1198
1227
 
1199
- v1.5.5 automatically migrates older `.indraq/mobile.json` and Jenkins config layouts. Existing mobile environment/version settings are preserved. Older Jenkins username/server binding fields are split so only non-secret server metadata remains in tracked `jenkins.json`; the current machine binding is written to ignored `jenkins.local.json`.
1228
+ v1.5.8 automatically migrates older `.indraq/mobile.json` and Jenkins config layouts. Existing mobile environment/version settings are preserved. Older Jenkins username/server binding fields are split so only non-secret server metadata remains in tracked `jenkins.json`; the current machine binding is written to ignored `jenkins.local.json`.
1200
1229
 
1201
1230
  For projects coming from pre-versioning releases, Android version settings initialize as:
1202
1231
 
@@ -1223,16 +1252,47 @@ Docker/GHCR and Jenkins configuration remain compatible.
1223
1252
 
1224
1253
  ## Command reference
1225
1254
 
1255
+ The CLI now has a complete built-in help system, so developers do not need to open this README just to remember syntax.
1256
+
1257
+ ```bash
1258
+ indraq --help
1259
+ indraq help
1260
+ indraq help configure
1261
+ indraq help docker
1262
+ indraq help mobile
1263
+ indraq help doctor
1264
+ ```
1265
+
1266
+ ### Core commands
1267
+
1226
1268
  | Command | Purpose |
1227
1269
  |---|---|
1228
1270
  | `indraq --version` | Show installed CLI version |
1229
- | `indraq --help` | Show commands |
1271
+ | `indraq --help` | Show the complete command catalog, aliases, flags, mappings and examples |
1272
+ | `indraq help` | Same complete command catalog |
1273
+ | `indraq help <topic>` | Focused help for `configure`, `docker`, `mobile`, or `doctor` |
1230
1274
  | `indraq doctor` | Diagnose runtime / PATH prerequisites |
1231
1275
  | `indraq configure` | Open configuration home |
1232
- | `indraq deploy:dev` | Docker Development deployment |
1276
+
1277
+ ### Docker commands
1278
+
1279
+ | Command | Purpose |
1280
+ |---|---|
1281
+ | `indraq deploy:dev` | Docker Development build/push/deploy |
1233
1282
  | `indraq deploy:development` | Alias of `deploy:dev` |
1234
- | `indraq deploy:prod` | Docker Production deployment |
1283
+ | `indraq deploy:prod` | Docker Production build/push/deploy |
1235
1284
  | `indraq deploy:production` | Alias of `deploy:prod` |
1285
+ | `indraq deploy build --env dev` | Long-form Development command |
1286
+ | `indraq deploy build --env development` | Long-form Development alias |
1287
+ | `indraq deploy build --env prod` | Long-form Production command |
1288
+ | `indraq deploy build --env production` | Long-form Production alias |
1289
+ | `indraq deploy configure` | Open configuration home |
1290
+ | `indraq deploy:configure` | Alias for `indraq configure` |
1291
+
1292
+ ### Mobile commands
1293
+
1294
+ | Command | Purpose |
1295
+ |---|---|
1236
1296
  | `indraq build mobile:dev` | Mobile Development build |
1237
1297
  | `indraq build mobile:development` | Alias of `mobile:dev` |
1238
1298
  | `indraq build mobile:staging` | Mobile Staging build |
@@ -1242,13 +1302,23 @@ Docker/GHCR and Jenkins configuration remain compatible.
1242
1302
  Mobile flags:
1243
1303
 
1244
1304
  ```text
1245
- --output <dev-client|debug-apk|apk|aab>
1305
+ --output <dev-client|development-client|client|debug|debug-apk|apk|release-apk|aab|release-aab>
1246
1306
  --profile <fast|clean|full-reset>
1247
1307
  --verbose
1248
1308
  --dry-run
1249
1309
  -y, --yes
1250
1310
  ```
1251
1311
 
1312
+ ### Jenkins routing reminder
1313
+
1314
+ ```text
1315
+ Docker Development → Development Jenkins
1316
+ Docker Production → Production Jenkins
1317
+ Mobile Development → Production Jenkins
1318
+ Mobile Staging → Production Jenkins
1319
+ Mobile Production → Production Jenkins
1320
+ ```
1321
+
1252
1322
  ---
1253
1323
 
1254
1324
  ## Troubleshooting
@@ -1341,7 +1411,7 @@ Do not paste it into Jenkins.
1341
1411
  Make sure:
1342
1412
 
1343
1413
  1. Jenkins **File Parameter** plugin is installed;
1344
- 2. the job uses `templates/jenkins/Jenkinsfile-Mobile-App` from v1.5.5;
1414
+ 2. the job uses `templates/jenkins/Jenkinsfile-Mobile-App` from v1.5.8;
1345
1415
  3. Jenkins has registered the parameters;
1346
1416
  4. the Jenkins job is named exactly `Mobile app Cli build`.
1347
1417
 
@@ -1409,15 +1479,15 @@ This restores the shared Gradle-cache behavior used by the earlier Git-checkout
1409
1479
 
1410
1480
  ### Gradle wrapper tries to download and times out
1411
1481
 
1412
- v1.5.5 first checks the Jenkins server's shared wrapper cache. If the requested distribution is already cached, the wrapper uses it without internet access. If there is no exact cached wrapper but Jenkins has a system Gradle from the same major version, IndraQ reuses the server Gradle. Only when neither option exists does the project wrapper attempt a download, with `networkTimeout=120000` applied to the temporary Jenkins copy of `gradle-wrapper.properties`.
1482
+ v1.5.8 first checks the Jenkins server's shared wrapper cache. If the requested distribution is already cached, the wrapper uses it without internet access. If there is no exact cached wrapper but Jenkins has a system Gradle from the same major version, IndraQ reuses the server Gradle. Only when neither option exists does the project wrapper attempt a download, with `networkTimeout=120000` applied to the temporary Jenkins copy of `gradle-wrapper.properties`.
1413
1483
 
1414
1484
  If the Jenkins machine has neither a compatible installed Gradle nor the requested wrapper cached and it has no outbound access to Gradle distributions, install/cache the required Gradle version on that Jenkins machine once.
1415
1485
 
1416
1486
  ### Jenkins logs contain `ha:////...`, look diagonal, or are unreadable in VS Code
1417
1487
 
1418
- The `ha:////...` strings are Jenkins `ConsoleNote` annotations embedded in raw `progressiveText`. The Jenkins browser UI renders/hides those annotations. v1.5.5 now consumes Jenkins `logText/progressiveHtml`—the same progressive endpoint used by the classic web console—and converts the rendered output back to plain terminal text.
1488
+ The `ha:////...` strings are Jenkins `ConsoleNote` annotations embedded in raw `progressiveText`. The Jenkins browser UI renders/hides those annotations. v1.5.8 now consumes Jenkins `logText/progressiveHtml`—the same progressive endpoint used by the classic web console—and converts the rendered output back to plain terminal text.
1419
1489
 
1420
- The CLI also normalizes line endings and strips terminal control sequences. Upgrade to v1.5.5 or newer if you see raw `ha:////...` payloads or staircase/right-shifted output.
1490
+ The CLI also normalizes line endings and strips terminal control sequences. Upgrade to v1.5.8 or newer if you see raw `ha:////...` payloads or staircase/right-shifted output.
1421
1491
 
1422
1492
  ---
1423
1493
 
@@ -1586,7 +1656,7 @@ indraq diagnostics ...
1586
1656
  - [ ] command is run from package.json root
1587
1657
  - [ ] Production Jenkins connection configured (`indraq configure → Jenkins → Production`)
1588
1658
  - [ ] Jenkins File Parameter plugin installed
1589
- - [ ] Jenkins job uses the v1.5.5 mobile Jenkinsfile
1659
+ - [ ] Jenkins job uses the v1.5.8 mobile Jenkinsfile
1590
1660
  - [ ] Mobile project type configured
1591
1661
  - [ ] Jenkins job is named exactly `Mobile app Cli build` and exists on Production Jenkins
1592
1662
  - [ ] Development / Staging / Production defaults configured as needed
@@ -1611,6 +1681,6 @@ MIT License. See [`LICENSE`](LICENSE).
1611
1681
 
1612
1682
  ### Jenkins mobile upload returns HTTP 403
1613
1683
 
1614
- IndraQ CLI v1.5.5 preserves the Jenkins web-session cookie together with the CSRF crumb when a Jenkins username/password is used. Jenkins ties crumbs to the session that created them, so both values must travel together. API-token authentication is exempt from the crumb requirement.
1684
+ IndraQ CLI v1.5.8 preserves the Jenkins web-session cookie together with the CSRF crumb when a Jenkins username/password is used. Jenkins ties crumbs to the session that created them, so both values must travel together. API-token authentication is exempt from the crumb requirement.
1615
1685
 
1616
- If a mobile build still returns HTTP 403, v1.5.5 prints Jenkins' own response message. A permission error means the configured Jenkins user needs **Job/Read** and **Job/Build** on the `Mobile app Cli build` job. A CSRF error means the Jenkins controller or reverse proxy is rejecting the crumb/session and the printed Jenkins message should be used for diagnosis.
1686
+ If a mobile build still returns HTTP 403, v1.5.8 prints Jenkins' own response message. A permission error means the configured Jenkins user needs **Job/Read** and **Job/Build** on the `Mobile app Cli build` job. A CSRF error means the Jenkins controller or reverse proxy is rejecting the crumb/session and the printed Jenkins message should be used for diagnosis.
@@ -1 +1 @@
1
- {"version":3,"file":"create-program.d.ts","sourceRoot":"","sources":["../../src/cli/create-program.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,aAAa,QAAO,OAsBhC,CAAC"}
1
+ {"version":3,"file":"create-program.d.ts","sourceRoot":"","sources":["../../src/cli/create-program.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,eAAO,MAAM,aAAa,QAAO,OA6ChC,CAAC"}
@@ -6,11 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createProgram = void 0;
7
7
  const node_fs_1 = require("node:fs");
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const chalk_1 = __importDefault(require("chalk"));
9
10
  const commander_1 = require("commander");
10
11
  const deploy_1 = require("../modules/deploy");
11
12
  const mobile_1 = require("../modules/mobile");
12
13
  const configure_command_1 = require("../modules/configure/configure.command");
13
14
  const doctor_command_1 = require("./doctor.command");
15
+ const help_content_1 = require("./help-content");
14
16
  const readCliVersion = () => {
15
17
  try {
16
18
  const packageJsonPath = node_path_1.default.resolve(__dirname, '../../package.json');
@@ -29,7 +31,26 @@ const createProgram = () => {
29
31
  program
30
32
  .name('indraq')
31
33
  .description('IndraQ internal engineering CLI.')
32
- .version(readCliVersion());
34
+ .version(readCliVersion())
35
+ .showSuggestionAfterError()
36
+ .showHelpAfterError('\nRun `indraq --help` to see the complete command reference.');
37
+ // Commander normally adds a very small `help [command]` command. IndraQ replaces
38
+ // it with a useful topic-aware help command while keeping normal `--help` support
39
+ // on every command/subcommand.
40
+ program.addHelpCommand(false);
41
+ program
42
+ .command('help [topic]')
43
+ .description('Show complete help or focused help for configure, docker, mobile, or doctor.')
44
+ .action((topic) => {
45
+ const parsed = (0, help_content_1.parseHelpTopic)(topic);
46
+ if (!parsed) {
47
+ console.error(chalk_1.default.red(`\n✗ Unknown help topic: ${topic ?? ''}`));
48
+ console.log(chalk_1.default.gray('Available topics: configure, docker, mobile, doctor\n'));
49
+ process.exitCode = 1;
50
+ return;
51
+ }
52
+ console.log((0, help_content_1.helpForTopic)(parsed));
53
+ });
33
54
  program
34
55
  .command('doctor')
35
56
  .description('Diagnose Node and command-resolution problems.')
@@ -40,6 +61,7 @@ const createProgram = () => {
40
61
  .action(async () => (0, configure_command_1.configure)());
41
62
  (0, deploy_1.registerDeployModule)(program);
42
63
  (0, mobile_1.registerMobileModule)(program);
64
+ program.addHelpText('after', (0, help_content_1.fullCommandReference)());
43
65
  return program;
44
66
  };
45
67
  exports.createProgram = createProgram;
@@ -1 +1 @@
1
- {"version":3,"file":"create-program.js","sourceRoot":"","sources":["../../src/cli/create-program.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAuC;AACvC,0DAA6B;AAC7B,yCAAoC;AACpC,8CAAyD;AACzD,8CAAyD;AACzD,8EAAmE;AACnE,qDAA0C;AAI1C,MAAM,cAAc,GAAG,GAAW,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAA0B,CAAC;QAE/F,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1E,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gFAAgF;IAClF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,GAAY,EAAE;IACzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,kCAAkC,CAAC;SAC/C,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAE7B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,uBAAM,GAAE,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAA,6BAAS,GAAE,CAAC,CAAC;IAEnC,IAAA,6BAAoB,EAAC,OAAO,CAAC,CAAC;IAC9B,IAAA,6BAAoB,EAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAtBW,QAAA,aAAa,iBAsBxB"}
1
+ {"version":3,"file":"create-program.js","sourceRoot":"","sources":["../../src/cli/create-program.ts"],"names":[],"mappings":";;;;;;AAAA,qCAAuC;AACvC,0DAA6B;AAC7B,kDAA0B;AAC1B,yCAAoC;AACpC,8CAAyD;AACzD,8CAAyD;AACzD,8EAAmE;AACnE,qDAA0C;AAC1C,iDAAoF;AAIpF,MAAM,cAAc,GAAG,GAAW,EAAE;IAClC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,eAAe,EAAE,MAAM,CAAC,CAA0B,CAAC;QAE/F,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1E,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,gFAAgF;IAClF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,aAAa,GAAG,GAAY,EAAE;IACzC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,kCAAkC,CAAC;SAC/C,OAAO,CAAC,cAAc,EAAE,CAAC;SACzB,wBAAwB,EAAE;SAC1B,kBAAkB,CAAC,8DAA8D,CAAC,CAAC;IAEtF,iFAAiF;IACjF,kFAAkF;IAClF,+BAA+B;IAC/B,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAE9B,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,8EAA8E,CAAC;SAC3F,MAAM,CAAC,CAAC,KAAc,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,IAAA,6BAAc,EAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,2BAA2B,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;YACjF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,uBAAM,GAAE,CAAC,CAAC;IAE1B,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,IAAA,6BAAS,GAAE,CAAC,CAAC;IAEnC,IAAA,6BAAoB,EAAC,OAAO,CAAC,CAAC;IAC9B,IAAA,6BAAoB,EAAC,OAAO,CAAC,CAAC;IAE9B,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,IAAA,mCAAoB,GAAE,CAAC,CAAC;IAErD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AA7CW,QAAA,aAAa,iBA6CxB"}
@@ -0,0 +1,5 @@
1
+ export type HelpTopic = 'all' | 'configure' | 'docker' | 'mobile' | 'doctor';
2
+ export declare const fullCommandReference: () => string;
3
+ export declare const helpForTopic: (topic: HelpTopic) => string;
4
+ export declare const parseHelpTopic: (value?: string) => HelpTopic | undefined;
5
+ //# sourceMappingURL=help-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-content.d.ts","sourceRoot":"","sources":["help-content.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAM7E,eAAO,MAAM,oBAAoB,QAAO,MAgFvC,CAAC;AA2GF,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,KAAG,MAM/C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,SAAS,GAAG,SAS3D,CAAC"}
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.parseHelpTopic = exports.helpForTopic = exports.fullCommandReference = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const heading = (value) => chalk_1.default.bold(value);
9
+ const command = (value) => chalk_1.default.cyan(value);
10
+ const note = (value) => chalk_1.default.gray(value);
11
+ const fullCommandReference = () => `
12
+ ${heading('Complete command reference')}
13
+
14
+ ${heading('Core')}
15
+ ${command('indraq --version')} Show installed CLI version
16
+ ${command('indraq --help')} Show this complete help screen
17
+ ${command('indraq help')} Show this complete help screen
18
+ ${command('indraq help <topic>')} Help topic: configure, docker, mobile, doctor
19
+ ${command('indraq doctor')} Diagnose Node, Java, Git, tar and PATH issues
20
+ ${command('indraq configure')} Open the project configuration home
21
+
22
+ ${heading('Docker / GHCR deployment')}
23
+ ${command('indraq deploy:dev')} Build, push and deploy Development
24
+ ${command('indraq deploy:development')} Alias for deploy:dev
25
+ ${command('indraq deploy:prod')} Build, push and deploy Production
26
+ ${command('indraq deploy:production')} Alias for deploy:prod
27
+ ${command('indraq deploy build --env dev')} Long-form Development deployment
28
+ ${command('indraq deploy build --env development')} Long-form Development alias
29
+ ${command('indraq deploy build --env prod')} Long-form Production deployment
30
+ ${command('indraq deploy build --env production')} Long-form Production alias
31
+ ${command('indraq deploy configure')} Open the main configuration home
32
+ ${command('indraq deploy:configure')} Alias for indraq configure
33
+
34
+ ${heading('Mobile Android builds')}
35
+ ${command('indraq build mobile:dev')} Mobile Development build
36
+ ${command('indraq build mobile:development')} Alias for mobile:dev
37
+ ${command('indraq build mobile:staging')} Mobile Staging build
38
+ ${command('indraq build mobile:prod')} Mobile Production build
39
+ ${command('indraq build mobile:production')} Alias for mobile:prod
40
+
41
+ ${heading('Mobile build flags')}
42
+ ${command('--output <output>')} One-build output override
43
+ dev-client | development-client | client
44
+ debug | debug-apk
45
+ apk | release-apk
46
+ aab | release-aab
47
+
48
+ ${command('--profile <profile>')} One-build profile override
49
+ fast | clean | full-reset
50
+
51
+ ${command('--verbose')} Verbose Gradle/Jenkins output
52
+ ${command('--dry-run')} Validate and print plan; do not start Jenkins
53
+ ${command('-y, --yes')} Skip final build confirmation
54
+
55
+ ${heading('Configuration home')}
56
+ ${command('indraq configure')}
57
+ Jenkins
58
+ Development → Docker Development deployments
59
+ Production → Docker Production + ALL mobile builds
60
+
61
+ Docker / GHCR
62
+ Development
63
+ Production
64
+
65
+ Mobile App
66
+ Project settings
67
+ Version & versionCode
68
+ Development
69
+ Staging
70
+ Production
71
+
72
+ Review current project configuration
73
+ Exit
74
+
75
+ ${heading('Environment routing')}
76
+ Docker Development → Development Jenkins
77
+ Docker Production → Production Jenkins
78
+ Mobile Development → Production Jenkins
79
+ Mobile Staging → Production Jenkins
80
+ Mobile Production → Production Jenkins
81
+
82
+ ${heading('Examples')}
83
+ ${command('indraq configure')}
84
+ ${command('indraq deploy:dev')}
85
+ ${command('indraq deploy:prod')}
86
+ ${command('indraq build mobile:dev --dry-run')}
87
+ ${command('indraq build mobile:staging --output apk')}
88
+ ${command('indraq build mobile:prod --output aab --profile clean --verbose')}
89
+
90
+ ${note('Tip: use `indraq help mobile` or `indraq help docker` for focused help.')}
91
+ `;
92
+ exports.fullCommandReference = fullCommandReference;
93
+ const configureHelp = () => `
94
+ ${heading('IndraQ configuration')}
95
+
96
+ ${command('indraq configure')}
97
+
98
+ The configuration home lets you change only the section you need and always returns to the home screen after a change.
99
+
100
+ ${heading('Sections')}
101
+ Jenkins
102
+ Development → Docker Development deployments
103
+ Production → Docker Production + ALL mobile builds
104
+
105
+ Docker / GHCR
106
+ Development image + Dockerfile
107
+ Production image + Dockerfile
108
+ GitHub personal/organization GHCR owner
109
+
110
+ Mobile App
111
+ App name + project type
112
+ Android Version + versionCode + auto-increment switches
113
+ Development output/profile
114
+ Staging output/profile
115
+ Production output/profile
116
+
117
+ Review current project configuration
118
+ Exit
119
+
120
+ ${note('Git sharing: commit .indraq/jenkins.json, docker.json and mobile.json. Only .indraq/jenkins.local.json is machine-local/ignored; actual Jenkins credentials stay under the user home directory.')}
121
+ `;
122
+ const dockerHelp = () => `
123
+ ${heading('Docker / GHCR deployment')}
124
+
125
+ ${heading('Commands')}
126
+ ${command('indraq deploy:dev')} Development
127
+ ${command('indraq deploy:development')} Development alias
128
+ ${command('indraq deploy:prod')} Production
129
+ ${command('indraq deploy:production')} Production alias
130
+ ${command('indraq deploy build --env dev')} Long form
131
+ ${command('indraq deploy build --env prod')} Long form
132
+
133
+ ${heading('Flow')}
134
+ Docker build → existing Docker GHCR credentials → GHCR push → Jenkins deployment
135
+
136
+ ${heading('Jenkins mapping')}
137
+ Development → Development Jenkins
138
+ Production → Production Jenkins
139
+
140
+ ${heading('Important')}
141
+ IndraQ does not run docker login during deployment. It preserves Docker's existing GHCR credential store.
142
+ `;
143
+ const mobileHelp = () => `
144
+ ${heading('Mobile Android builds')}
145
+
146
+ ${heading('Commands')}
147
+ ${command('indraq build mobile:dev')} Development
148
+ ${command('indraq build mobile:development')} Development alias
149
+ ${command('indraq build mobile:staging')} Staging
150
+ ${command('indraq build mobile:prod')} Production
151
+ ${command('indraq build mobile:production')} Production alias
152
+
153
+ ${heading('Flags')}
154
+ ${command('--output <output>')} dev-client | debug-apk | apk | aab
155
+ ${command('--profile <profile>')} fast | clean | full-reset
156
+ ${command('--verbose')} Verbose Gradle/Jenkins output
157
+ ${command('--dry-run')} Validate only; do not upload/build
158
+ ${command('-y, --yes')} Skip final confirmation
159
+
160
+ ${heading('Allowed build matrix')}
161
+ Expo / Development → Development Client
162
+ Expo / Staging → Release APK or Release AAB
163
+ Expo / Production → Release APK or Release AAB
164
+ React Native / Development → Debug APK
165
+ React Native / Staging → Release APK or Release AAB
166
+ React Native / Production → Release APK or Release AAB
167
+
168
+ ${heading('Jenkins')}
169
+ ALL mobile environments use Production Jenkins.
170
+ Jenkins job: Mobile app Cli build
171
+
172
+ ${heading('Versioning')}
173
+ Android Version and versionCode are configured through:
174
+ ${command('indraq configure')} → Mobile App → Version & versionCode
175
+
176
+ ${heading('Examples')}
177
+ ${command('indraq build mobile:dev --dry-run')}
178
+ ${command('indraq build mobile:staging --output apk')}
179
+ ${command('indraq build mobile:prod --output aab --profile clean --verbose --yes')}
180
+ `;
181
+ const doctorHelp = () => `
182
+ ${heading('IndraQ doctor')}
183
+
184
+ ${command('indraq doctor')}
185
+
186
+ Checks:
187
+ • Node.js version
188
+ • Java availability
189
+ • Git availability
190
+ • tar availability
191
+ • Windows command-resolution order
192
+ • whether another file/app is shadowing the indraq command
193
+ `;
194
+ const helpForTopic = (topic) => {
195
+ if (topic === 'configure')
196
+ return configureHelp();
197
+ if (topic === 'docker')
198
+ return dockerHelp();
199
+ if (topic === 'mobile')
200
+ return mobileHelp();
201
+ if (topic === 'doctor')
202
+ return doctorHelp();
203
+ return (0, exports.fullCommandReference)();
204
+ };
205
+ exports.helpForTopic = helpForTopic;
206
+ const parseHelpTopic = (value) => {
207
+ if (!value)
208
+ return 'all';
209
+ const normalized = value.trim().toLowerCase();
210
+ if (normalized === 'all')
211
+ return 'all';
212
+ if (normalized === 'configure' || normalized === 'config')
213
+ return 'configure';
214
+ if (normalized === 'docker' || normalized === 'deploy' || normalized === 'ghcr')
215
+ return 'docker';
216
+ if (normalized === 'mobile' || normalized === 'android' || normalized === 'build')
217
+ return 'mobile';
218
+ if (normalized === 'doctor' || normalized === 'diagnostics' || normalized === 'diagnostic')
219
+ return 'doctor';
220
+ return undefined;
221
+ };
222
+ exports.parseHelpTopic = parseHelpTopic;
223
+ //# sourceMappingURL=help-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-content.js","sourceRoot":"","sources":["help-content.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.command.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/build.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAsBjC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,qBAAqB,CAAC;CAC5B;AA2BD,eAAO,MAAM,KAAK,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,IAAI,CAmK/D,CAAC"}
1
+ {"version":3,"file":"build.command.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/build.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAiBjC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,qBAAqB,CAAC;CAC5B;AA2BD,eAAO,MAAM,KAAK,GAAU,SAAS,YAAY,KAAG,OAAO,CAAC,IAAI,CAyJ/D,CAAC"}
@@ -9,7 +9,6 @@ const chalk_1 = __importDefault(require("chalk"));
9
9
  const node_fs_1 = require("node:fs");
10
10
  const docker_config_1 = require("../config/docker-config");
11
11
  const jenkins_config_1 = require("../../../shared/config/jenkins-config");
12
- const github_auth_service_1 = require("../../../shared/github/github-auth.service");
13
12
  const docker_service_1 = require("../services/docker.service");
14
13
  const jenkins_service_1 = require("../../../shared/jenkins/jenkins.service");
15
14
  const TAG_PATTERN = /^[A-Za-z0-9_][A-Za-z0-9_.-]{0,127}$/;
@@ -53,10 +52,6 @@ const build = async (options) => {
53
52
  }
54
53
  (0, docker_service_1.assertDockerAvailable)();
55
54
  (0, jenkins_service_1.assertJavaAvailable)();
56
- const githubAuth = (0, github_auth_service_1.detectGitHubAuthentication)();
57
- if (!githubAuth) {
58
- throw new Error('No authenticated GitHub session was found. Sign in using Git/Git Bash (Git Credential Manager or SSH), or authenticate the optional GitHub CLI.');
59
- }
60
55
  if (!(0, node_fs_1.existsSync)(dockerfilePath)) {
61
56
  throw new Error(`Dockerfile not found: ${dockerfilePath}`);
62
57
  }
@@ -67,7 +62,9 @@ const build = async (options) => {
67
62
  throw new Error('Jenkins credentials are missing. Run `indraq configure` again.');
68
63
  }
69
64
  console.log(chalk_1.default.blue.bold('🔎 Preflight Checks\n'));
70
- console.log(chalk_1.default.green(`✓ Docker available; GitHub authenticated via ${(0, github_auth_service_1.describeGitHubAuthentication)(githubAuth)}`));
65
+ console.log(chalk_1.default.green('✓ Docker available'));
66
+ console.log(chalk_1.default.green("✓ GHCR authentication will use Docker's existing credential store"));
67
+ console.log(chalk_1.default.gray(' IndraQ will not run `docker login` or replace your working GHCR credentials.'));
71
68
  console.log(chalk_1.default.gray(`✓ Registry owner: ${config.github.owner} (${config.github.ownerType === 'personal' ? 'personal account' : 'organization'})`));
72
69
  const authResult = (0, jenkins_service_1.validateJenkinsAuthentication)(jenkins);
73
70
  if (authResult.connectionMode !== jenkins.connectionMode) {
@@ -112,15 +109,9 @@ const build = async (options) => {
112
109
  console.log(chalk_1.default.gray(`Tags: ${tags.join(', ')}\n`));
113
110
  (0, docker_service_1.buildDockerImage)(imageName, tags, dockerfilePath);
114
111
  console.log(chalk_1.default.green('\n✓ Docker image built successfully\n'));
115
- console.log(chalk_1.default.blue.bold('🔐 Step 3: Preparing GHCR Authentication\n'));
116
- const loggedInWithDetectedCredential = (0, docker_service_1.authenticateGhcr)(githubAuth);
117
- if (loggedInWithDetectedCredential) {
118
- console.log(chalk_1.default.green('\n✓ GHCR login completed using the detected GitHub credential\n'));
119
- }
120
- else {
121
- console.log(chalk_1.default.yellow('⚠ GitHub SSH authentication is valid, but GHCR does not accept SSH keys. Using any GHCR credentials already stored by Docker.'));
122
- console.log(chalk_1.default.gray(' If the push fails, run `docker login ghcr.io` once and retry.\n'));
123
- }
112
+ console.log(chalk_1.default.blue.bold('🔐 Step 3: Using Existing GHCR Authentication\n'));
113
+ console.log(chalk_1.default.green('✓ Using the GHCR credentials already stored by Docker'));
114
+ console.log(chalk_1.default.gray(' Git/GitHub credentials are not reused for GHCR and Docker login state is left untouched.\n'));
124
115
  console.log(chalk_1.default.blue.bold('📤 Step 4: Pushing Image to GHCR\n'));
125
116
  for (const tag of tags) {
126
117
  const imageWithTag = `${imageName}:${tag}`;
@@ -1 +1 @@
1
- {"version":3,"file":"build.command.js","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/build.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.command.js","sourceRoot":"","sources":["../../../../src/modules/deploy/commands/build.command.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAChC,kDAA0B;AAC1B,qCAAqC;AACrC,2DAIiC;AACjC,0EAAgJ;AAChJ,+DAKoC;AACpC,6EAOiD;AAUjD,MAAM,WAAW,GAAG,qCAAqC,CAAC;AAE1D,MAAM,kCAAkC,GAAG,CAAC,mBAA2B,EAAU,EAAE,CACjF,mBAAmB,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEnF,MAAM,gBAAgB,GAAG,CAAC,MAAoB,EAAE,mBAA2B,EAAU,EAAE;IACrF,MAAM,eAAe,GAAG,kCAAkC,CAAC,mBAAmB,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC;IAE5F,OAAO,WAAW,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,mBAA2B,EAAU,EAAE;IACtE,MAAM,UAAU,GAAG,kCAAkC,CAAC,mBAAmB,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,KAAK,GAAG,KAAK,EAAE,OAAqB,EAAiB,EAAE;IAClE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAEnF,MAAM,MAAM,GAAG,IAAA,kCAAkB,GAAE,CAAC;IACpC,MAAM,kBAAkB,GAAG,IAAA,4CAA2B,GAAE,CAAC;IACzD,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,iBAAiB,CAAC,cAAc,CAAC;IACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACxE,MAAM,cAAc,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAE5E,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,WAAW,EAAE,0EAA0E,CAAC,CAAC;IACzH,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC,CAAC;IACtI,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAA,6CAA4B,EAAC,GAAG,CAAC,CAAC;IAClD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,WAAW,EAAE,wEAAwE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;IACtK,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,WAAW,EAAE,kGAAkG,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;IAChM,CAAC;IAED,IAAA,sCAAqB,GAAE,CAAC;IACxB,IAAA,qCAAmB,GAAE,CAAC;IAEtB,IAAI,CAAC,IAAA,oBAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,sCAAoB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,IAAA,oBAAU,EAAC,IAAA,wCAAsB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,mEAAmE,CAAC,CACjF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAC7F,CAAC;IACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CACR,qBAAqB,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,GAAG,CAC7H,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,IAAA,+CAA6B,EAAC,OAAO,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC;QACzD,kBAAkB,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC;QACvG,OAAO,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QACnD,IAAA,6CAA4B,EAAC,kBAAkB,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpE,MAAM,IAAA,wCAAsB,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,cAAc,IAAI,CAAC,CAAC,CAAC;IAE9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAClE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAY;QACzD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,uDAAuD;YAChE,OAAO,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YAC3C,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC1B,MAAM,IAAI,GAAG,KAAK;qBACf,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;qBACxB,MAAM,CAAC,OAAO,CAAC,CAAC;gBAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,+BAA+B,CAAC;gBACzC,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9D,OAAO,UAAU,CAAC,CAAC,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACjE,CAAC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CACrB,IAAI,GAAG,CACL,OAAO;SACJ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,OAAO,CAAC,CACnB,CACF,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,cAAc,EAAE,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAEtD,IAAA,iCAAgB,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,KAAK,CAAC,uDAAuD,CAAC,CACrE,CAAC;IACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAC3G,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAC;IACnE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,YAAY,KAAK,CAAC,CAAC,CAAC;QACtD,IAAA,gCAAe,EAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,IAAA,qCAAoB,EAAC,YAAY,CAAC,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,cAAc,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAEvE,MAAM,IAAA,0CAAwB,EAAC,OAAO,EAAE,cAAc,EAAE;QACtD,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,UAAU;QACrB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,iBAAiB,EAAE,YAAY;KAChC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,cAAc,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC,CAAC;AAzJW,QAAA,KAAK,SAyJhB"}
@@ -1,7 +1,5 @@
1
- import type { GitHubAuthState } from '../../../shared/github/github-auth.service';
2
1
  export declare const assertDockerAvailable: () => void;
3
2
  export declare const buildDockerImage: (imageName: string, tags: string[], dockerfilePath: string) => void;
4
- export declare const authenticateGhcr: (auth: GitHubAuthState) => boolean;
5
3
  export declare const pushDockerImage: (imageWithTag: string) => void;
6
4
  export declare const getDockerImageDigest: (imageWithTag: string) => string;
7
5
  //# sourceMappingURL=docker.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docker.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAElF,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EACjB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,KACrB,IAYF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,eAAe,KAAG,OAgBxD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,cAAc,MAAM,KAAG,IAQtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,KAAG,MAgB3D,CAAC"}
1
+ {"version":3,"file":"docker.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,QAAO,IAMxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,WAAW,MAAM,EACjB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,KACrB,IAYF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,cAAc,MAAM,KAAG,IAStD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,KAAG,MAgB3D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDockerImageDigest = exports.pushDockerImage = exports.authenticateGhcr = exports.buildDockerImage = exports.assertDockerAvailable = void 0;
3
+ exports.getDockerImageDigest = exports.pushDockerImage = exports.buildDockerImage = exports.assertDockerAvailable = void 0;
4
4
  const node_child_process_1 = require("node:child_process");
5
5
  const assertDockerAvailable = () => {
6
6
  try {
@@ -25,28 +25,13 @@ const buildDockerImage = (imageName, tags, dockerfilePath) => {
25
25
  }
26
26
  };
27
27
  exports.buildDockerImage = buildDockerImage;
28
- const authenticateGhcr = (auth) => {
29
- if (!auth.username || !auth.token) {
30
- return false;
31
- }
32
- try {
33
- (0, node_child_process_1.execFileSync)('docker', ['login', 'ghcr.io', '-u', auth.username, '--password-stdin'], {
34
- input: `${auth.token}\n`,
35
- stdio: ['pipe', 'inherit', 'inherit']
36
- });
37
- return true;
38
- }
39
- catch {
40
- throw new Error('GitHub authentication was found, but GHCR rejected the credential. Make sure it has package write access, or run `docker login ghcr.io` once.');
41
- }
42
- };
43
- exports.authenticateGhcr = authenticateGhcr;
44
28
  const pushDockerImage = (imageWithTag) => {
45
29
  try {
46
30
  (0, node_child_process_1.execFileSync)('docker', ['push', imageWithTag], { stdio: 'inherit' });
47
31
  }
48
32
  catch {
49
- throw new Error(`Failed to push ${imageWithTag}. Verify that you have package write permission for the selected GitHub owner and that Docker is authenticated to ghcr.io.`);
33
+ throw new Error(`Failed to push ${imageWithTag}. IndraQ preserved Docker's existing GHCR login and did not run docker login. ` +
34
+ 'If a manual `docker push` of the same image succeeds, report this as an IndraQ CLI bug. Otherwise verify the Docker GHCR credential has package write access.');
50
35
  }
51
36
  };
52
37
  exports.pushDockerImage = pushDockerImage;
@@ -1 +1 @@
1
- {"version":3,"file":"docker.service.js","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docker.service.js","sourceRoot":"","sources":["../../../../src/modules/deploy/services/docker.service.ts"],"names":[],"mappings":";;;AAAA,2DAAkD;AAE3C,MAAM,qBAAqB,GAAG,GAAS,EAAE;IAC9C,IAAI,CAAC;QACH,IAAA,iCAAY,EAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,SAAiB,EACjB,IAAc,EACd,cAAsB,EAChB,EAAE;IACR,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEzB,IAAI,CAAC;QACH,IAAA,iCAAY,EAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,gBAAgB,oBAgB3B;AAEK,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAQ,EAAE;IAC5D,IAAI,CAAC;QACH,IAAA,iCAAY,EAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,kBAAkB,YAAY,gFAAgF;YAC9G,+JAA+J,CAChK,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEK,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAU,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,iCAAY,EACzB,QAAQ,EACR,CAAC,OAAO,EAAE,SAAS,EAAE,mCAAmC,EAAE,YAAY,CAAC,EACvE;YACE,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CACF,CAAC,IAAI,EAAE,CAAC;QAET,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1C,OAAO,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,oBAAoB,wBAgB/B"}
@@ -6,6 +6,6 @@ export interface MobileProjectInfo {
6
6
  gitCommit?: string;
7
7
  gitDirty: boolean;
8
8
  }
9
- export declare const validateMobileProjectRoot: (projectType: MobileProjectType, root?: string) => MobileProjectInfo;
10
- export declare const assertExpoDevelopmentClientInstalled: (root?: string) => void;
9
+ export declare const validateMobileProjectRoot: (projectType: MobileProjectType, root?: any) => MobileProjectInfo;
10
+ export declare const assertExpoDevelopmentClientInstalled: (root?: any) => void;
11
11
  //# sourceMappingURL=project.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile/services/project.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAyCD,eAAO,MAAM,yBAAyB,GACpC,aAAa,iBAAiB,EAC9B,aAAoB,KACnB,iBAiCF,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAAI,aAAoB,KAAG,IAQ3E,CAAC"}
1
+ {"version":3,"file":"project.service.d.ts","sourceRoot":"","sources":["../../../../src/modules/mobile/services/project.service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAyCD,eAAO,MAAM,yBAAyB,GACpC,aAAa,iBAAiB,EAC9B,UAAoB,KACnB,iBAiCF,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAAI,UAAoB,KAAG,IAQ3E,CAAC"}
@@ -1 +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"}
1
+ {"version":3,"file":"config-files.d.ts","sourceRoot":"","sources":["config-files.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,wBAAwB,QAAO,MAAwC,CAAC;AAErF,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,KAAG,MACX,CAAC;AAwH7C,eAAO,MAAM,2BAA2B,QAAO,MAO9C,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,UAAU,MAAM,KAAG,OAM7D,CAAC"}
@@ -8,16 +8,19 @@ const getIndraqConfigDirectory = () => (0, node_path_1.join)(process.cwd(), '.in
8
8
  exports.getIndraqConfigDirectory = getIndraqConfigDirectory;
9
9
  const getIndraqConfigPath = (filename) => (0, node_path_1.join)((0, exports.getIndraqConfigDirectory)(), filename);
10
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}
11
+ const INDRAQ_LOCAL_GITIGNORE_HEADER = '# IndraQ CLI machine-local files';
12
+ const INDRAQ_LOCAL_GITIGNORE_RULES = [
13
+ 'jenkins.local.json',
14
+ '*.secret',
15
+ 'auth',
16
+ 'jenkins-cli.jar'
17
+ ];
18
+ const ROOT_GITIGNORE_HEADER = '# IndraQ CLI machine-local Jenkins binding';
19
+ const ROOT_JENKINS_LOCAL_RULE = '.indraq/jenkins.local.json';
20
+ // This was generated by older IndraQ CLI releases. It ignored every file in
21
+ // .indraq/, which prevented safe project configuration from being shared.
22
+ const LEGACY_INNER_GITIGNORE = '*\n!.gitignore\n';
23
+ const LEGACY_ROOT_SHARED_BLOCK = `# IndraQ CLI shared project configuration
21
24
  # These files are safe and intentionally shared with the project.
22
25
  !.indraq/
23
26
  !.indraq/.gitignore
@@ -25,7 +28,46 @@ ${ROOT_GITIGNORE_MARKER}
25
28
  !.indraq/docker.json
26
29
  !.indraq/mobile.json
27
30
  `;
28
- const ensureRootGitignoreAllowsSharedConfig = () => {
31
+ const normaliseLines = (content) => content.replace(/\r\n/g, '\n').split('\n');
32
+ const hasExactRule = (lines, rule) => lines.some((line) => line.trim() === rule);
33
+ const appendMissingBlock = (content, header, rules) => {
34
+ const lines = normaliseLines(content);
35
+ const missing = rules.filter((rule) => !hasExactRule(lines, rule));
36
+ if (missing.length === 0)
37
+ return content;
38
+ const output = [...lines];
39
+ while (output.length > 0 && output[output.length - 1] === '')
40
+ output.pop();
41
+ if (output.length > 0)
42
+ output.push('');
43
+ if (!hasExactRule(output, header))
44
+ output.push(header);
45
+ output.push(...missing);
46
+ return `${output.join('\n')}\n`;
47
+ };
48
+ const removeLegacyRootSharedBlock = (content) => {
49
+ const normalised = content.replace(/\r\n/g, '\n');
50
+ return normalised.replace(LEGACY_ROOT_SHARED_BLOCK, '').replace(/\n{3,}/g, '\n\n');
51
+ };
52
+ const removeKnownLegacyIndraqDirectoryRule = (content) => {
53
+ const lines = normaliseLines(content);
54
+ const output = [];
55
+ for (let index = 0; index < lines.length; index += 1) {
56
+ const line = lines[index];
57
+ if (line.trim() !== '.indraq/') {
58
+ output.push(line);
59
+ continue;
60
+ }
61
+ // Only remove an ignore-all rule when it is clearly part of an IndraQ
62
+ // generated/commented section. Never delete an unrelated user rule blindly.
63
+ const previousNonBlank = [...output].reverse().find((candidate) => candidate.trim() !== '')?.trim() ?? '';
64
+ if (/^#.*indraq/i.test(previousNonBlank))
65
+ continue;
66
+ output.push(line);
67
+ }
68
+ return output.join('\n');
69
+ };
70
+ const ensureRootGitignoreProtectsOnlyLocalJenkinsBinding = () => {
29
71
  const gitCheck = (0, node_child_process_1.spawnSync)('git', ['rev-parse', '--is-inside-work-tree'], {
30
72
  cwd: process.cwd(),
31
73
  encoding: 'utf8',
@@ -41,39 +83,44 @@ const ensureRootGitignoreAllowsSharedConfig = () => {
41
83
  catch {
42
84
  return;
43
85
  }
44
- if (content.includes(ROOT_GITIGNORE_MARKER))
86
+ // Migrate only rules that previous IndraQ versions generated. User-owned
87
+ // ignore rules are preserved.
88
+ let next = removeLegacyRootSharedBlock(content);
89
+ next = removeKnownLegacyIndraqDirectoryRule(next);
90
+ next = appendMissingBlock(next, ROOT_GITIGNORE_HEADER, [ROOT_JENKINS_LOCAL_RULE]);
91
+ if (next === content)
45
92
  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
93
  try {
51
- (0, node_fs_1.writeFileSync)(rootGitignore, `${content}${separator}${ROOT_GITIGNORE_BLOCK.replace(/^\n/, '')}`, 'utf8');
94
+ (0, node_fs_1.writeFileSync)(rootGitignore, next, 'utf8');
52
95
  }
53
96
  catch {
54
- // The save methods still perform git check-ignore and will warn if the repository
55
- // prevents the shared configuration from being tracked.
97
+ // Saving actual config files will surface any filesystem problem. Git
98
+ // visibility checks below will still warn if shared config is blocked.
56
99
  }
57
100
  };
58
- const ensureIndraqConfigDirectory = () => {
59
- const directory = (0, exports.getIndraqConfigDirectory)();
60
- (0, node_fs_1.mkdirSync)(directory, { recursive: true });
101
+ const ensureInnerGitignore = (directory) => {
61
102
  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');
103
+ let content = '';
104
+ try {
105
+ content = (0, node_fs_1.existsSync)(gitignore) ? (0, node_fs_1.readFileSync)(gitignore, 'utf8') : '';
65
106
  }
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
- }
107
+ catch {
108
+ return;
75
109
  }
76
- ensureRootGitignoreAllowsSharedConfig();
110
+ // Exact legacy file was generated by old IndraQ versions and is safe to
111
+ // replace because it intentionally ignored the entire directory.
112
+ if (content.replace(/\r\n/g, '\n') === LEGACY_INNER_GITIGNORE)
113
+ content = '';
114
+ const next = appendMissingBlock(content, INDRAQ_LOCAL_GITIGNORE_HEADER, INDRAQ_LOCAL_GITIGNORE_RULES);
115
+ if (next === content)
116
+ return;
117
+ (0, node_fs_1.writeFileSync)(gitignore, next, 'utf8');
118
+ };
119
+ const ensureIndraqConfigDirectory = () => {
120
+ const directory = (0, exports.getIndraqConfigDirectory)();
121
+ (0, node_fs_1.mkdirSync)(directory, { recursive: true });
122
+ ensureInnerGitignore(directory);
123
+ ensureRootGitignoreProtectsOnlyLocalJenkinsBinding();
77
124
  return directory;
78
125
  };
79
126
  exports.ensureIndraqConfigDirectory = ensureIndraqConfigDirectory;
@@ -1 +1 @@
1
- {"version":3,"file":"config-files.js","sourceRoot":"","sources":["../../../src/shared/config/config-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-files.js","sourceRoot":"","sources":["config-files.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "indraq_cli",
3
- "version": "1.5.5",
3
+ "version": "1.5.8",
4
4
  "description": "IndraQ CLI for Docker/GHCR deployments, Jenkins automation, and mobile Android builds",
5
5
  "main": "dist/index.js",
6
6
  "bin": {