sfdx-hardis 6.1.4 → 6.2.0

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.
@@ -132,12 +132,13 @@
132
132
  "clear:cache:hardis"
133
133
  ]
134
134
  },
135
- "hardis:config:get": {
135
+ "hardis:auth:login": {
136
136
  "aliases": [],
137
137
  "args": {},
138
- "description": "\n## Command Behavior\n\n**Retrieves and displays the sfdx-hardis configuration for a specified level.**\n\nThis command allows you to inspect the configuration that is currently in effect for your project, which is useful for debugging and understanding how sfdx-hardis will behave.\n\n- **Configuration levels:** It can retrieve configuration from three different levels:\n - **Project:** The configuration defined in the project's `.sfdx-hardis.yml` file.\n - **Branch:** The configuration defined in a branch-specific configuration file (e.g., `.sfdx-hardis.production.yml`).\n - **User:** The global user-level configuration.\n\n## Technical explanations\n\nThe command's logic is straightforward:\n\n- **`getConfig` function:** It calls the `getConfig` utility function, passing the desired configuration level as an argument.\n- **Configuration loading:** The `getConfig` function is responsible for finding the appropriate configuration file, reading its contents, and parsing it as YAML or JSON.\n- **Output:** The retrieved configuration is then displayed to the user as a JSON string.\n",
138
+ "description": "\n## Command Behavior\n\n**Authenticates to a Salesforce org, primarily designed for CI/CD workflows.**\n\nThis command facilitates secure and automated logins to Salesforce organizations within continuous integration and continuous delivery pipelines. It leverages pre-configured authentication details, ensuring that CI/CD processes can interact with Salesforce without manual intervention.\n\nKey aspects:\n\n- **Configuration-Driven:** It relies on authentication variables and files set up by dedicated configuration commands:\n - For CI/CD repositories: [Configure Org CI Authentication](https://sfdx-hardis.cloudity.com/hardis/project/configure/auth/)\n - For Monitoring repositories: [Configure Org Monitoring](https://sfdx-hardis.cloudity.com/hardis/org/configure/monitoring/)\n- **Technical Org Support:** Supports authentication to a 'technical org' (e.g., for calling Agentforce from another org) by utilizing the `SFDX_AUTH_URL_TECHNICAL_ORG` environment variable. If this variable is set, the command authenticates to this org with the alias `TECHNICAL_ORG`.\n\nTo obtain the `SFDX_AUTH_URL_TECHNICAL_ORG` value, you can run `sf org display --verbose --json` and copy the `sfdxAuthUrl` field from the output.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical flow involves:\n\n- **Flag Parsing:** It parses command-line flags such as `instanceurl`, `devhub`, `scratchorg`, and `debug` to determine the authentication context.\n- **Authentication Hook:** It triggers an internal authentication hook (`this.config.runHook('auth', ...`)) which is responsible for executing the actual authentication logic based on the provided flags (e.g., whether it's a Dev Hub or a scratch org).\n- **Environment Variable Check:** It checks for the presence of `SFDX_AUTH_URL_TECHNICAL_ORG` or `TECHNICAL_ORG_ALIAS` environment variables.\n- **`authOrg` Utility:** If a technical org is configured, it calls the `authOrg` utility function to perform the authentication for that specific org, ensuring it's connected and available for subsequent operations.\n- **Salesforce CLI Integration:** It integrates with the Salesforce CLI's authentication mechanisms to establish and manage org connections.\n</details>\n",
139
139
  "examples": [
140
- "$ sf hardis:project:deploy:sources:metadata"
140
+ "$ sf hardis:auth:login",
141
+ "CI=true sf hardis:auth:login"
141
142
  ],
142
143
  "flags": {
143
144
  "json": {
@@ -155,20 +156,28 @@
155
156
  "multiple": false,
156
157
  "type": "option"
157
158
  },
158
- "level": {
159
- "char": "l",
160
- "description": "project,branch or user",
161
- "name": "level",
162
- "default": "project",
159
+ "instanceurl": {
160
+ "char": "r",
161
+ "description": "URL of org instance",
162
+ "name": "instanceurl",
163
163
  "hasDynamicHelp": false,
164
164
  "multiple": false,
165
- "options": [
166
- "project",
167
- "branch",
168
- "user"
169
- ],
170
165
  "type": "option"
171
166
  },
167
+ "devhub": {
168
+ "char": "h",
169
+ "description": "Also connect associated DevHub",
170
+ "name": "devhub",
171
+ "allowNo": false,
172
+ "type": "boolean"
173
+ },
174
+ "scratchorg": {
175
+ "char": "s",
176
+ "description": "Scratch org",
177
+ "name": "scratchorg",
178
+ "allowNo": false,
179
+ "type": "boolean"
180
+ },
172
181
  "debug": {
173
182
  "char": "d",
174
183
  "description": "Activate debug mode (more logs)",
@@ -192,39 +201,38 @@
192
201
  },
193
202
  "hasDynamicHelp": false,
194
203
  "hiddenAliases": [],
195
- "id": "hardis:config:get",
204
+ "id": "hardis:auth:login",
196
205
  "pluginAlias": "sfdx-hardis",
197
206
  "pluginName": "sfdx-hardis",
198
207
  "pluginType": "core",
199
208
  "strict": true,
200
209
  "enableJsonFlag": true,
201
- "title": "Deploy metadata sources to org",
210
+ "title": "Login",
202
211
  "requiresProject": false,
203
212
  "isESM": true,
204
213
  "relativePath": [
205
214
  "lib",
206
215
  "commands",
207
216
  "hardis",
208
- "config",
209
- "get.js"
217
+ "auth",
218
+ "login.js"
210
219
  ],
211
220
  "aliasPermutations": [],
212
221
  "permutations": [
213
- "hardis:config:get",
214
- "config:hardis:get",
215
- "config:get:hardis",
216
- "hardis:get:config",
217
- "get:hardis:config",
218
- "get:config:hardis"
222
+ "hardis:auth:login",
223
+ "auth:hardis:login",
224
+ "auth:login:hardis",
225
+ "hardis:login:auth",
226
+ "login:hardis:auth",
227
+ "login:auth:hardis"
219
228
  ]
220
229
  },
221
- "hardis:auth:login": {
230
+ "hardis:config:get": {
222
231
  "aliases": [],
223
232
  "args": {},
224
- "description": "\n## Command Behavior\n\n**Authenticates to a Salesforce org, primarily designed for CI/CD workflows.**\n\nThis command facilitates secure and automated logins to Salesforce organizations within continuous integration and continuous delivery pipelines. It leverages pre-configured authentication details, ensuring that CI/CD processes can interact with Salesforce without manual intervention.\n\nKey aspects:\n\n- **Configuration-Driven:** It relies on authentication variables and files set up by dedicated configuration commands:\n - For CI/CD repositories: [Configure Org CI Authentication](https://sfdx-hardis.cloudity.com/hardis/project/configure/auth/)\n - For Monitoring repositories: [Configure Org Monitoring](https://sfdx-hardis.cloudity.com/hardis/org/configure/monitoring/)\n- **Technical Org Support:** Supports authentication to a 'technical org' (e.g., for calling Agentforce from another org) by utilizing the `SFDX_AUTH_URL_TECHNICAL_ORG` environment variable. If this variable is set, the command authenticates to this org with the alias `TECHNICAL_ORG`.\n\nTo obtain the `SFDX_AUTH_URL_TECHNICAL_ORG` value, you can run `sf org display --verbose --json` and copy the `sfdxAuthUrl` field from the output.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical flow involves:\n\n- **Flag Parsing:** It parses command-line flags such as `instanceurl`, `devhub`, `scratchorg`, and `debug` to determine the authentication context.\n- **Authentication Hook:** It triggers an internal authentication hook (`this.config.runHook('auth', ...`)) which is responsible for executing the actual authentication logic based on the provided flags (e.g., whether it's a Dev Hub or a scratch org).\n- **Environment Variable Check:** It checks for the presence of `SFDX_AUTH_URL_TECHNICAL_ORG` or `TECHNICAL_ORG_ALIAS` environment variables.\n- **`authOrg` Utility:** If a technical org is configured, it calls the `authOrg` utility function to perform the authentication for that specific org, ensuring it's connected and available for subsequent operations.\n- **Salesforce CLI Integration:** It integrates with the Salesforce CLI's authentication mechanisms to establish and manage org connections.\n</details>\n",
233
+ "description": "\n## Command Behavior\n\n**Retrieves and displays the sfdx-hardis configuration for a specified level.**\n\nThis command allows you to inspect the configuration that is currently in effect for your project, which is useful for debugging and understanding how sfdx-hardis will behave.\n\n- **Configuration levels:** It can retrieve configuration from three different levels:\n - **Project:** The configuration defined in the project's `.sfdx-hardis.yml` file.\n - **Branch:** The configuration defined in a branch-specific configuration file (e.g., `.sfdx-hardis.production.yml`).\n - **User:** The global user-level configuration.\n\n## Technical explanations\n\nThe command's logic is straightforward:\n\n- **`getConfig` function:** It calls the `getConfig` utility function, passing the desired configuration level as an argument.\n- **Configuration loading:** The `getConfig` function is responsible for finding the appropriate configuration file, reading its contents, and parsing it as YAML or JSON.\n- **Output:** The retrieved configuration is then displayed to the user as a JSON string.\n",
225
234
  "examples": [
226
- "$ sf hardis:auth:login",
227
- "CI=true sf hardis:auth:login"
235
+ "$ sf hardis:project:deploy:sources:metadata"
228
236
  ],
229
237
  "flags": {
230
238
  "json": {
@@ -242,28 +250,20 @@
242
250
  "multiple": false,
243
251
  "type": "option"
244
252
  },
245
- "instanceurl": {
246
- "char": "r",
247
- "description": "URL of org instance",
248
- "name": "instanceurl",
253
+ "level": {
254
+ "char": "l",
255
+ "description": "project,branch or user",
256
+ "name": "level",
257
+ "default": "project",
249
258
  "hasDynamicHelp": false,
250
259
  "multiple": false,
260
+ "options": [
261
+ "project",
262
+ "branch",
263
+ "user"
264
+ ],
251
265
  "type": "option"
252
266
  },
253
- "devhub": {
254
- "char": "h",
255
- "description": "Also connect associated DevHub",
256
- "name": "devhub",
257
- "allowNo": false,
258
- "type": "boolean"
259
- },
260
- "scratchorg": {
261
- "char": "s",
262
- "description": "Scratch org",
263
- "name": "scratchorg",
264
- "allowNo": false,
265
- "type": "boolean"
266
- },
267
267
  "debug": {
268
268
  "char": "d",
269
269
  "description": "Activate debug mode (more logs)",
@@ -287,30 +287,30 @@
287
287
  },
288
288
  "hasDynamicHelp": false,
289
289
  "hiddenAliases": [],
290
- "id": "hardis:auth:login",
290
+ "id": "hardis:config:get",
291
291
  "pluginAlias": "sfdx-hardis",
292
292
  "pluginName": "sfdx-hardis",
293
293
  "pluginType": "core",
294
294
  "strict": true,
295
295
  "enableJsonFlag": true,
296
- "title": "Login",
296
+ "title": "Deploy metadata sources to org",
297
297
  "requiresProject": false,
298
298
  "isESM": true,
299
299
  "relativePath": [
300
300
  "lib",
301
301
  "commands",
302
302
  "hardis",
303
- "auth",
304
- "login.js"
303
+ "config",
304
+ "get.js"
305
305
  ],
306
306
  "aliasPermutations": [],
307
307
  "permutations": [
308
- "hardis:auth:login",
309
- "auth:hardis:login",
310
- "auth:login:hardis",
311
- "hardis:login:auth",
312
- "login:hardis:auth",
313
- "login:auth:hardis"
308
+ "hardis:config:get",
309
+ "config:hardis:get",
310
+ "config:get:hardis",
311
+ "hardis:get:config",
312
+ "get:hardis:config",
313
+ "get:config:hardis"
314
314
  ]
315
315
  },
316
316
  "hardis:doc:fieldusage": {
@@ -2331,6 +2331,21 @@
2331
2331
  "allowNo": false,
2332
2332
  "type": "boolean"
2333
2333
  },
2334
+ "username": {
2335
+ "char": "t",
2336
+ "description": "Username of the org you want to authenticate (overrides the interactive prompt)",
2337
+ "name": "username",
2338
+ "hasDynamicHelp": false,
2339
+ "multiple": false,
2340
+ "type": "option"
2341
+ },
2342
+ "prompt-default": {
2343
+ "char": "e",
2344
+ "description": "Prompt to set the selected org as default",
2345
+ "name": "prompt-default",
2346
+ "allowNo": false,
2347
+ "type": "boolean"
2348
+ },
2334
2349
  "debug": {
2335
2350
  "char": "d",
2336
2351
  "description": "Activate debug mode (more logs)",
@@ -5259,7 +5274,9 @@
5259
5274
  "args": {},
5260
5275
  "description": "\n## Command Behavior\n\n**Exports data from a Salesforce org using an SFDMU (Salesforce Data Migration Utility) project.**\n\nThis command facilitates the extraction of data from your Salesforce environments based on configurations defined in an SFDMU workspace. It's a powerful tool for various data-related tasks, including:\n\n- **Data Backup:** Creating snapshots of your Salesforce data.\n- **Data Migration:** Extracting data for transfer to another Salesforce org or external system.\n- **Reporting and Analysis:** Exporting specific datasets for detailed analysis outside of Salesforce.\n- **Data Seeding:** Preparing data for import into other environments.\n\nKey functionalities:\n\n- **SFDMU Workspace Integration:** Leverages an existing SFDMU workspace (defined by an `export.json` file) to determine which objects and records to export, along with any filtering or transformation rules.\n- **Interactive Workspace Selection:** If the SFDMU workspace path is not provided via the `--path` flag, it interactively prompts the user to select one.\n- **Org Selection:** Ensures that a target Salesforce org is selected (either via the `--target-org` flag or through an interactive prompt) to specify the source of the data export.\n\nSee this article for a practical example:\n\n[![How to detect bad words in Salesforce records using SFDX Data Loader and sfdx-hardis](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-badwords.jpg)](https://nicolas.vuillamy.fr/how-to-detect-bad-words-in-salesforce-records-using-sfdx-data-loader-and-sfdx-hardis-171db40a9bac)\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation relies heavily on the SFDMU plugin:\n\n- **SFDMU Integration:** It acts as a wrapper around the `sfdmu` plugin, which performs the actual data export operations. The command provides an assisted interface for SFDMU execution.\n- **`exportData` Utility:** The core logic for executing the SFDMU export process is encapsulated within the `exportData` utility function, which takes the SFDMU workspace path and the source username as arguments.\n- **Interactive Prompts:** Uses `selectDataWorkspace` to allow the user to choose an SFDMU project and `promptOrgUsernameDefault` for selecting the source Salesforce org when not running in a CI environment.\n- **Environment Awareness:** Checks the `isCI` flag to determine whether to run in an interactive mode (prompting for user input) or a non-interactive mode (relying solely on command-line flags).\n- **Required Plugin:** It explicitly lists `sfdmu` as a required plugin, ensuring that the necessary dependency is in place before execution.\n</details>\n",
5261
5276
  "examples": [
5262
- "$ sf hardis:org:data:export"
5277
+ "$ sf hardis:org:data:export",
5278
+ "$ sf hardis:org:data:export --project-name MyDataProject --target-org my-org@example.com",
5279
+ "$ sf hardis:org:data:export --path ./scripts/data/MyDataProject --no-prompt --target-org my-org@example.com"
5263
5280
  ],
5264
5281
  "flags": {
5265
5282
  "json": {
@@ -5277,6 +5294,14 @@
5277
5294
  "multiple": false,
5278
5295
  "type": "option"
5279
5296
  },
5297
+ "project-name": {
5298
+ "char": "n",
5299
+ "description": "Name of the sfdmu project to use (if not defined, you will be prompted to select one)",
5300
+ "name": "project-name",
5301
+ "hasDynamicHelp": false,
5302
+ "multiple": false,
5303
+ "type": "option"
5304
+ },
5280
5305
  "path": {
5281
5306
  "char": "p",
5282
5307
  "description": "Path to the sfdmu workspace folder",
@@ -5285,6 +5310,13 @@
5285
5310
  "multiple": false,
5286
5311
  "type": "option"
5287
5312
  },
5313
+ "no-prompt": {
5314
+ "char": "r",
5315
+ "description": "Do not prompt for Org, use default org",
5316
+ "name": "no-prompt",
5317
+ "allowNo": false,
5318
+ "type": "boolean"
5319
+ },
5288
5320
  "debug": {
5289
5321
  "char": "d",
5290
5322
  "description": "Activate debug mode (more logs)",
@@ -5376,7 +5408,10 @@
5376
5408
  "args": {},
5377
5409
  "description": "Import/Load data in an org using a [SFDX Data Loader](https://help.sfdmu.com/) Project\n\nIf you need to run this command in a production org, you need to either:\n\n- Define **sfdmuCanModify** in your .sfdx-hardis.yml config file. (Example: `sfdmuCanModify: prod-instance.my.salesforce.com`)\n- Define an environment variable SFDMU_CAN_MODIFY. (Example: `SFDMU_CAN_MODIFY=prod-instance.my.salesforce.com`)\n\nSee article:\n\n[![How to detect bad words in Salesforce records using SFDX Data Loader and sfdx-hardis](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-badwords.jpg)](https://nicolas.vuillamy.fr/how-to-detect-bad-words-in-salesforce-records-using-sfdx-data-loader-and-sfdx-hardis-171db40a9bac)\n",
5378
5410
  "examples": [
5379
- "$ sf hardis:org:data:import"
5411
+ "$ sf hardis:org:data:import",
5412
+ "$ sf hardis:org:data:import --project-name MyDataProject --target-org my-org@example.com",
5413
+ "$ sf hardis:org:data:import --path ./scripts/data/MyDataProject --no-prompt --target-org my-org@example.com",
5414
+ "$ SFDMU_CAN_MODIFY=prod-instance.my.salesforce.com sf hardis:org:data:import --project-name MyDataProject --target-org prod@example.com"
5380
5415
  ],
5381
5416
  "flags": {
5382
5417
  "json": {
@@ -5394,6 +5429,14 @@
5394
5429
  "multiple": false,
5395
5430
  "type": "option"
5396
5431
  },
5432
+ "project-name": {
5433
+ "char": "n",
5434
+ "description": "Name of the sfdmu project to use (if not defined, you will be prompted to select one)",
5435
+ "name": "project-name",
5436
+ "hasDynamicHelp": false,
5437
+ "multiple": false,
5438
+ "type": "option"
5439
+ },
5397
5440
  "path": {
5398
5441
  "char": "p",
5399
5442
  "description": "Path to the sfdmu workspace folder",
@@ -5402,6 +5445,13 @@
5402
5445
  "multiple": false,
5403
5446
  "type": "option"
5404
5447
  },
5448
+ "no-prompt": {
5449
+ "char": "r",
5450
+ "description": "Do not prompt for Org, use default org",
5451
+ "name": "no-prompt",
5452
+ "allowNo": false,
5453
+ "type": "boolean"
5454
+ },
5405
5455
  "debug": {
5406
5456
  "char": "d",
5407
5457
  "description": "Activate debug mode (more logs)",
@@ -7611,16 +7661,13 @@
7611
7661
  "limits:monitor:org:hardis"
7612
7662
  ]
7613
7663
  },
7614
- "hardis:org:refresh:after-refresh": {
7664
+ "hardis:org:purge:apexlog": {
7615
7665
  "aliases": [],
7616
7666
  "args": {},
7617
- "description": "\n## Command Behavior\n\n**Restores all previously backed-up Connected Apps (including Consumer Secrets) to a Salesforce org after a sandbox refresh.**\n\nThis command is the second step in the sandbox refresh process. It scans the backup folder created before the refresh, allows selection of which Connected Apps to restore, and automates their deletion and redeployment to the refreshed org, ensuring all credentials and configuration are preserved.\n\nKey functionalities:\n\n- **Backup Folder Selection:** Prompts the user to select the correct backup folder for the sandbox instance.\n- **Connected App Discovery:** Scans the backup for all Connected App metadata files.\n- **User Selection:** Allows interactive or flag-based selection of which Connected Apps to restore.\n- **Validation:** Ensures all selected apps exist in the backup and validates user input.\n- **Org Cleanup:** Deletes existing Connected Apps from the refreshed org to allow clean redeployment.\n- **Deployment:** Deploys the selected Connected Apps (with secrets) to the org.\n- **Summary and Reporting:** Provides a summary of restored apps and their status.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is designed to be run after a sandbox refresh, using the backup created by the before-refresh command.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Backup Folder Handling:** Prompts for and validates the backup folder under `scripts/sandbox-refresh/`.\n- **Metadata Scanning:** Uses glob patterns to find all `*.connectedApp - meta.xml` files in the backup.\n- **Selection Logic:** Supports `--all`, `--name`, and interactive selection of apps to restore.\n- **Validation:** Checks that all requested apps exist in the backup and provides clear errors if not.\n- **Org Operations:** Deletes existing Connected Apps from the org before redeployment to avoid conflicts.\n- **Deployment:** Uses utility functions to deploy Connected Apps and their secrets to the org.\n- **Error Handling:** Handles and reports errors at each step, including parsing and deployment issues.\n\n</details>\n",
7667
+ "description": "\n**Purges Apex debug logs from a Salesforce org.**\n\nThis command provides a quick and efficient way to clear out accumulated Apex debug logs from your Salesforce environment. This is particularly useful for:\n\n- **Storage Management:** Freeing up valuable data storage space in your Salesforce org.\n- **Performance Optimization:** Reducing the overhead associated with large volumes of debug logs.\n- **Troubleshooting:** Ensuring that new debug logs are generated cleanly without interference from old, irrelevant logs.\n\nKey functionalities:\n\n- **Log Identification:** Queries the `ApexLog` object to identify all existing debug logs.\n- **Confirmation Prompt:** Before deletion, it prompts for user confirmation, displaying the number of Apex logs that will be deleted.\n- **Bulk Deletion:** Uses the Salesforce Bulk API to efficiently delete a large number of Apex logs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Query:** It executes a SOQL query (`SELECT Id FROM ApexLog LIMIT 50000`) to retrieve the IDs of Apex logs to be deleted. The limit is set to 50,000 to handle large volumes of logs.\n- **CSV Export:** The retrieved log IDs are temporarily exported to a CSV file (`ApexLogsToDelete_*.csv`) in the `./tmp` directory.\n- **User Confirmation:** It uses the `prompts` library to ask for user confirmation before proceeding with the deletion, displaying the count of logs to be purged.\n- **Bulk API Deletion:** It then uses the Salesforce CLI's `sf data delete bulk` command, pointing to the generated CSV file, to perform the mass deletion of Apex logs.\n- **File System Operations:** It uses `fs-extra` to create the temporary directory and manage the CSV file.\n- **Error Handling:** Includes error handling for the query and deletion operations.\n</details>\n",
7618
7668
  "examples": [
7619
- "$ sf hardis:org:refresh:after-refresh",
7620
- "$ sf hardis:org:refresh:after-refresh --name \"MyConnectedApp\" // Process specific app, no selection prompt",
7621
- "$ sf hardis:org:refresh:after-refresh --name \"App1,App2,App3\" // Process multiple apps, no selection prompt",
7622
- "$ sf hardis:org:refresh:after-refresh --all // Process all apps, no selection prompt",
7623
- "$ sf hardis:org:refresh:after-refresh --target-org myDevOrg"
7669
+ "$ sf hardis:org:purge:apexlog",
7670
+ "$ sf hardis:org:purge:apexlog --target-org nicolas.vuillamy@gmail.com"
7624
7671
  ],
7625
7672
  "flags": {
7626
7673
  "json": {
@@ -7638,37 +7685,23 @@
7638
7685
  "multiple": false,
7639
7686
  "type": "option"
7640
7687
  },
7641
- "target-org": {
7642
- "char": "o",
7643
- "name": "target-org",
7644
- "noCacheDefault": true,
7645
- "required": true,
7646
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7647
- "hasDynamicHelp": true,
7648
- "multiple": false,
7649
- "type": "option"
7650
- },
7651
- "name": {
7652
- "char": "n",
7653
- "description": "Connected App name(s) to process (bypasses selection prompt). For multiple apps, separate with commas (e.g., \"App1,App2\")",
7654
- "name": "name",
7655
- "summary": "Filter according to Name criteria",
7656
- "hasDynamicHelp": false,
7657
- "multiple": false,
7658
- "type": "option"
7688
+ "prompt": {
7689
+ "char": "z",
7690
+ "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7691
+ "name": "prompt",
7692
+ "allowNo": true,
7693
+ "type": "boolean"
7659
7694
  },
7660
- "all": {
7661
- "char": "a",
7662
- "description": "If set, all Connected Apps from the local repository will be processed. Takes precedence over --name if both are specified.",
7663
- "name": "all",
7664
- "summary": "Process all Connected Apps without selection prompt",
7695
+ "debug": {
7696
+ "char": "d",
7697
+ "description": "Activate debug mode (more logs)",
7698
+ "name": "debug",
7665
7699
  "allowNo": false,
7666
7700
  "type": "boolean"
7667
7701
  },
7668
7702
  "websocket": {
7669
7703
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7670
7704
  "name": "websocket",
7671
- "summary": "Websocket host:port for VsCode SFDX Hardis UI integration",
7672
7705
  "hasDynamicHelp": false,
7673
7706
  "multiple": false,
7674
7707
  "type": "option"
@@ -7676,78 +7709,90 @@
7676
7709
  "skipauth": {
7677
7710
  "description": "Skip authentication check when a default username is required",
7678
7711
  "name": "skipauth",
7679
- "summary": "Skip authentication check when a default username is required",
7680
7712
  "allowNo": false,
7681
7713
  "type": "boolean"
7714
+ },
7715
+ "target-org": {
7716
+ "aliases": [
7717
+ "targetusername",
7718
+ "u"
7719
+ ],
7720
+ "char": "o",
7721
+ "deprecateAliases": true,
7722
+ "name": "target-org",
7723
+ "noCacheDefault": true,
7724
+ "required": true,
7725
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7726
+ "hasDynamicHelp": true,
7727
+ "multiple": false,
7728
+ "type": "option"
7682
7729
  }
7683
7730
  },
7684
7731
  "hasDynamicHelp": true,
7685
7732
  "hiddenAliases": [],
7686
- "id": "hardis:org:refresh:after-refresh",
7733
+ "id": "hardis:org:purge:apexlog",
7687
7734
  "pluginAlias": "sfdx-hardis",
7688
7735
  "pluginName": "sfdx-hardis",
7689
7736
  "pluginType": "core",
7690
7737
  "strict": true,
7691
7738
  "enableJsonFlag": true,
7692
- "title": "Restore Connected Apps after org refresh",
7693
- "requiresProject": true,
7739
+ "title": "Purge Apex Logs",
7740
+ "requiresProject": false,
7694
7741
  "isESM": true,
7695
7742
  "relativePath": [
7696
7743
  "lib",
7697
7744
  "commands",
7698
7745
  "hardis",
7699
7746
  "org",
7700
- "refresh",
7701
- "after-refresh.js"
7747
+ "purge",
7748
+ "apexlog.js"
7702
7749
  ],
7703
7750
  "aliasPermutations": [],
7704
7751
  "permutations": [
7705
- "hardis:org:refresh:after-refresh",
7706
- "org:hardis:refresh:after-refresh",
7707
- "org:refresh:hardis:after-refresh",
7708
- "org:refresh:after-refresh:hardis",
7709
- "hardis:refresh:org:after-refresh",
7710
- "refresh:hardis:org:after-refresh",
7711
- "refresh:org:hardis:after-refresh",
7712
- "refresh:org:after-refresh:hardis",
7713
- "hardis:refresh:after-refresh:org",
7714
- "refresh:hardis:after-refresh:org",
7715
- "refresh:after-refresh:hardis:org",
7716
- "refresh:after-refresh:org:hardis",
7717
- "hardis:org:after-refresh:refresh",
7718
- "org:hardis:after-refresh:refresh",
7719
- "org:after-refresh:hardis:refresh",
7720
- "org:after-refresh:refresh:hardis",
7721
- "hardis:after-refresh:org:refresh",
7722
- "after-refresh:hardis:org:refresh",
7723
- "after-refresh:org:hardis:refresh",
7724
- "after-refresh:org:refresh:hardis",
7725
- "hardis:after-refresh:refresh:org",
7726
- "after-refresh:hardis:refresh:org",
7727
- "after-refresh:refresh:hardis:org",
7728
- "after-refresh:refresh:org:hardis"
7729
- ]
7730
- },
7731
- "hardis:org:refresh:before-refresh": {
7732
- "aliases": [],
7733
- "args": {},
7734
- "description": "\n## Command Behavior\n\n**Backs up all Connected Apps, their secrets, certificates, and custom settings from a Salesforce org before a sandbox refresh, enabling full restoration after the refresh.**\n\nThis command is essential for Salesforce sandbox refresh operations where Connected Apps (and their Consumer Secrets), certificates, and custom settings would otherwise be lost. It automates the extraction, secure storage, and (optionally) deletion of Connected Apps, ensuring that all credentials and configuration can be restored post-refresh.\n\nKey functionalities:\n\n- **Connected App Discovery:** Lists all Connected Apps in the org, with options to filter by name, process all, or interactively select.\n- **User Selection:** Allows interactive or flag-based selection of which Connected Apps to back up.\n- **Metadata Retrieval:** Retrieves Connected App metadata and saves it in a dedicated project folder for the sandbox instance.\n- **Consumer Secret Extraction:** Attempts to extract Consumer Secrets automatically using browser automation (Puppeteer), or prompts for manual entry if automation fails.\n- **Config Persistence:** Stores the list of selected apps in the project config for use during restoration.\n- **Optional Deletion:** Can delete the Connected Apps from the org after backup, as required for re-upload after refresh.\n- **Certificate Backup:** Retrieves all org certificates and their definitions, saving them for later restoration.\n- **Custom Settings Backup:** Lists all custom settings in the org, allows user selection, and exports their data to JSON files for backup.\n- **Summary and Reporting:** Provides a summary of actions, including which apps, certificates, and custom settings were saved and whether secrets were captured.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is designed to be run before a sandbox refresh. It ensures that all Connected Apps, secrets, certificates, and custom settings are safely stored for later restoration.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Salesforce CLI Integration:** Uses `sf org list metadata`, `sf project retrieve start`, and other CLI commands to discover and retrieve Connected Apps, certificates, and custom settings.\n- **Metadata Handling:** Saves Connected App XML files and certificate files in a dedicated folder under `scripts/sandbox-refresh/<sandbox-folder>`.\n- **Consumer Secret Handling:** Uses Puppeteer to automate browser login and extraction of Consumer Secrets, falling back to manual prompts if needed.\n- **Custom Settings Handling:** Lists all custom settings, allows user selection, and exports their data using `sf data tree export` to JSON files.\n- **Config Management:** Updates `config/.sfdx-hardis.yml` with the list of selected apps for later use.\n- **Deletion Logic:** Optionally deletes Connected Apps from the org (required for re-upload after refresh), with user confirmation unless running in CI or with `--delete` flag.\n- **Error Handling:** Provides detailed error messages and guidance if retrieval or extraction fails.\n- **Reporting:** Sends summary and configuration files to the WebSocket client for reporting and traceability.\n\n</details>\n",
7735
- "examples": [
7736
- "$ sf hardis:org:refresh:before-refresh",
7737
- "$ sf hardis:org:refresh:before-refresh --name \"MyConnectedApp\"",
7738
- "$ sf hardis:org:refresh:before-refresh --name \"App1,App2,App3\"",
7739
- "$ sf hardis:org:refresh:before-refresh --all",
7740
- "$ sf hardis:org:refresh:before-refresh --delete"
7741
- ],
7742
- "flags": {
7743
- "json": {
7744
- "description": "Format output as json.",
7745
- "helpGroup": "GLOBAL",
7746
- "name": "json",
7747
- "allowNo": false,
7748
- "type": "boolean"
7749
- },
7750
- "flags-dir": {
7752
+ "hardis:org:purge:apexlog",
7753
+ "org:hardis:purge:apexlog",
7754
+ "org:purge:hardis:apexlog",
7755
+ "org:purge:apexlog:hardis",
7756
+ "hardis:purge:org:apexlog",
7757
+ "purge:hardis:org:apexlog",
7758
+ "purge:org:hardis:apexlog",
7759
+ "purge:org:apexlog:hardis",
7760
+ "hardis:purge:apexlog:org",
7761
+ "purge:hardis:apexlog:org",
7762
+ "purge:apexlog:hardis:org",
7763
+ "purge:apexlog:org:hardis",
7764
+ "hardis:org:apexlog:purge",
7765
+ "org:hardis:apexlog:purge",
7766
+ "org:apexlog:hardis:purge",
7767
+ "org:apexlog:purge:hardis",
7768
+ "hardis:apexlog:org:purge",
7769
+ "apexlog:hardis:org:purge",
7770
+ "apexlog:org:hardis:purge",
7771
+ "apexlog:org:purge:hardis",
7772
+ "hardis:apexlog:purge:org",
7773
+ "apexlog:hardis:purge:org",
7774
+ "apexlog:purge:hardis:org",
7775
+ "apexlog:purge:org:hardis"
7776
+ ]
7777
+ },
7778
+ "hardis:org:purge:flow": {
7779
+ "aliases": [],
7780
+ "args": {},
7781
+ "description": "\n**Purges old or unwanted Flow versions from a Salesforce org, with an option to delete related Flow Interviews.**\n\nThis command helps maintain a clean and performant Salesforce org by removing obsolete Flow versions. Over time, multiple versions of Flows can accumulate, consuming storage and potentially impacting performance. This tool provides a controlled way to clean up these versions.\n\nKey functionalities:\n\n- **Targeted Flow Selection:** Allows you to filter Flow versions to delete by name (`--name`) and status (`--status`, e.g., `Obsolete`, `Draft`, `Inactive`).\n- **Flow Interview Deletion:** If a Flow version cannot be deleted due to active Flow Interviews, the `--delete-flow-interviews` flag (or interactive prompt) allows you to delete these interviews first, then retry the Flow version deletion.\n- **Confirmation Prompt:** In interactive mode, it prompts for confirmation before proceeding with the deletion of Flow versions and Flow Interviews.\n- **Partial Success Handling:** The `--allowpurgefailure` flag (default `true`) allows the command to continue even if some deletions fail, reporting the errors.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Queries (Tooling API):** It queries the `Flow` object (using the Tooling API) to list Flow versions based on the provided filters (name, status, manageable state).\n- **Bulk Deletion (Tooling API):** It uses `bulkDeleteTooling` to perform mass deletions of Flow versions. If deletion fails due to active interviews, it extracts the interview IDs.\n- **Flow Interview Management:** If `delete-flow-interviews` is enabled, it queries `FlowInterview` objects, performs bulk deletion of the identified interviews using `bulkDelete`, and then retries the Flow version deletion.\n- **Interactive Prompts:** Uses the `prompts` library to interact with the user for selecting Flows, statuses, and confirming deletion actions.\n- **Error Reporting:** Logs detailed error messages for failed deletions, including the specific reasons.\n- **Command-Line Execution:** Uses `execSfdxJson` to execute Salesforce CLI commands for querying Flow data.\n</details>\n",
7782
+ "examples": [
7783
+ "$ sf hardis:org:purge:flow",
7784
+ "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --no-prompt --delete-flow-interviews",
7785
+ "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --status \"Obsolete,Draft,InvalidDraft\" --name TestFlow"
7786
+ ],
7787
+ "flags": {
7788
+ "json": {
7789
+ "description": "Format output as json.",
7790
+ "helpGroup": "GLOBAL",
7791
+ "name": "json",
7792
+ "allowNo": false,
7793
+ "type": "boolean"
7794
+ },
7795
+ "flags-dir": {
7751
7796
  "helpGroup": "GLOBAL",
7752
7797
  "name": "flags-dir",
7753
7798
  "summary": "Import flag values from a directory.",
@@ -7755,38 +7800,56 @@
7755
7800
  "multiple": false,
7756
7801
  "type": "option"
7757
7802
  },
7758
- "target-org": {
7759
- "char": "o",
7760
- "name": "target-org",
7761
- "noCacheDefault": true,
7762
- "required": true,
7763
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7764
- "hasDynamicHelp": true,
7803
+ "prompt": {
7804
+ "char": "z",
7805
+ "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7806
+ "name": "prompt",
7807
+ "allowNo": true,
7808
+ "type": "boolean"
7809
+ },
7810
+ "name": {
7811
+ "char": "n",
7812
+ "description": "Filter according to Name criteria",
7813
+ "name": "name",
7814
+ "hasDynamicHelp": false,
7765
7815
  "multiple": false,
7766
7816
  "type": "option"
7767
7817
  },
7768
- "delete": {
7769
- "char": "d",
7770
- "description": "By default, Connected Apps are not deleted from the org after saving. Set this flag to force their deletion so they will be able to be reuploaded again after refreshing the org.",
7771
- "name": "delete",
7772
- "summary": "Delete Connected Apps from org after saving",
7818
+ "status": {
7819
+ "char": "s",
7820
+ "description": "Filter according to Status criteria",
7821
+ "name": "status",
7822
+ "hasDynamicHelp": false,
7823
+ "multiple": false,
7824
+ "type": "option"
7825
+ },
7826
+ "delete-flow-interviews": {
7827
+ "char": "w",
7828
+ "description": "If the presence of Flow interviews prevent to delete flows versions, delete them before retrying to delete flow versions",
7829
+ "name": "delete-flow-interviews",
7773
7830
  "allowNo": false,
7774
7831
  "type": "boolean"
7775
7832
  },
7776
- "name": {
7777
- "char": "n",
7778
- "description": "Connected App name(s) to process. For multiple apps, separate with commas (e.g., \"App1,App2\")",
7779
- "name": "name",
7780
- "summary": "Filter according to Name criteria",
7833
+ "allowpurgefailure": {
7834
+ "char": "f",
7835
+ "description": "Allows purges to fail without exiting with 1. Use --no-allowpurgefailure to disable",
7836
+ "name": "allowpurgefailure",
7837
+ "allowNo": true,
7838
+ "type": "boolean"
7839
+ },
7840
+ "instanceurl": {
7841
+ "char": "r",
7842
+ "description": "URL of org instance",
7843
+ "name": "instanceurl",
7844
+ "default": "https://login.salesforce.com",
7781
7845
  "hasDynamicHelp": false,
7782
7846
  "multiple": false,
7783
7847
  "type": "option"
7784
7848
  },
7785
- "all": {
7786
- "char": "a",
7787
- "description": "If set, all Connected Apps from the org will be processed. Takes precedence over --name if both are specified.",
7788
- "name": "all",
7789
- "summary": "Process all Connected Apps without selection prompt",
7849
+ "debug": {
7850
+ "char": "d",
7851
+ "description": "Activate debug mode (more logs)",
7852
+ "name": "debug",
7790
7853
  "allowNo": false,
7791
7854
  "type": "boolean"
7792
7855
  },
@@ -7802,61 +7865,80 @@
7802
7865
  "name": "skipauth",
7803
7866
  "allowNo": false,
7804
7867
  "type": "boolean"
7868
+ },
7869
+ "target-org": {
7870
+ "aliases": [
7871
+ "targetusername",
7872
+ "u"
7873
+ ],
7874
+ "char": "o",
7875
+ "deprecateAliases": true,
7876
+ "name": "target-org",
7877
+ "noCacheDefault": true,
7878
+ "required": true,
7879
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7880
+ "hasDynamicHelp": true,
7881
+ "multiple": false,
7882
+ "type": "option"
7805
7883
  }
7806
7884
  },
7807
7885
  "hasDynamicHelp": true,
7808
7886
  "hiddenAliases": [],
7809
- "id": "hardis:org:refresh:before-refresh",
7887
+ "id": "hardis:org:purge:flow",
7810
7888
  "pluginAlias": "sfdx-hardis",
7811
7889
  "pluginName": "sfdx-hardis",
7812
7890
  "pluginType": "core",
7813
7891
  "strict": true,
7814
7892
  "enableJsonFlag": true,
7815
- "requiresProject": true,
7893
+ "title": "Purge Flow versions",
7894
+ "requiresProject": false,
7816
7895
  "isESM": true,
7817
7896
  "relativePath": [
7818
7897
  "lib",
7819
7898
  "commands",
7820
7899
  "hardis",
7821
7900
  "org",
7822
- "refresh",
7823
- "before-refresh.js"
7901
+ "purge",
7902
+ "flow.js"
7824
7903
  ],
7825
7904
  "aliasPermutations": [],
7826
7905
  "permutations": [
7827
- "hardis:org:refresh:before-refresh",
7828
- "org:hardis:refresh:before-refresh",
7829
- "org:refresh:hardis:before-refresh",
7830
- "org:refresh:before-refresh:hardis",
7831
- "hardis:refresh:org:before-refresh",
7832
- "refresh:hardis:org:before-refresh",
7833
- "refresh:org:hardis:before-refresh",
7834
- "refresh:org:before-refresh:hardis",
7835
- "hardis:refresh:before-refresh:org",
7836
- "refresh:hardis:before-refresh:org",
7837
- "refresh:before-refresh:hardis:org",
7838
- "refresh:before-refresh:org:hardis",
7839
- "hardis:org:before-refresh:refresh",
7840
- "org:hardis:before-refresh:refresh",
7841
- "org:before-refresh:hardis:refresh",
7842
- "org:before-refresh:refresh:hardis",
7843
- "hardis:before-refresh:org:refresh",
7844
- "before-refresh:hardis:org:refresh",
7845
- "before-refresh:org:hardis:refresh",
7846
- "before-refresh:org:refresh:hardis",
7847
- "hardis:before-refresh:refresh:org",
7848
- "before-refresh:hardis:refresh:org",
7849
- "before-refresh:refresh:hardis:org",
7850
- "before-refresh:refresh:org:hardis"
7906
+ "hardis:org:purge:flow",
7907
+ "org:hardis:purge:flow",
7908
+ "org:purge:hardis:flow",
7909
+ "org:purge:flow:hardis",
7910
+ "hardis:purge:org:flow",
7911
+ "purge:hardis:org:flow",
7912
+ "purge:org:hardis:flow",
7913
+ "purge:org:flow:hardis",
7914
+ "hardis:purge:flow:org",
7915
+ "purge:hardis:flow:org",
7916
+ "purge:flow:hardis:org",
7917
+ "purge:flow:org:hardis",
7918
+ "hardis:org:flow:purge",
7919
+ "org:hardis:flow:purge",
7920
+ "org:flow:hardis:purge",
7921
+ "org:flow:purge:hardis",
7922
+ "hardis:flow:org:purge",
7923
+ "flow:hardis:org:purge",
7924
+ "flow:org:hardis:purge",
7925
+ "flow:org:purge:hardis",
7926
+ "hardis:flow:purge:org",
7927
+ "flow:hardis:purge:org",
7928
+ "flow:purge:hardis:org",
7929
+ "flow:purge:org:hardis"
7851
7930
  ]
7852
7931
  },
7853
- "hardis:org:retrieve:packageconfig": {
7932
+ "hardis:org:refresh:after-refresh": {
7854
7933
  "aliases": [],
7855
7934
  "args": {},
7856
- "description": "\n**Retrieves the installed package configuration from a Salesforce org and optionally updates the local project configuration.**\n\nThis command is useful for maintaining an accurate record of installed packages within your Salesforce project, which is crucial for managing dependencies and ensuring consistent deployments across environments.\n\nKey functionalities:\n\n- **Package Listing:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a list of all installed packages.\n- **Configuration Update:** Offers the option to update your local project's configuration with the retrieved list of installed packages. This can be beneficial for automating package installations during environment setup or CI/CD processes.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Org Connection:** It establishes a connection to the target Salesforce org using the provided or prompted username.\n- **Metadata Retrieval:** It utilizes `MetadataUtils.listInstalledPackages` to query the Salesforce org and obtain details about the installed packages.\n- **Interactive Prompt:** It uses the `prompts` library to ask the user whether they want to update their local project configuration with the retrieved package list.\n- **Configuration Management:** If the user confirms, it calls `managePackageConfig` to update the project's configuration file (likely `.sfdx-hardis.yml`) with the new package information.\n- **User Feedback:** Provides clear messages to the user about the success of the package retrieval and configuration update.\n</details>\n",
7935
+ "description": "\n## Command Behavior\n\n**Restores all previously backed-up Connected Apps (including Consumer Secrets), certificates, custom settings, records and other metadata to a Salesforce org after a sandbox refresh.**\n\nThis command is the second step in the sandbox refresh process. It scans the backup folder created before the refresh, allows interactive or flag-driven selection of items to restore, and automates cleanup and redeployment to the refreshed org while preserving credentials and configuration.\n\nKey functionalities:\n\n- **Choose a backup to restore:** Lets you pick the saved sandbox project that contains the artifacts to restore.\n- **Select which items to restore:** Finds Connected App XMLs, certificates, custom settings and other artifacts and lets you pick what to restore (or restore all).\n- **Safety checks and validation:** Confirms files exist and prompts before making changes to the target org.\n- **Prepare org for restore:** Optionally cleans up existing Connected Apps so saved apps can be re-deployed without conflict.\n- **Redeploy saved artifacts:** Restores Connected Apps (with saved secrets), certificates, SAML SSO configs, custom settings and other metadata.\n- **Handle SAML configs:** Cleans and updates SAML XML files and helps you choose certificates to wire into restored configs.\n- **Restore records:** Optionally runs data import from selected SFDMU workspaces to restore record data.\n- **Reporting & persistence:** Sends restore reports and can update project config to record what was restored.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is intended to be run after a sandbox refresh to re-apply saved metadata, credentials and data.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Backup Folder Handling:** Reads the immediate subfolders of `scripts/sandbox-refresh/` and validates the chosen project contains the expected `manifest/` and `force-app` layout.\n- **Metadata & Deployment APIs:** Uses `sf project deploy start --manifest` for package-based deploys, `sf project deploy start --metadata-dir` for MDAPI artifacts (certificates), and utility functions for Connected App deployment that preserve consumer secrets.\n- **SAML Handling:** Queries active certificates via tooling API, updates SAML XML files, and deploys using `sf project deploy start -m SamlSsoConfig`.\n- **Records Handling:** Uses interactive selection of SFDMU workspaces and runs data import utilities to restore records.\n- **Error Handling & Summary:** Aggregates results, logs success/warnings/errors, and returns a structured result indicating which items were restored and any failures.\n\n</details>\n",
7857
7936
  "examples": [
7858
- "$ sf hardis:org:retrieve:packageconfig",
7859
- "sf hardis:org:retrieve:packageconfig -u myOrg"
7937
+ "$ sf hardis:org:refresh:after-refresh",
7938
+ "$ sf hardis:org:refresh:after-refresh --name \"MyConnectedApp\" // Process specific app, no selection prompt",
7939
+ "$ sf hardis:org:refresh:after-refresh --name \"App1,App2,App3\" // Process multiple apps, no selection prompt",
7940
+ "$ sf hardis:org:refresh:after-refresh --all // Process all apps, no selection prompt",
7941
+ "$ sf hardis:org:refresh:after-refresh --target-org myDevOrg"
7860
7942
  ],
7861
7943
  "flags": {
7862
7944
  "json": {
@@ -7874,16 +7956,37 @@
7874
7956
  "multiple": false,
7875
7957
  "type": "option"
7876
7958
  },
7877
- "debug": {
7878
- "char": "d",
7879
- "description": "Activate debug mode (more logs)",
7880
- "name": "debug",
7959
+ "target-org": {
7960
+ "char": "o",
7961
+ "name": "target-org",
7962
+ "noCacheDefault": true,
7963
+ "required": true,
7964
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7965
+ "hasDynamicHelp": true,
7966
+ "multiple": false,
7967
+ "type": "option"
7968
+ },
7969
+ "name": {
7970
+ "char": "n",
7971
+ "description": "Connected App name(s) to process (bypasses selection prompt). For multiple apps, separate with commas (e.g., \"App1,App2\")",
7972
+ "name": "name",
7973
+ "summary": "Filter according to Name criteria",
7974
+ "hasDynamicHelp": false,
7975
+ "multiple": false,
7976
+ "type": "option"
7977
+ },
7978
+ "all": {
7979
+ "char": "a",
7980
+ "description": "If set, all Connected Apps from the local repository will be processed. Takes precedence over --name if both are specified.",
7981
+ "name": "all",
7982
+ "summary": "Process all Connected Apps without selection prompt",
7881
7983
  "allowNo": false,
7882
7984
  "type": "boolean"
7883
7985
  },
7884
7986
  "websocket": {
7885
7987
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7886
7988
  "name": "websocket",
7989
+ "summary": "Websocket host:port for VsCode SFDX Hardis UI integration",
7887
7990
  "hasDynamicHelp": false,
7888
7991
  "multiple": false,
7889
7992
  "type": "option"
@@ -7891,79 +7994,68 @@
7891
7994
  "skipauth": {
7892
7995
  "description": "Skip authentication check when a default username is required",
7893
7996
  "name": "skipauth",
7997
+ "summary": "Skip authentication check when a default username is required",
7894
7998
  "allowNo": false,
7895
7999
  "type": "boolean"
7896
- },
7897
- "target-org": {
7898
- "aliases": [
7899
- "targetusername",
7900
- "u"
7901
- ],
7902
- "char": "o",
7903
- "deprecateAliases": true,
7904
- "name": "target-org",
7905
- "noCacheDefault": true,
7906
- "required": true,
7907
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7908
- "hasDynamicHelp": true,
7909
- "multiple": false,
7910
- "type": "option"
7911
8000
  }
7912
8001
  },
7913
8002
  "hasDynamicHelp": true,
7914
8003
  "hiddenAliases": [],
7915
- "id": "hardis:org:retrieve:packageconfig",
8004
+ "id": "hardis:org:refresh:after-refresh",
7916
8005
  "pluginAlias": "sfdx-hardis",
7917
8006
  "pluginName": "sfdx-hardis",
7918
8007
  "pluginType": "core",
7919
8008
  "strict": true,
7920
8009
  "enableJsonFlag": true,
7921
- "title": "Retrieve package configuration from an org",
7922
- "requiresProject": false,
8010
+ "title": "Restore Connected Apps after org refresh",
8011
+ "requiresProject": true,
7923
8012
  "isESM": true,
7924
8013
  "relativePath": [
7925
8014
  "lib",
7926
8015
  "commands",
7927
8016
  "hardis",
7928
8017
  "org",
7929
- "retrieve",
7930
- "packageconfig.js"
8018
+ "refresh",
8019
+ "after-refresh.js"
7931
8020
  ],
7932
8021
  "aliasPermutations": [],
7933
8022
  "permutations": [
7934
- "hardis:org:retrieve:packageconfig",
7935
- "org:hardis:retrieve:packageconfig",
7936
- "org:retrieve:hardis:packageconfig",
7937
- "org:retrieve:packageconfig:hardis",
7938
- "hardis:retrieve:org:packageconfig",
7939
- "retrieve:hardis:org:packageconfig",
7940
- "retrieve:org:hardis:packageconfig",
7941
- "retrieve:org:packageconfig:hardis",
7942
- "hardis:retrieve:packageconfig:org",
7943
- "retrieve:hardis:packageconfig:org",
7944
- "retrieve:packageconfig:hardis:org",
7945
- "retrieve:packageconfig:org:hardis",
7946
- "hardis:org:packageconfig:retrieve",
7947
- "org:hardis:packageconfig:retrieve",
7948
- "org:packageconfig:hardis:retrieve",
7949
- "org:packageconfig:retrieve:hardis",
7950
- "hardis:packageconfig:org:retrieve",
7951
- "packageconfig:hardis:org:retrieve",
7952
- "packageconfig:org:hardis:retrieve",
7953
- "packageconfig:org:retrieve:hardis",
7954
- "hardis:packageconfig:retrieve:org",
7955
- "packageconfig:hardis:retrieve:org",
7956
- "packageconfig:retrieve:hardis:org",
7957
- "packageconfig:retrieve:org:hardis"
8023
+ "hardis:org:refresh:after-refresh",
8024
+ "org:hardis:refresh:after-refresh",
8025
+ "org:refresh:hardis:after-refresh",
8026
+ "org:refresh:after-refresh:hardis",
8027
+ "hardis:refresh:org:after-refresh",
8028
+ "refresh:hardis:org:after-refresh",
8029
+ "refresh:org:hardis:after-refresh",
8030
+ "refresh:org:after-refresh:hardis",
8031
+ "hardis:refresh:after-refresh:org",
8032
+ "refresh:hardis:after-refresh:org",
8033
+ "refresh:after-refresh:hardis:org",
8034
+ "refresh:after-refresh:org:hardis",
8035
+ "hardis:org:after-refresh:refresh",
8036
+ "org:hardis:after-refresh:refresh",
8037
+ "org:after-refresh:hardis:refresh",
8038
+ "org:after-refresh:refresh:hardis",
8039
+ "hardis:after-refresh:org:refresh",
8040
+ "after-refresh:hardis:org:refresh",
8041
+ "after-refresh:org:hardis:refresh",
8042
+ "after-refresh:org:refresh:hardis",
8043
+ "hardis:after-refresh:refresh:org",
8044
+ "after-refresh:hardis:refresh:org",
8045
+ "after-refresh:refresh:hardis:org",
8046
+ "after-refresh:refresh:org:hardis"
7958
8047
  ]
7959
8048
  },
7960
- "hardis:org:purge:apexlog": {
8049
+ "hardis:org:refresh:before-refresh": {
7961
8050
  "aliases": [],
7962
8051
  "args": {},
7963
- "description": "\n**Purges Apex debug logs from a Salesforce org.**\n\nThis command provides a quick and efficient way to clear out accumulated Apex debug logs from your Salesforce environment. This is particularly useful for:\n\n- **Storage Management:** Freeing up valuable data storage space in your Salesforce org.\n- **Performance Optimization:** Reducing the overhead associated with large volumes of debug logs.\n- **Troubleshooting:** Ensuring that new debug logs are generated cleanly without interference from old, irrelevant logs.\n\nKey functionalities:\n\n- **Log Identification:** Queries the `ApexLog` object to identify all existing debug logs.\n- **Confirmation Prompt:** Before deletion, it prompts for user confirmation, displaying the number of Apex logs that will be deleted.\n- **Bulk Deletion:** Uses the Salesforce Bulk API to efficiently delete a large number of Apex logs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Query:** It executes a SOQL query (`SELECT Id FROM ApexLog LIMIT 50000`) to retrieve the IDs of Apex logs to be deleted. The limit is set to 50,000 to handle large volumes of logs.\n- **CSV Export:** The retrieved log IDs are temporarily exported to a CSV file (`ApexLogsToDelete_*.csv`) in the `./tmp` directory.\n- **User Confirmation:** It uses the `prompts` library to ask for user confirmation before proceeding with the deletion, displaying the count of logs to be purged.\n- **Bulk API Deletion:** It then uses the Salesforce CLI's `sf data delete bulk` command, pointing to the generated CSV file, to perform the mass deletion of Apex logs.\n- **File System Operations:** It uses `fs-extra` to create the temporary directory and manage the CSV file.\n- **Error Handling:** Includes error handling for the query and deletion operations.\n</details>\n",
8052
+ "description": "\n## Command Behavior\n\n**Backs up all Connected Apps (including Consumer Secrets), certificates, custom settings, records and other metadata from a Salesforce org before a sandbox refresh, enabling full restoration after the refresh.**\n\nThis command prepares a complete backup prior to a sandbox refresh. It creates a dedicated project under `scripts/sandbox-refresh/<sandbox-folder>`, retrieves metadata and data, attempts to capture Connected App consumer secrets, and can optionally delete the apps so they can be reuploaded after the refresh.\n\nKey functionalities:\n\n- **Create a save project:** Generates a dedicated project folder to store all artifacts for the sandbox backup.\n- **Find and select Connected Apps:** Lists Connected Apps in the org and lets you pick specific apps, use a name filter, or process all apps.\n- **Save metadata for restore:** Builds a manifest and retrieves the metadata types you choose so they can be restored after the refresh.\n- **Capture Consumer Secrets:** Attempts to capture Connected App consumer secrets automatically (opens a browser session when possible) and falls back to a short manual prompt when needed.\n- **Collect certificates:** Saves certificate files and their definitions so they can be redeployed later.\n- **Export custom settings & records:** Lets you pick custom settings to export as JSON and optionally export records using configured data workspaces.\n- **Persist choices & report:** Stores your backup choices in project config and sends report files for traceability.\n- **Optional cleanup:** Can delete backed-up Connected Apps from the org so they can be re-uploaded cleanly after the refresh.\n- **Interactive safety checks:** Prompts you to confirm package contents and other potentially destructive actions; sensible defaults are chosen where appropriate.\n\nThis command is part of [sfdx-hardis Sandbox Refresh](https://sfdx-hardis.cloudity.com/salesforce-sandbox-refresh/) and is intended to be run before a sandbox refresh so that all credentials, certificates, metadata and data can be restored afterwards.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Salesforce CLI Integration:** Uses `sf org list metadata`, `sf project retrieve start`, `sf project generate`, `sf project deploy start`, and `sf data tree export`/`import` where applicable.\n- **Metadata Handling:** Writes and reads package XML files under the generated project (`manifest/`), copies MDAPI certificate artifacts into `force-app/main/default/certs`, and produces `package-metadata-to-restore.xml` for post-refresh deployment.\n- **Consumer Secret Handling:** Uses `puppeteer-core` with an executable path from `getChromeExecutablePath()` (env var `PUPPETEER_EXECUTABLE_PATH` may be required). Falls back to manual prompt when browser automation cannot be used.\n- **Data & Records:** Exports custom settings to JSON and supports exporting records through SFDMU workspaces chosen interactively.\n- **Config & Reporting:** Updates project/user config under `config/.sfdx-hardis.yml#refreshSandboxConfig` and reports artifacts to the WebSocket client.\n- **Error Handling:** Provides clear error messages and a summary response object indicating success/failure and which secrets were captured.\n\n</details>\n",
7964
8053
  "examples": [
7965
- "$ sf hardis:org:purge:apexlog",
7966
- "$ sf hardis:org:purge:apexlog --target-org nicolas.vuillamy@gmail.com"
8054
+ "$ sf hardis:org:refresh:before-refresh",
8055
+ "$ sf hardis:org:refresh:before-refresh --name \"MyConnectedApp\"",
8056
+ "$ sf hardis:org:refresh:before-refresh --name \"App1,App2,App3\"",
8057
+ "$ sf hardis:org:refresh:before-refresh --all",
8058
+ "$ sf hardis:org:refresh:before-refresh --delete"
7967
8059
  ],
7968
8060
  "flags": {
7969
8061
  "json": {
@@ -7981,17 +8073,38 @@
7981
8073
  "multiple": false,
7982
8074
  "type": "option"
7983
8075
  },
7984
- "prompt": {
7985
- "char": "z",
7986
- "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7987
- "name": "prompt",
7988
- "allowNo": true,
7989
- "type": "boolean"
8076
+ "target-org": {
8077
+ "char": "o",
8078
+ "name": "target-org",
8079
+ "noCacheDefault": true,
8080
+ "required": true,
8081
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8082
+ "hasDynamicHelp": true,
8083
+ "multiple": false,
8084
+ "type": "option"
7990
8085
  },
7991
- "debug": {
8086
+ "delete": {
7992
8087
  "char": "d",
7993
- "description": "Activate debug mode (more logs)",
7994
- "name": "debug",
8088
+ "description": "By default, Connected Apps are not deleted from the org after saving. Set this flag to force their deletion so they will be able to be reuploaded again after refreshing the org.",
8089
+ "name": "delete",
8090
+ "summary": "Delete Connected Apps from org after saving",
8091
+ "allowNo": false,
8092
+ "type": "boolean"
8093
+ },
8094
+ "name": {
8095
+ "char": "n",
8096
+ "description": "Connected App name(s) to process. For multiple apps, separate with commas (e.g., \"App1,App2\")",
8097
+ "name": "name",
8098
+ "summary": "Filter according to Name criteria",
8099
+ "hasDynamicHelp": false,
8100
+ "multiple": false,
8101
+ "type": "option"
8102
+ },
8103
+ "all": {
8104
+ "char": "a",
8105
+ "description": "If set, all Connected Apps from the org will be processed. Takes precedence over --name if both are specified.",
8106
+ "name": "all",
8107
+ "summary": "Process all Connected Apps without selection prompt",
7995
8108
  "allowNo": false,
7996
8109
  "type": "boolean"
7997
8110
  },
@@ -8007,78 +8120,61 @@
8007
8120
  "name": "skipauth",
8008
8121
  "allowNo": false,
8009
8122
  "type": "boolean"
8010
- },
8011
- "target-org": {
8012
- "aliases": [
8013
- "targetusername",
8014
- "u"
8015
- ],
8016
- "char": "o",
8017
- "deprecateAliases": true,
8018
- "name": "target-org",
8019
- "noCacheDefault": true,
8020
- "required": true,
8021
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8022
- "hasDynamicHelp": true,
8023
- "multiple": false,
8024
- "type": "option"
8025
8123
  }
8026
8124
  },
8027
8125
  "hasDynamicHelp": true,
8028
8126
  "hiddenAliases": [],
8029
- "id": "hardis:org:purge:apexlog",
8127
+ "id": "hardis:org:refresh:before-refresh",
8030
8128
  "pluginAlias": "sfdx-hardis",
8031
8129
  "pluginName": "sfdx-hardis",
8032
8130
  "pluginType": "core",
8033
8131
  "strict": true,
8034
8132
  "enableJsonFlag": true,
8035
- "title": "Purge Apex Logs",
8036
- "requiresProject": false,
8133
+ "requiresProject": true,
8037
8134
  "isESM": true,
8038
8135
  "relativePath": [
8039
8136
  "lib",
8040
8137
  "commands",
8041
8138
  "hardis",
8042
8139
  "org",
8043
- "purge",
8044
- "apexlog.js"
8140
+ "refresh",
8141
+ "before-refresh.js"
8045
8142
  ],
8046
8143
  "aliasPermutations": [],
8047
8144
  "permutations": [
8048
- "hardis:org:purge:apexlog",
8049
- "org:hardis:purge:apexlog",
8050
- "org:purge:hardis:apexlog",
8051
- "org:purge:apexlog:hardis",
8052
- "hardis:purge:org:apexlog",
8053
- "purge:hardis:org:apexlog",
8054
- "purge:org:hardis:apexlog",
8055
- "purge:org:apexlog:hardis",
8056
- "hardis:purge:apexlog:org",
8057
- "purge:hardis:apexlog:org",
8058
- "purge:apexlog:hardis:org",
8059
- "purge:apexlog:org:hardis",
8060
- "hardis:org:apexlog:purge",
8061
- "org:hardis:apexlog:purge",
8062
- "org:apexlog:hardis:purge",
8063
- "org:apexlog:purge:hardis",
8064
- "hardis:apexlog:org:purge",
8065
- "apexlog:hardis:org:purge",
8066
- "apexlog:org:hardis:purge",
8067
- "apexlog:org:purge:hardis",
8068
- "hardis:apexlog:purge:org",
8069
- "apexlog:hardis:purge:org",
8070
- "apexlog:purge:hardis:org",
8071
- "apexlog:purge:org:hardis"
8145
+ "hardis:org:refresh:before-refresh",
8146
+ "org:hardis:refresh:before-refresh",
8147
+ "org:refresh:hardis:before-refresh",
8148
+ "org:refresh:before-refresh:hardis",
8149
+ "hardis:refresh:org:before-refresh",
8150
+ "refresh:hardis:org:before-refresh",
8151
+ "refresh:org:hardis:before-refresh",
8152
+ "refresh:org:before-refresh:hardis",
8153
+ "hardis:refresh:before-refresh:org",
8154
+ "refresh:hardis:before-refresh:org",
8155
+ "refresh:before-refresh:hardis:org",
8156
+ "refresh:before-refresh:org:hardis",
8157
+ "hardis:org:before-refresh:refresh",
8158
+ "org:hardis:before-refresh:refresh",
8159
+ "org:before-refresh:hardis:refresh",
8160
+ "org:before-refresh:refresh:hardis",
8161
+ "hardis:before-refresh:org:refresh",
8162
+ "before-refresh:hardis:org:refresh",
8163
+ "before-refresh:org:hardis:refresh",
8164
+ "before-refresh:org:refresh:hardis",
8165
+ "hardis:before-refresh:refresh:org",
8166
+ "before-refresh:hardis:refresh:org",
8167
+ "before-refresh:refresh:hardis:org",
8168
+ "before-refresh:refresh:org:hardis"
8072
8169
  ]
8073
8170
  },
8074
- "hardis:org:purge:flow": {
8171
+ "hardis:org:retrieve:packageconfig": {
8075
8172
  "aliases": [],
8076
8173
  "args": {},
8077
- "description": "\n**Purges old or unwanted Flow versions from a Salesforce org, with an option to delete related Flow Interviews.**\n\nThis command helps maintain a clean and performant Salesforce org by removing obsolete Flow versions. Over time, multiple versions of Flows can accumulate, consuming storage and potentially impacting performance. This tool provides a controlled way to clean up these versions.\n\nKey functionalities:\n\n- **Targeted Flow Selection:** Allows you to filter Flow versions to delete by name (`--name`) and status (`--status`, e.g., `Obsolete`, `Draft`, `Inactive`).\n- **Flow Interview Deletion:** If a Flow version cannot be deleted due to active Flow Interviews, the `--delete-flow-interviews` flag (or interactive prompt) allows you to delete these interviews first, then retry the Flow version deletion.\n- **Confirmation Prompt:** In interactive mode, it prompts for confirmation before proceeding with the deletion of Flow versions and Flow Interviews.\n- **Partial Success Handling:** The `--allowpurgefailure` flag (default `true`) allows the command to continue even if some deletions fail, reporting the errors.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Queries (Tooling API):** It queries the `Flow` object (using the Tooling API) to list Flow versions based on the provided filters (name, status, manageable state).\n- **Bulk Deletion (Tooling API):** It uses `bulkDeleteTooling` to perform mass deletions of Flow versions. If deletion fails due to active interviews, it extracts the interview IDs.\n- **Flow Interview Management:** If `delete-flow-interviews` is enabled, it queries `FlowInterview` objects, performs bulk deletion of the identified interviews using `bulkDelete`, and then retries the Flow version deletion.\n- **Interactive Prompts:** Uses the `prompts` library to interact with the user for selecting Flows, statuses, and confirming deletion actions.\n- **Error Reporting:** Logs detailed error messages for failed deletions, including the specific reasons.\n- **Command-Line Execution:** Uses `execSfdxJson` to execute Salesforce CLI commands for querying Flow data.\n</details>\n",
8174
+ "description": "\n**Retrieves the installed package configuration from a Salesforce org and optionally updates the local project configuration.**\n\nThis command is useful for maintaining an accurate record of installed packages within your Salesforce project, which is crucial for managing dependencies and ensuring consistent deployments across environments.\n\nKey functionalities:\n\n- **Package Listing:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a list of all installed packages.\n- **Configuration Update:** Offers the option to update your local project's configuration with the retrieved list of installed packages. This can be beneficial for automating package installations during environment setup or CI/CD processes.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Org Connection:** It establishes a connection to the target Salesforce org using the provided or prompted username.\n- **Metadata Retrieval:** It utilizes `MetadataUtils.listInstalledPackages` to query the Salesforce org and obtain details about the installed packages.\n- **Interactive Prompt:** It uses the `prompts` library to ask the user whether they want to update their local project configuration with the retrieved package list.\n- **Configuration Management:** If the user confirms, it calls `managePackageConfig` to update the project's configuration file (likely `.sfdx-hardis.yml`) with the new package information.\n- **User Feedback:** Provides clear messages to the user about the success of the package retrieval and configuration update.\n</details>\n",
8078
8175
  "examples": [
8079
- "$ sf hardis:org:purge:flow",
8080
- "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --no-prompt --delete-flow-interviews",
8081
- "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --status \"Obsolete,Draft,InvalidDraft\" --name TestFlow"
8176
+ "$ sf hardis:org:retrieve:packageconfig",
8177
+ "sf hardis:org:retrieve:packageconfig -u myOrg"
8082
8178
  ],
8083
8179
  "flags": {
8084
8180
  "json": {
@@ -8096,52 +8192,6 @@
8096
8192
  "multiple": false,
8097
8193
  "type": "option"
8098
8194
  },
8099
- "prompt": {
8100
- "char": "z",
8101
- "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
8102
- "name": "prompt",
8103
- "allowNo": true,
8104
- "type": "boolean"
8105
- },
8106
- "name": {
8107
- "char": "n",
8108
- "description": "Filter according to Name criteria",
8109
- "name": "name",
8110
- "hasDynamicHelp": false,
8111
- "multiple": false,
8112
- "type": "option"
8113
- },
8114
- "status": {
8115
- "char": "s",
8116
- "description": "Filter according to Status criteria",
8117
- "name": "status",
8118
- "hasDynamicHelp": false,
8119
- "multiple": false,
8120
- "type": "option"
8121
- },
8122
- "delete-flow-interviews": {
8123
- "char": "w",
8124
- "description": "If the presence of Flow interviews prevent to delete flows versions, delete them before retrying to delete flow versions",
8125
- "name": "delete-flow-interviews",
8126
- "allowNo": false,
8127
- "type": "boolean"
8128
- },
8129
- "allowpurgefailure": {
8130
- "char": "f",
8131
- "description": "Allows purges to fail without exiting with 1. Use --no-allowpurgefailure to disable",
8132
- "name": "allowpurgefailure",
8133
- "allowNo": true,
8134
- "type": "boolean"
8135
- },
8136
- "instanceurl": {
8137
- "char": "r",
8138
- "description": "URL of org instance",
8139
- "name": "instanceurl",
8140
- "default": "https://login.salesforce.com",
8141
- "hasDynamicHelp": false,
8142
- "multiple": false,
8143
- "type": "option"
8144
- },
8145
8195
  "debug": {
8146
8196
  "char": "d",
8147
8197
  "description": "Activate debug mode (more logs)",
@@ -8180,13 +8230,13 @@
8180
8230
  },
8181
8231
  "hasDynamicHelp": true,
8182
8232
  "hiddenAliases": [],
8183
- "id": "hardis:org:purge:flow",
8233
+ "id": "hardis:org:retrieve:packageconfig",
8184
8234
  "pluginAlias": "sfdx-hardis",
8185
8235
  "pluginName": "sfdx-hardis",
8186
8236
  "pluginType": "core",
8187
8237
  "strict": true,
8188
8238
  "enableJsonFlag": true,
8189
- "title": "Purge Flow versions",
8239
+ "title": "Retrieve package configuration from an org",
8190
8240
  "requiresProject": false,
8191
8241
  "isESM": true,
8192
8242
  "relativePath": [
@@ -8194,35 +8244,35 @@
8194
8244
  "commands",
8195
8245
  "hardis",
8196
8246
  "org",
8197
- "purge",
8198
- "flow.js"
8247
+ "retrieve",
8248
+ "packageconfig.js"
8199
8249
  ],
8200
8250
  "aliasPermutations": [],
8201
8251
  "permutations": [
8202
- "hardis:org:purge:flow",
8203
- "org:hardis:purge:flow",
8204
- "org:purge:hardis:flow",
8205
- "org:purge:flow:hardis",
8206
- "hardis:purge:org:flow",
8207
- "purge:hardis:org:flow",
8208
- "purge:org:hardis:flow",
8209
- "purge:org:flow:hardis",
8210
- "hardis:purge:flow:org",
8211
- "purge:hardis:flow:org",
8212
- "purge:flow:hardis:org",
8213
- "purge:flow:org:hardis",
8214
- "hardis:org:flow:purge",
8215
- "org:hardis:flow:purge",
8216
- "org:flow:hardis:purge",
8217
- "org:flow:purge:hardis",
8218
- "hardis:flow:org:purge",
8219
- "flow:hardis:org:purge",
8220
- "flow:org:hardis:purge",
8221
- "flow:org:purge:hardis",
8222
- "hardis:flow:purge:org",
8223
- "flow:hardis:purge:org",
8224
- "flow:purge:hardis:org",
8225
- "flow:purge:org:hardis"
8252
+ "hardis:org:retrieve:packageconfig",
8253
+ "org:hardis:retrieve:packageconfig",
8254
+ "org:retrieve:hardis:packageconfig",
8255
+ "org:retrieve:packageconfig:hardis",
8256
+ "hardis:retrieve:org:packageconfig",
8257
+ "retrieve:hardis:org:packageconfig",
8258
+ "retrieve:org:hardis:packageconfig",
8259
+ "retrieve:org:packageconfig:hardis",
8260
+ "hardis:retrieve:packageconfig:org",
8261
+ "retrieve:hardis:packageconfig:org",
8262
+ "retrieve:packageconfig:hardis:org",
8263
+ "retrieve:packageconfig:org:hardis",
8264
+ "hardis:org:packageconfig:retrieve",
8265
+ "org:hardis:packageconfig:retrieve",
8266
+ "org:packageconfig:hardis:retrieve",
8267
+ "org:packageconfig:retrieve:hardis",
8268
+ "hardis:packageconfig:org:retrieve",
8269
+ "packageconfig:hardis:org:retrieve",
8270
+ "packageconfig:org:hardis:retrieve",
8271
+ "packageconfig:org:retrieve:hardis",
8272
+ "hardis:packageconfig:retrieve:org",
8273
+ "packageconfig:hardis:retrieve:org",
8274
+ "packageconfig:retrieve:hardis:org",
8275
+ "packageconfig:retrieve:org:hardis"
8226
8276
  ]
8227
8277
  },
8228
8278
  "hardis:org:test:apex": {
@@ -9512,6 +9562,238 @@
9512
9562
  "remotesites:audit:project:hardis"
9513
9563
  ]
9514
9564
  },
9565
+ "hardis:project:configure:auth": {
9566
+ "aliases": [],
9567
+ "args": {},
9568
+ "description": "\n## Command Behavior\n\n**Configures authentication between a Git branch and a target Salesforce org for CI/CD deployments.**\n\nThis command facilitates the setup of automated CI/CD pipelines, enabling seamless deployments from specific Git branches to designated Salesforce orgs. It supports both standard Salesforce orgs and Dev Hub configurations, catering to various enterprise deployment workflows.\n\nKey functionalities include:\n\n- **Org Selection/Login:** Guides the user to select an existing Salesforce org or log in to a new one.\n- **Git Branch Association:** Allows associating a specific Git branch with the chosen Salesforce org.\n- **Merge Target Definition:** Enables defining target Git branches into which the configured branch can merge, ensuring controlled deployment flows.\n- **Salesforce Username Configuration:** Prompts for the Salesforce username to be used by the CI server for deployments.\n- **SSL Certificate Generation:** Automatically generates an SSL certificate for secure authentication.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's implementation involves several key technical aspects:\n\n- **SF CLI Integration:** Utilizes \n@salesforce/sf-plugins-core\n for command structure and flag parsing.\n- **Interactive Prompts:** Employs the \nprompts\n library for interactive user input, guiding the configuration process.\n- **Git Integration:** Interacts with Git to retrieve branch information using \n`git().branch([\"--list\", \"-r\"])`\n.\n- **Configuration Management:** Leverages internal utilities (`checkConfig`, `getConfig`, `setConfig`, `setInConfigFile`) to read from and write to project-specific configuration files (e.g., `.sfdx-hardis.<branchName>.yml`).\n- **Salesforce CLI Execution:** Executes Salesforce CLI commands programmatically via `execSfdxJson` for org interactions.\n- **SSL Certificate Generation:** Calls `generateSSLCertificate` to create necessary SSL certificates for JWT-based authentication.\n- **WebSocket Communication:** Uses `WebSocketClient` for potential communication with external tools or processes, such as restarting the command in VS Code.\n- **Dependency Check:** Ensures the presence of `openssl` on the system, which is required for SSL certificate generation.\n",
9569
+ "examples": [
9570
+ "$ sf hardis:project:configure:auth"
9571
+ ],
9572
+ "flags": {
9573
+ "json": {
9574
+ "description": "Format output as json.",
9575
+ "helpGroup": "GLOBAL",
9576
+ "name": "json",
9577
+ "allowNo": false,
9578
+ "type": "boolean"
9579
+ },
9580
+ "flags-dir": {
9581
+ "helpGroup": "GLOBAL",
9582
+ "name": "flags-dir",
9583
+ "summary": "Import flag values from a directory.",
9584
+ "hasDynamicHelp": false,
9585
+ "multiple": false,
9586
+ "type": "option"
9587
+ },
9588
+ "devhub": {
9589
+ "char": "b",
9590
+ "description": "Configure project DevHub",
9591
+ "name": "devhub",
9592
+ "allowNo": false,
9593
+ "type": "boolean"
9594
+ },
9595
+ "debug": {
9596
+ "char": "d",
9597
+ "description": "Activate debug mode (more logs)",
9598
+ "name": "debug",
9599
+ "allowNo": false,
9600
+ "type": "boolean"
9601
+ },
9602
+ "websocket": {
9603
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
9604
+ "name": "websocket",
9605
+ "hasDynamicHelp": false,
9606
+ "multiple": false,
9607
+ "type": "option"
9608
+ },
9609
+ "skipauth": {
9610
+ "description": "Skip authentication check when a default username is required",
9611
+ "name": "skipauth",
9612
+ "allowNo": false,
9613
+ "type": "boolean"
9614
+ },
9615
+ "target-org": {
9616
+ "aliases": [
9617
+ "targetusername",
9618
+ "u"
9619
+ ],
9620
+ "char": "o",
9621
+ "deprecateAliases": true,
9622
+ "name": "target-org",
9623
+ "noCacheDefault": true,
9624
+ "summary": "Username or alias of the target org.",
9625
+ "hasDynamicHelp": true,
9626
+ "multiple": false,
9627
+ "type": "option"
9628
+ },
9629
+ "target-dev-hub": {
9630
+ "aliases": [
9631
+ "targetdevhubusername"
9632
+ ],
9633
+ "char": "v",
9634
+ "deprecateAliases": true,
9635
+ "name": "target-dev-hub",
9636
+ "noCacheDefault": true,
9637
+ "required": false,
9638
+ "summary": "Username or alias of the Dev Hub org.",
9639
+ "hasDynamicHelp": true,
9640
+ "multiple": false,
9641
+ "type": "option"
9642
+ }
9643
+ },
9644
+ "hasDynamicHelp": true,
9645
+ "hiddenAliases": [],
9646
+ "id": "hardis:project:configure:auth",
9647
+ "pluginAlias": "sfdx-hardis",
9648
+ "pluginName": "sfdx-hardis",
9649
+ "pluginType": "core",
9650
+ "strict": true,
9651
+ "enableJsonFlag": true,
9652
+ "title": "Configure authentication",
9653
+ "requiresProject": false,
9654
+ "requiresDependencies": [
9655
+ "openssl"
9656
+ ],
9657
+ "isESM": true,
9658
+ "relativePath": [
9659
+ "lib",
9660
+ "commands",
9661
+ "hardis",
9662
+ "project",
9663
+ "configure",
9664
+ "auth.js"
9665
+ ],
9666
+ "aliasPermutations": [],
9667
+ "permutations": [
9668
+ "hardis:project:configure:auth",
9669
+ "project:hardis:configure:auth",
9670
+ "project:configure:hardis:auth",
9671
+ "project:configure:auth:hardis",
9672
+ "hardis:configure:project:auth",
9673
+ "configure:hardis:project:auth",
9674
+ "configure:project:hardis:auth",
9675
+ "configure:project:auth:hardis",
9676
+ "hardis:configure:auth:project",
9677
+ "configure:hardis:auth:project",
9678
+ "configure:auth:hardis:project",
9679
+ "configure:auth:project:hardis",
9680
+ "hardis:project:auth:configure",
9681
+ "project:hardis:auth:configure",
9682
+ "project:auth:hardis:configure",
9683
+ "project:auth:configure:hardis",
9684
+ "hardis:auth:project:configure",
9685
+ "auth:hardis:project:configure",
9686
+ "auth:project:hardis:configure",
9687
+ "auth:project:configure:hardis",
9688
+ "hardis:auth:configure:project",
9689
+ "auth:hardis:configure:project",
9690
+ "auth:configure:hardis:project",
9691
+ "auth:configure:project:hardis"
9692
+ ]
9693
+ },
9694
+ "hardis:project:convert:profilestopermsets": {
9695
+ "aliases": [],
9696
+ "args": {},
9697
+ "description": "\n## Command Behavior\n\n**Converts existing Salesforce Profiles into Permission Sets, facilitating a more granular and recommended security model.**\n\nThis command helps in migrating permissions from Profiles to Permission Sets, which is a best practice for managing user access in Salesforce. It creates a new Permission Set for each specified Profile, adopting a naming convention of `PS_PROFILENAME`.\n\nKey functionalities:\n\n- **Profile to Permission Set Conversion:** Automatically extracts permissions from a Profile and creates a corresponding Permission Set.\n- **Naming Convention:** New Permission Sets are named with a `PS_` prefix followed by the Profile name (e.g., `PS_Standard_User`).\n- **Exclusion Filter:** Allows you to exclude specific Profiles from the conversion process using the `--except` flag.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **External Plugin Integration:** It relies on the `shane-sfdx-plugins` (specifically the `sf shane:profile:convert` command) to perform the actual conversion.\n- **File System Scan:** It reads the contents of the `force-app/main/default/profiles` directory to identify all available Profile metadata files.\n- **Command Execution:** For each identified Profile (that is not excluded), it constructs and executes the `sf shane:profile:convert` command with the appropriate Profile name and desired Permission Set name.\n- **Error Handling:** Includes basic error handling for the external command execution.\n</details>\n",
9698
+ "examples": [
9699
+ "$ sf hardis:project:convert:profilestopermsets"
9700
+ ],
9701
+ "flags": {
9702
+ "json": {
9703
+ "description": "Format output as json.",
9704
+ "helpGroup": "GLOBAL",
9705
+ "name": "json",
9706
+ "allowNo": false,
9707
+ "type": "boolean"
9708
+ },
9709
+ "flags-dir": {
9710
+ "helpGroup": "GLOBAL",
9711
+ "name": "flags-dir",
9712
+ "summary": "Import flag values from a directory.",
9713
+ "hasDynamicHelp": false,
9714
+ "multiple": false,
9715
+ "type": "option"
9716
+ },
9717
+ "except": {
9718
+ "char": "e",
9719
+ "description": "List of filters",
9720
+ "name": "except",
9721
+ "default": [],
9722
+ "hasDynamicHelp": false,
9723
+ "multiple": true,
9724
+ "type": "option"
9725
+ },
9726
+ "debug": {
9727
+ "char": "d",
9728
+ "description": "Activate debug mode (more logs)",
9729
+ "name": "debug",
9730
+ "allowNo": false,
9731
+ "type": "boolean"
9732
+ },
9733
+ "websocket": {
9734
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
9735
+ "name": "websocket",
9736
+ "hasDynamicHelp": false,
9737
+ "multiple": false,
9738
+ "type": "option"
9739
+ },
9740
+ "skipauth": {
9741
+ "description": "Skip authentication check when a default username is required",
9742
+ "name": "skipauth",
9743
+ "allowNo": false,
9744
+ "type": "boolean"
9745
+ }
9746
+ },
9747
+ "hasDynamicHelp": false,
9748
+ "hiddenAliases": [],
9749
+ "id": "hardis:project:convert:profilestopermsets",
9750
+ "pluginAlias": "sfdx-hardis",
9751
+ "pluginName": "sfdx-hardis",
9752
+ "pluginType": "core",
9753
+ "strict": true,
9754
+ "enableJsonFlag": true,
9755
+ "title": "Convert Profiles into Permission Sets",
9756
+ "requiresProject": true,
9757
+ "requiresSfdxPlugins": [
9758
+ "shane-sfdx-plugins"
9759
+ ],
9760
+ "isESM": true,
9761
+ "relativePath": [
9762
+ "lib",
9763
+ "commands",
9764
+ "hardis",
9765
+ "project",
9766
+ "convert",
9767
+ "profilestopermsets.js"
9768
+ ],
9769
+ "aliasPermutations": [],
9770
+ "permutations": [
9771
+ "hardis:project:convert:profilestopermsets",
9772
+ "project:hardis:convert:profilestopermsets",
9773
+ "project:convert:hardis:profilestopermsets",
9774
+ "project:convert:profilestopermsets:hardis",
9775
+ "hardis:convert:project:profilestopermsets",
9776
+ "convert:hardis:project:profilestopermsets",
9777
+ "convert:project:hardis:profilestopermsets",
9778
+ "convert:project:profilestopermsets:hardis",
9779
+ "hardis:convert:profilestopermsets:project",
9780
+ "convert:hardis:profilestopermsets:project",
9781
+ "convert:profilestopermsets:hardis:project",
9782
+ "convert:profilestopermsets:project:hardis",
9783
+ "hardis:project:profilestopermsets:convert",
9784
+ "project:hardis:profilestopermsets:convert",
9785
+ "project:profilestopermsets:hardis:convert",
9786
+ "project:profilestopermsets:convert:hardis",
9787
+ "hardis:profilestopermsets:project:convert",
9788
+ "profilestopermsets:hardis:project:convert",
9789
+ "profilestopermsets:project:hardis:convert",
9790
+ "profilestopermsets:project:convert:hardis",
9791
+ "hardis:profilestopermsets:convert:project",
9792
+ "profilestopermsets:hardis:convert:project",
9793
+ "profilestopermsets:convert:hardis:project",
9794
+ "profilestopermsets:convert:project:hardis"
9795
+ ]
9796
+ },
9515
9797
  "hardis:project:clean:emptyitems": {
9516
9798
  "aliases": [],
9517
9799
  "args": {},
@@ -10997,238 +11279,6 @@
10997
11279
  "xml:clean:project:hardis"
10998
11280
  ]
10999
11281
  },
11000
- "hardis:project:convert:profilestopermsets": {
11001
- "aliases": [],
11002
- "args": {},
11003
- "description": "\n## Command Behavior\n\n**Converts existing Salesforce Profiles into Permission Sets, facilitating a more granular and recommended security model.**\n\nThis command helps in migrating permissions from Profiles to Permission Sets, which is a best practice for managing user access in Salesforce. It creates a new Permission Set for each specified Profile, adopting a naming convention of `PS_PROFILENAME`.\n\nKey functionalities:\n\n- **Profile to Permission Set Conversion:** Automatically extracts permissions from a Profile and creates a corresponding Permission Set.\n- **Naming Convention:** New Permission Sets are named with a `PS_` prefix followed by the Profile name (e.g., `PS_Standard_User`).\n- **Exclusion Filter:** Allows you to exclude specific Profiles from the conversion process using the `--except` flag.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **External Plugin Integration:** It relies on the `shane-sfdx-plugins` (specifically the `sf shane:profile:convert` command) to perform the actual conversion.\n- **File System Scan:** It reads the contents of the `force-app/main/default/profiles` directory to identify all available Profile metadata files.\n- **Command Execution:** For each identified Profile (that is not excluded), it constructs and executes the `sf shane:profile:convert` command with the appropriate Profile name and desired Permission Set name.\n- **Error Handling:** Includes basic error handling for the external command execution.\n</details>\n",
11004
- "examples": [
11005
- "$ sf hardis:project:convert:profilestopermsets"
11006
- ],
11007
- "flags": {
11008
- "json": {
11009
- "description": "Format output as json.",
11010
- "helpGroup": "GLOBAL",
11011
- "name": "json",
11012
- "allowNo": false,
11013
- "type": "boolean"
11014
- },
11015
- "flags-dir": {
11016
- "helpGroup": "GLOBAL",
11017
- "name": "flags-dir",
11018
- "summary": "Import flag values from a directory.",
11019
- "hasDynamicHelp": false,
11020
- "multiple": false,
11021
- "type": "option"
11022
- },
11023
- "except": {
11024
- "char": "e",
11025
- "description": "List of filters",
11026
- "name": "except",
11027
- "default": [],
11028
- "hasDynamicHelp": false,
11029
- "multiple": true,
11030
- "type": "option"
11031
- },
11032
- "debug": {
11033
- "char": "d",
11034
- "description": "Activate debug mode (more logs)",
11035
- "name": "debug",
11036
- "allowNo": false,
11037
- "type": "boolean"
11038
- },
11039
- "websocket": {
11040
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
11041
- "name": "websocket",
11042
- "hasDynamicHelp": false,
11043
- "multiple": false,
11044
- "type": "option"
11045
- },
11046
- "skipauth": {
11047
- "description": "Skip authentication check when a default username is required",
11048
- "name": "skipauth",
11049
- "allowNo": false,
11050
- "type": "boolean"
11051
- }
11052
- },
11053
- "hasDynamicHelp": false,
11054
- "hiddenAliases": [],
11055
- "id": "hardis:project:convert:profilestopermsets",
11056
- "pluginAlias": "sfdx-hardis",
11057
- "pluginName": "sfdx-hardis",
11058
- "pluginType": "core",
11059
- "strict": true,
11060
- "enableJsonFlag": true,
11061
- "title": "Convert Profiles into Permission Sets",
11062
- "requiresProject": true,
11063
- "requiresSfdxPlugins": [
11064
- "shane-sfdx-plugins"
11065
- ],
11066
- "isESM": true,
11067
- "relativePath": [
11068
- "lib",
11069
- "commands",
11070
- "hardis",
11071
- "project",
11072
- "convert",
11073
- "profilestopermsets.js"
11074
- ],
11075
- "aliasPermutations": [],
11076
- "permutations": [
11077
- "hardis:project:convert:profilestopermsets",
11078
- "project:hardis:convert:profilestopermsets",
11079
- "project:convert:hardis:profilestopermsets",
11080
- "project:convert:profilestopermsets:hardis",
11081
- "hardis:convert:project:profilestopermsets",
11082
- "convert:hardis:project:profilestopermsets",
11083
- "convert:project:hardis:profilestopermsets",
11084
- "convert:project:profilestopermsets:hardis",
11085
- "hardis:convert:profilestopermsets:project",
11086
- "convert:hardis:profilestopermsets:project",
11087
- "convert:profilestopermsets:hardis:project",
11088
- "convert:profilestopermsets:project:hardis",
11089
- "hardis:project:profilestopermsets:convert",
11090
- "project:hardis:profilestopermsets:convert",
11091
- "project:profilestopermsets:hardis:convert",
11092
- "project:profilestopermsets:convert:hardis",
11093
- "hardis:profilestopermsets:project:convert",
11094
- "profilestopermsets:hardis:project:convert",
11095
- "profilestopermsets:project:hardis:convert",
11096
- "profilestopermsets:project:convert:hardis",
11097
- "hardis:profilestopermsets:convert:project",
11098
- "profilestopermsets:hardis:convert:project",
11099
- "profilestopermsets:convert:hardis:project",
11100
- "profilestopermsets:convert:project:hardis"
11101
- ]
11102
- },
11103
- "hardis:project:configure:auth": {
11104
- "aliases": [],
11105
- "args": {},
11106
- "description": "\n## Command Behavior\n\n**Configures authentication between a Git branch and a target Salesforce org for CI/CD deployments.**\n\nThis command facilitates the setup of automated CI/CD pipelines, enabling seamless deployments from specific Git branches to designated Salesforce orgs. It supports both standard Salesforce orgs and Dev Hub configurations, catering to various enterprise deployment workflows.\n\nKey functionalities include:\n\n- **Org Selection/Login:** Guides the user to select an existing Salesforce org or log in to a new one.\n- **Git Branch Association:** Allows associating a specific Git branch with the chosen Salesforce org.\n- **Merge Target Definition:** Enables defining target Git branches into which the configured branch can merge, ensuring controlled deployment flows.\n- **Salesforce Username Configuration:** Prompts for the Salesforce username to be used by the CI server for deployments.\n- **SSL Certificate Generation:** Automatically generates an SSL certificate for secure authentication.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's implementation involves several key technical aspects:\n\n- **SF CLI Integration:** Utilizes \n@salesforce/sf-plugins-core\n for command structure and flag parsing.\n- **Interactive Prompts:** Employs the \nprompts\n library for interactive user input, guiding the configuration process.\n- **Git Integration:** Interacts with Git to retrieve branch information using \n`git().branch([\"--list\", \"-r\"])`\n.\n- **Configuration Management:** Leverages internal utilities (`checkConfig`, `getConfig`, `setConfig`, `setInConfigFile`) to read from and write to project-specific configuration files (e.g., `.sfdx-hardis.<branchName>.yml`).\n- **Salesforce CLI Execution:** Executes Salesforce CLI commands programmatically via `execSfdxJson` for org interactions.\n- **SSL Certificate Generation:** Calls `generateSSLCertificate` to create necessary SSL certificates for JWT-based authentication.\n- **WebSocket Communication:** Uses `WebSocketClient` for potential communication with external tools or processes, such as restarting the command in VS Code.\n- **Dependency Check:** Ensures the presence of `openssl` on the system, which is required for SSL certificate generation.\n",
11107
- "examples": [
11108
- "$ sf hardis:project:configure:auth"
11109
- ],
11110
- "flags": {
11111
- "json": {
11112
- "description": "Format output as json.",
11113
- "helpGroup": "GLOBAL",
11114
- "name": "json",
11115
- "allowNo": false,
11116
- "type": "boolean"
11117
- },
11118
- "flags-dir": {
11119
- "helpGroup": "GLOBAL",
11120
- "name": "flags-dir",
11121
- "summary": "Import flag values from a directory.",
11122
- "hasDynamicHelp": false,
11123
- "multiple": false,
11124
- "type": "option"
11125
- },
11126
- "devhub": {
11127
- "char": "b",
11128
- "description": "Configure project DevHub",
11129
- "name": "devhub",
11130
- "allowNo": false,
11131
- "type": "boolean"
11132
- },
11133
- "debug": {
11134
- "char": "d",
11135
- "description": "Activate debug mode (more logs)",
11136
- "name": "debug",
11137
- "allowNo": false,
11138
- "type": "boolean"
11139
- },
11140
- "websocket": {
11141
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
11142
- "name": "websocket",
11143
- "hasDynamicHelp": false,
11144
- "multiple": false,
11145
- "type": "option"
11146
- },
11147
- "skipauth": {
11148
- "description": "Skip authentication check when a default username is required",
11149
- "name": "skipauth",
11150
- "allowNo": false,
11151
- "type": "boolean"
11152
- },
11153
- "target-org": {
11154
- "aliases": [
11155
- "targetusername",
11156
- "u"
11157
- ],
11158
- "char": "o",
11159
- "deprecateAliases": true,
11160
- "name": "target-org",
11161
- "noCacheDefault": true,
11162
- "summary": "Username or alias of the target org.",
11163
- "hasDynamicHelp": true,
11164
- "multiple": false,
11165
- "type": "option"
11166
- },
11167
- "target-dev-hub": {
11168
- "aliases": [
11169
- "targetdevhubusername"
11170
- ],
11171
- "char": "v",
11172
- "deprecateAliases": true,
11173
- "name": "target-dev-hub",
11174
- "noCacheDefault": true,
11175
- "required": false,
11176
- "summary": "Username or alias of the Dev Hub org.",
11177
- "hasDynamicHelp": true,
11178
- "multiple": false,
11179
- "type": "option"
11180
- }
11181
- },
11182
- "hasDynamicHelp": true,
11183
- "hiddenAliases": [],
11184
- "id": "hardis:project:configure:auth",
11185
- "pluginAlias": "sfdx-hardis",
11186
- "pluginName": "sfdx-hardis",
11187
- "pluginType": "core",
11188
- "strict": true,
11189
- "enableJsonFlag": true,
11190
- "title": "Configure authentication",
11191
- "requiresProject": false,
11192
- "requiresDependencies": [
11193
- "openssl"
11194
- ],
11195
- "isESM": true,
11196
- "relativePath": [
11197
- "lib",
11198
- "commands",
11199
- "hardis",
11200
- "project",
11201
- "configure",
11202
- "auth.js"
11203
- ],
11204
- "aliasPermutations": [],
11205
- "permutations": [
11206
- "hardis:project:configure:auth",
11207
- "project:hardis:configure:auth",
11208
- "project:configure:hardis:auth",
11209
- "project:configure:auth:hardis",
11210
- "hardis:configure:project:auth",
11211
- "configure:hardis:project:auth",
11212
- "configure:project:hardis:auth",
11213
- "configure:project:auth:hardis",
11214
- "hardis:configure:auth:project",
11215
- "configure:hardis:auth:project",
11216
- "configure:auth:hardis:project",
11217
- "configure:auth:project:hardis",
11218
- "hardis:project:auth:configure",
11219
- "project:hardis:auth:configure",
11220
- "project:auth:hardis:configure",
11221
- "project:auth:configure:hardis",
11222
- "hardis:auth:project:configure",
11223
- "auth:hardis:project:configure",
11224
- "auth:project:hardis:configure",
11225
- "auth:project:configure:hardis",
11226
- "hardis:auth:configure:project",
11227
- "auth:hardis:configure:project",
11228
- "auth:configure:hardis:project",
11229
- "auth:configure:project:hardis"
11230
- ]
11231
- },
11232
11282
  "hardis:project:deploy:notify": {
11233
11283
  "aliases": [],
11234
11284
  "args": {},
@@ -15101,5 +15151,5 @@
15101
15151
  ]
15102
15152
  }
15103
15153
  },
15104
- "version": "6.1.4"
15154
+ "version": "6.2.0"
15105
15155
  }