sfdx-hardis 6.6.1-alpha202510111519.0 → 6.7.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.
package/oclif.manifest.json
CHANGED
|
@@ -57,12 +57,13 @@
|
|
|
57
57
|
"world:hello"
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
|
-
"hardis:
|
|
60
|
+
"hardis:auth:login": {
|
|
61
61
|
"aliases": [],
|
|
62
62
|
"args": {},
|
|
63
|
-
"description": "\n## Command Behavior\n\n**
|
|
63
|
+
"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",
|
|
64
64
|
"examples": [
|
|
65
|
-
"$ sf hardis:
|
|
65
|
+
"$ sf hardis:auth:login",
|
|
66
|
+
"CI=true sf hardis:auth:login"
|
|
66
67
|
],
|
|
67
68
|
"flags": {
|
|
68
69
|
"json": {
|
|
@@ -80,6 +81,28 @@
|
|
|
80
81
|
"multiple": false,
|
|
81
82
|
"type": "option"
|
|
82
83
|
},
|
|
84
|
+
"instanceurl": {
|
|
85
|
+
"char": "r",
|
|
86
|
+
"description": "URL of org instance",
|
|
87
|
+
"name": "instanceurl",
|
|
88
|
+
"hasDynamicHelp": false,
|
|
89
|
+
"multiple": false,
|
|
90
|
+
"type": "option"
|
|
91
|
+
},
|
|
92
|
+
"devhub": {
|
|
93
|
+
"char": "h",
|
|
94
|
+
"description": "Also connect associated DevHub",
|
|
95
|
+
"name": "devhub",
|
|
96
|
+
"allowNo": false,
|
|
97
|
+
"type": "boolean"
|
|
98
|
+
},
|
|
99
|
+
"scratchorg": {
|
|
100
|
+
"char": "s",
|
|
101
|
+
"description": "Scratch org",
|
|
102
|
+
"name": "scratchorg",
|
|
103
|
+
"allowNo": false,
|
|
104
|
+
"type": "boolean"
|
|
105
|
+
},
|
|
83
106
|
"debug": {
|
|
84
107
|
"char": "d",
|
|
85
108
|
"description": "Activate debug mode (more logs)",
|
|
@@ -103,41 +126,38 @@
|
|
|
103
126
|
},
|
|
104
127
|
"hasDynamicHelp": false,
|
|
105
128
|
"hiddenAliases": [],
|
|
106
|
-
"id": "hardis:
|
|
129
|
+
"id": "hardis:auth:login",
|
|
107
130
|
"pluginAlias": "sfdx-hardis",
|
|
108
131
|
"pluginName": "sfdx-hardis",
|
|
109
132
|
"pluginType": "core",
|
|
110
133
|
"strict": true,
|
|
111
134
|
"enableJsonFlag": true,
|
|
112
|
-
"title": "
|
|
113
|
-
"uiConfig": {
|
|
114
|
-
"hide": true
|
|
115
|
-
},
|
|
135
|
+
"title": "Login",
|
|
116
136
|
"requiresProject": false,
|
|
117
137
|
"isESM": true,
|
|
118
138
|
"relativePath": [
|
|
119
139
|
"lib",
|
|
120
140
|
"commands",
|
|
121
141
|
"hardis",
|
|
122
|
-
"
|
|
123
|
-
"
|
|
142
|
+
"auth",
|
|
143
|
+
"login.js"
|
|
124
144
|
],
|
|
125
145
|
"aliasPermutations": [],
|
|
126
146
|
"permutations": [
|
|
127
|
-
"hardis:
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"hardis:
|
|
131
|
-
"
|
|
132
|
-
"
|
|
147
|
+
"hardis:auth:login",
|
|
148
|
+
"auth:hardis:login",
|
|
149
|
+
"auth:login:hardis",
|
|
150
|
+
"hardis:login:auth",
|
|
151
|
+
"login:hardis:auth",
|
|
152
|
+
"login:auth:hardis"
|
|
133
153
|
]
|
|
134
154
|
},
|
|
135
|
-
"hardis:
|
|
155
|
+
"hardis:cache:clear": {
|
|
136
156
|
"aliases": [],
|
|
137
157
|
"args": {},
|
|
138
|
-
"description": "\n## Command Behavior\n\n**
|
|
158
|
+
"description": "\n## Command Behavior\n\n**Clears the local cache generated by the sfdx-hardis plugin.**\n\nThis command is designed to remove temporary files, stored configurations, and other cached data that sfdx-hardis uses to optimize its operations. Clearing the cache can be beneficial for:\n\n- **Troubleshooting:** Resolving unexpected behavior or inconsistencies.\n- **Disk Space Management:** Freeing up storage on your local machine.\n- **Ensuring Fresh Data:** Guaranteeing that the plugin operates with the most current data and configurations.\n\n## Technical explanations\n\nThe command's technical implementation is straightforward:\n\n- **Direct Function Call:** It directly invokes the `clearCache()` function, which is imported from \buri../../../common/cache/index.js\buri.\n- **Cache Management Logic:** The \buriclearCache()` function encapsulates the logic for identifying and removing the specific files and directories that constitute the sfdx-hardis cache.\n",
|
|
139
159
|
"examples": [
|
|
140
|
-
"$ sf hardis:
|
|
160
|
+
"$ sf hardis:cache:clear"
|
|
141
161
|
],
|
|
142
162
|
"flags": {
|
|
143
163
|
"json": {
|
|
@@ -155,20 +175,6 @@
|
|
|
155
175
|
"multiple": false,
|
|
156
176
|
"type": "option"
|
|
157
177
|
},
|
|
158
|
-
"level": {
|
|
159
|
-
"char": "l",
|
|
160
|
-
"description": "project,branch or user",
|
|
161
|
-
"name": "level",
|
|
162
|
-
"default": "project",
|
|
163
|
-
"hasDynamicHelp": false,
|
|
164
|
-
"multiple": false,
|
|
165
|
-
"options": [
|
|
166
|
-
"project",
|
|
167
|
-
"branch",
|
|
168
|
-
"user"
|
|
169
|
-
],
|
|
170
|
-
"type": "option"
|
|
171
|
-
},
|
|
172
178
|
"debug": {
|
|
173
179
|
"char": "d",
|
|
174
180
|
"description": "Activate debug mode (more logs)",
|
|
@@ -192,39 +198,41 @@
|
|
|
192
198
|
},
|
|
193
199
|
"hasDynamicHelp": false,
|
|
194
200
|
"hiddenAliases": [],
|
|
195
|
-
"id": "hardis:
|
|
201
|
+
"id": "hardis:cache:clear",
|
|
196
202
|
"pluginAlias": "sfdx-hardis",
|
|
197
203
|
"pluginName": "sfdx-hardis",
|
|
198
204
|
"pluginType": "core",
|
|
199
205
|
"strict": true,
|
|
200
206
|
"enableJsonFlag": true,
|
|
201
|
-
"title": "
|
|
207
|
+
"title": "Clear sfdx-hardis cache",
|
|
208
|
+
"uiConfig": {
|
|
209
|
+
"hide": true
|
|
210
|
+
},
|
|
202
211
|
"requiresProject": false,
|
|
203
212
|
"isESM": true,
|
|
204
213
|
"relativePath": [
|
|
205
214
|
"lib",
|
|
206
215
|
"commands",
|
|
207
216
|
"hardis",
|
|
208
|
-
"
|
|
209
|
-
"
|
|
217
|
+
"cache",
|
|
218
|
+
"clear.js"
|
|
210
219
|
],
|
|
211
220
|
"aliasPermutations": [],
|
|
212
221
|
"permutations": [
|
|
213
|
-
"hardis:
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"hardis:
|
|
217
|
-
"
|
|
218
|
-
"
|
|
222
|
+
"hardis:cache:clear",
|
|
223
|
+
"cache:hardis:clear",
|
|
224
|
+
"cache:clear:hardis",
|
|
225
|
+
"hardis:clear:cache",
|
|
226
|
+
"clear:hardis:cache",
|
|
227
|
+
"clear:cache:hardis"
|
|
219
228
|
]
|
|
220
229
|
},
|
|
221
|
-
"hardis:
|
|
230
|
+
"hardis:config:get": {
|
|
222
231
|
"aliases": [],
|
|
223
232
|
"args": {},
|
|
224
|
-
"description": "\n## Command Behavior\n\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:
|
|
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
|
-
"
|
|
246
|
-
"char": "
|
|
247
|
-
"description": "
|
|
248
|
-
"name": "
|
|
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:
|
|
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": "
|
|
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
|
-
"
|
|
304
|
-
"
|
|
303
|
+
"config",
|
|
304
|
+
"get.js"
|
|
305
305
|
],
|
|
306
306
|
"aliasPermutations": [],
|
|
307
307
|
"permutations": [
|
|
308
|
-
"hardis:
|
|
309
|
-
"
|
|
310
|
-
"
|
|
311
|
-
"hardis:
|
|
312
|
-
"
|
|
313
|
-
"
|
|
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": {
|
|
@@ -4421,13 +4421,12 @@
|
|
|
4421
4421
|
"ws:work:hardis"
|
|
4422
4422
|
]
|
|
4423
4423
|
},
|
|
4424
|
-
"hardis:
|
|
4424
|
+
"hardis:doc:extract:permsetgroups": {
|
|
4425
4425
|
"aliases": [],
|
|
4426
4426
|
"args": {},
|
|
4427
|
-
"description": "\n## Command Behavior\n\n**Extracts
|
|
4427
|
+
"description": "\n## Command Behavior\n\n**Extracts and documents Salesforce Permission Set Groups and their assigned Permission Sets.**\n\nThis command generates two types of output: a CSV file and a Markdown file, providing a clear overview of how Permission Set Groups are structured and what Permission Sets they contain within your Salesforce project. This is particularly useful for:\n\n- **Documentation:** Creating human-readable documentation of your permission architecture.\n- **Auditing:** Understanding the composition of permission sets for security and compliance checks.\n- **Analysis:** Gaining insights into how permissions are bundled and assigned in your Salesforce environment.\n\nThe generated CSV file provides a structured, machine-readable format, while the Markdown file offers a more descriptive, human-friendly view, including the group's name, label, description, and a list of its constituent permission sets.\n\n## Technical explanations\n\nThe command performs the following technical steps:\n\n- **File Discovery:** It uses `glob` to find all `.permissionsetgroup-meta.xml` files within the current working directory, respecting `.gitignore` patterns.\n- **XML Parsing:** For each discovered Permission Set Group XML file, it parses the XML content using `parseXmlFile` to extract relevant information such as the group's name, label, description, and the names of the Permission Sets it contains.\n- **Data Structuring:** The extracted data is then structured into a list of objects, making it easy to process.\n- **CSV Generation:** It constructs a CSV file with two columns: 'Permission set group' and 'Permission sets'. The 'Permission sets' column lists all assigned permission sets for each group, enclosed in quotes and separated by commas. The CSV file is saved to a temporary directory or a user-specified path.\n- **Markdown Generation:** It generates a Markdown file (`docs/permission-set-groups.md`) that includes a title, a table of contents, and detailed sections for each Permission Set Group. Each section lists the group's name, label, description, and a bulleted list of its assigned Permission Sets.\n- **File System Operations:** It uses `fs-extra` to ensure output directories exist and to write the generated CSV and Markdown files.\n- **VS Code Integration:** It uses `WebSocketClient.requestOpenFile` to automatically open the generated CSV and Markdown files in VS Code, enhancing the user experience.\n",
|
|
4428
4428
|
"examples": [
|
|
4429
|
-
"$ sf hardis:
|
|
4430
|
-
"$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
|
|
4429
|
+
"$ sf hardis:doc:extract:permsetgroups"
|
|
4431
4430
|
],
|
|
4432
4431
|
"flags": {
|
|
4433
4432
|
"json": {
|
|
@@ -4445,35 +4444,6 @@
|
|
|
4445
4444
|
"multiple": false,
|
|
4446
4445
|
"type": "option"
|
|
4447
4446
|
},
|
|
4448
|
-
"target-branch": {
|
|
4449
|
-
"char": "t",
|
|
4450
|
-
"description": "Target branch of PRs",
|
|
4451
|
-
"name": "target-branch",
|
|
4452
|
-
"hasDynamicHelp": false,
|
|
4453
|
-
"multiple": false,
|
|
4454
|
-
"type": "option"
|
|
4455
|
-
},
|
|
4456
|
-
"status": {
|
|
4457
|
-
"char": "x",
|
|
4458
|
-
"description": "Status of the PR",
|
|
4459
|
-
"name": "status",
|
|
4460
|
-
"hasDynamicHelp": false,
|
|
4461
|
-
"multiple": false,
|
|
4462
|
-
"options": [
|
|
4463
|
-
"open",
|
|
4464
|
-
"merged",
|
|
4465
|
-
"abandoned"
|
|
4466
|
-
],
|
|
4467
|
-
"type": "option"
|
|
4468
|
-
},
|
|
4469
|
-
"min-date": {
|
|
4470
|
-
"char": "m",
|
|
4471
|
-
"description": "Minimum date for PR",
|
|
4472
|
-
"name": "min-date",
|
|
4473
|
-
"hasDynamicHelp": false,
|
|
4474
|
-
"multiple": false,
|
|
4475
|
-
"type": "option"
|
|
4476
|
-
},
|
|
4477
4447
|
"outputfile": {
|
|
4478
4448
|
"char": "f",
|
|
4479
4449
|
"description": "Force the path and name of output report file. Must end with .csv",
|
|
@@ -4505,57 +4475,57 @@
|
|
|
4505
4475
|
},
|
|
4506
4476
|
"hasDynamicHelp": false,
|
|
4507
4477
|
"hiddenAliases": [],
|
|
4508
|
-
"id": "hardis:
|
|
4478
|
+
"id": "hardis:doc:extract:permsetgroups",
|
|
4509
4479
|
"pluginAlias": "sfdx-hardis",
|
|
4510
4480
|
"pluginName": "sfdx-hardis",
|
|
4511
4481
|
"pluginType": "core",
|
|
4512
4482
|
"strict": true,
|
|
4513
4483
|
"enableJsonFlag": true,
|
|
4514
|
-
"title": "
|
|
4484
|
+
"title": "Generate project documentation",
|
|
4515
4485
|
"requiresProject": true,
|
|
4516
4486
|
"isESM": true,
|
|
4517
4487
|
"relativePath": [
|
|
4518
4488
|
"lib",
|
|
4519
4489
|
"commands",
|
|
4520
4490
|
"hardis",
|
|
4521
|
-
"
|
|
4522
|
-
"
|
|
4523
|
-
"
|
|
4491
|
+
"doc",
|
|
4492
|
+
"extract",
|
|
4493
|
+
"permsetgroups.js"
|
|
4524
4494
|
],
|
|
4525
4495
|
"aliasPermutations": [],
|
|
4526
4496
|
"permutations": [
|
|
4527
|
-
"hardis:
|
|
4528
|
-
"
|
|
4529
|
-
"
|
|
4530
|
-
"
|
|
4531
|
-
"hardis:
|
|
4532
|
-
"
|
|
4533
|
-
"
|
|
4534
|
-
"
|
|
4535
|
-
"hardis:
|
|
4536
|
-
"
|
|
4537
|
-
"
|
|
4538
|
-
"
|
|
4539
|
-
"hardis:
|
|
4540
|
-
"
|
|
4541
|
-
"
|
|
4542
|
-
"
|
|
4543
|
-
"hardis:
|
|
4544
|
-
"
|
|
4545
|
-
"
|
|
4546
|
-
"
|
|
4547
|
-
"hardis:extract:
|
|
4548
|
-
"
|
|
4549
|
-
"extract:
|
|
4550
|
-
"extract:
|
|
4497
|
+
"hardis:doc:extract:permsetgroups",
|
|
4498
|
+
"doc:hardis:extract:permsetgroups",
|
|
4499
|
+
"doc:extract:hardis:permsetgroups",
|
|
4500
|
+
"doc:extract:permsetgroups:hardis",
|
|
4501
|
+
"hardis:extract:doc:permsetgroups",
|
|
4502
|
+
"extract:hardis:doc:permsetgroups",
|
|
4503
|
+
"extract:doc:hardis:permsetgroups",
|
|
4504
|
+
"extract:doc:permsetgroups:hardis",
|
|
4505
|
+
"hardis:extract:permsetgroups:doc",
|
|
4506
|
+
"extract:hardis:permsetgroups:doc",
|
|
4507
|
+
"extract:permsetgroups:hardis:doc",
|
|
4508
|
+
"extract:permsetgroups:doc:hardis",
|
|
4509
|
+
"hardis:doc:permsetgroups:extract",
|
|
4510
|
+
"doc:hardis:permsetgroups:extract",
|
|
4511
|
+
"doc:permsetgroups:hardis:extract",
|
|
4512
|
+
"doc:permsetgroups:extract:hardis",
|
|
4513
|
+
"hardis:permsetgroups:doc:extract",
|
|
4514
|
+
"permsetgroups:hardis:doc:extract",
|
|
4515
|
+
"permsetgroups:doc:hardis:extract",
|
|
4516
|
+
"permsetgroups:doc:extract:hardis",
|
|
4517
|
+
"hardis:permsetgroups:extract:doc",
|
|
4518
|
+
"permsetgroups:hardis:extract:doc",
|
|
4519
|
+
"permsetgroups:extract:hardis:doc",
|
|
4520
|
+
"permsetgroups:extract:doc:hardis"
|
|
4551
4521
|
]
|
|
4552
4522
|
},
|
|
4553
|
-
"hardis:doc:
|
|
4523
|
+
"hardis:doc:plugin:generate": {
|
|
4554
4524
|
"aliases": [],
|
|
4555
4525
|
"args": {},
|
|
4556
|
-
"description": "\n## Command Behavior\n\n**
|
|
4526
|
+
"description": "\n## Command Behavior\n\n**Generates Markdown documentation for an SF CLI plugin, ready for conversion into HTML with MkDocs.**\n\nThis command automates the creation of comprehensive documentation for your Salesforce CLI plugin. It processes your plugin's commands and their flags to generate structured Markdown files, which can then be used with MkDocs to produce a professional-looking website.\n\nKey functionalities:\n\n- **Command Documentation:** Generates a dedicated Markdown file for each command, including its description, parameters (flags), and examples.\n- **Index and Commands Pages:** Creates an `index.md` and `commands.md` file that list all available commands, providing an overview and easy navigation.\n- **MkDocs Integration:** Sets up the basic MkDocs project structure and updates the `mkdocs.yml` navigation to include the generated command documentation.\n- **Default File Copying:** Copies essential MkDocs configuration files and GitHub Actions workflows to your project, streamlining the setup for continuous documentation deployment.\n\n**Post-Generation Steps:**\n\nAfter the initial run, you will need to manually update:\n\n- `mkdocs.yml`: Customize the project title, theme, and other MkDocs settings.\n- `.github/workflows/build-deploy-docs.yml`: Configure the GitHub Actions workflow for automatic documentation deployment.\n- `docs/javascripts/gtag.js`: If desired, set up Google Analytics tracking.\n\nFinally, activate GitHub Pages with `gh_pages` as the target branch. This will enable automatic documentation rebuilding and publishing to GitHub Pages upon each merge into your `master`/`main` branch.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Plugin Configuration Loading:** It loads the SF CLI plugin's configuration using `@oclif/core`'s `Config.load()`, which provides access to all registered commands and their metadata.\n- **Command Iteration:** It iterates through each command defined in the plugin's configuration.\n- **Markdown File Generation:** For each command, it constructs a Markdown file (`.md`) containing:\n - The command ID as the main heading.\n - The command's `description` property.\n - A table of parameters (flags), including their name, type, description, default value, required status, and available options. It dynamically extracts this information from the command's `flags` property.\n - Code blocks for each example provided in the command's `examples` property.\n- **Navigation Structure:** It builds a nested JavaScript object (`commandsNav`) that mirrors the command hierarchy, which is then converted to YAML and inserted into `mkdocs.yml` to create the navigation menu.\n- **Index and Commands Page Generation:** It reads the project's `README.md` and extracts relevant sections to create the `index.md` file. It also generates a separate `commands.md` file listing all commands.\n- **File System Operations:** It uses `fs-extra` to create directories, copy default MkDocs files (`defaults/mkdocs`), and write the generated Markdown and YAML files.\n- **YAML Serialization:** It uses `js-yaml` to serialize the navigation object into YAML format for `mkdocs.yml`.\n</details>\n",
|
|
4557
4527
|
"examples": [
|
|
4558
|
-
"$ sf hardis:doc:
|
|
4528
|
+
"$ sf hardis:doc:plugin:generate"
|
|
4559
4529
|
],
|
|
4560
4530
|
"flags": {
|
|
4561
4531
|
"json": {
|
|
@@ -4573,14 +4543,6 @@
|
|
|
4573
4543
|
"multiple": false,
|
|
4574
4544
|
"type": "option"
|
|
4575
4545
|
},
|
|
4576
|
-
"outputfile": {
|
|
4577
|
-
"char": "f",
|
|
4578
|
-
"description": "Force the path and name of output report file. Must end with .csv",
|
|
4579
|
-
"name": "outputfile",
|
|
4580
|
-
"hasDynamicHelp": false,
|
|
4581
|
-
"multiple": false,
|
|
4582
|
-
"type": "option"
|
|
4583
|
-
},
|
|
4584
4546
|
"debug": {
|
|
4585
4547
|
"char": "d",
|
|
4586
4548
|
"description": "Activate debug mode (more logs)",
|
|
@@ -4604,57 +4566,58 @@
|
|
|
4604
4566
|
},
|
|
4605
4567
|
"hasDynamicHelp": false,
|
|
4606
4568
|
"hiddenAliases": [],
|
|
4607
|
-
"id": "hardis:doc:
|
|
4569
|
+
"id": "hardis:doc:plugin:generate",
|
|
4608
4570
|
"pluginAlias": "sfdx-hardis",
|
|
4609
4571
|
"pluginName": "sfdx-hardis",
|
|
4610
4572
|
"pluginType": "core",
|
|
4611
4573
|
"strict": true,
|
|
4612
4574
|
"enableJsonFlag": true,
|
|
4613
|
-
"title": "Generate
|
|
4614
|
-
"requiresProject":
|
|
4575
|
+
"title": "Generate SF Cli Plugin Documentation",
|
|
4576
|
+
"requiresProject": false,
|
|
4615
4577
|
"isESM": true,
|
|
4616
4578
|
"relativePath": [
|
|
4617
4579
|
"lib",
|
|
4618
4580
|
"commands",
|
|
4619
4581
|
"hardis",
|
|
4620
4582
|
"doc",
|
|
4621
|
-
"
|
|
4622
|
-
"
|
|
4583
|
+
"plugin",
|
|
4584
|
+
"generate.js"
|
|
4623
4585
|
],
|
|
4624
4586
|
"aliasPermutations": [],
|
|
4625
4587
|
"permutations": [
|
|
4626
|
-
"hardis:doc:
|
|
4627
|
-
"doc:hardis:
|
|
4628
|
-
"doc:
|
|
4629
|
-
"doc:
|
|
4630
|
-
"hardis:
|
|
4631
|
-
"
|
|
4632
|
-
"
|
|
4633
|
-
"
|
|
4634
|
-
"hardis:
|
|
4635
|
-
"
|
|
4636
|
-
"
|
|
4637
|
-
"
|
|
4638
|
-
"hardis:doc:
|
|
4639
|
-
"doc:hardis:
|
|
4640
|
-
"doc:
|
|
4641
|
-
"doc:
|
|
4642
|
-
"hardis:
|
|
4643
|
-
"
|
|
4644
|
-
"
|
|
4645
|
-
"
|
|
4646
|
-
"hardis:
|
|
4647
|
-
"
|
|
4648
|
-
"
|
|
4649
|
-
"
|
|
4588
|
+
"hardis:doc:plugin:generate",
|
|
4589
|
+
"doc:hardis:plugin:generate",
|
|
4590
|
+
"doc:plugin:hardis:generate",
|
|
4591
|
+
"doc:plugin:generate:hardis",
|
|
4592
|
+
"hardis:plugin:doc:generate",
|
|
4593
|
+
"plugin:hardis:doc:generate",
|
|
4594
|
+
"plugin:doc:hardis:generate",
|
|
4595
|
+
"plugin:doc:generate:hardis",
|
|
4596
|
+
"hardis:plugin:generate:doc",
|
|
4597
|
+
"plugin:hardis:generate:doc",
|
|
4598
|
+
"plugin:generate:hardis:doc",
|
|
4599
|
+
"plugin:generate:doc:hardis",
|
|
4600
|
+
"hardis:doc:generate:plugin",
|
|
4601
|
+
"doc:hardis:generate:plugin",
|
|
4602
|
+
"doc:generate:hardis:plugin",
|
|
4603
|
+
"doc:generate:plugin:hardis",
|
|
4604
|
+
"hardis:generate:doc:plugin",
|
|
4605
|
+
"generate:hardis:doc:plugin",
|
|
4606
|
+
"generate:doc:hardis:plugin",
|
|
4607
|
+
"generate:doc:plugin:hardis",
|
|
4608
|
+
"hardis:generate:plugin:doc",
|
|
4609
|
+
"generate:hardis:plugin:doc",
|
|
4610
|
+
"generate:plugin:hardis:doc",
|
|
4611
|
+
"generate:plugin:doc:hardis"
|
|
4650
4612
|
]
|
|
4651
4613
|
},
|
|
4652
|
-
"hardis:
|
|
4614
|
+
"hardis:git:pull-requests:extract": {
|
|
4653
4615
|
"aliases": [],
|
|
4654
4616
|
"args": {},
|
|
4655
|
-
"description": "\n## Command Behavior\n\n**
|
|
4617
|
+
"description": "\n## Command Behavior\n\n**Extracts pull request information from your Git server based on specified filtering criteria.**\n\nThis command provides a powerful way to query and retrieve details about pull requests (or merge requests, depending on your Git provider) in your repository. It's highly useful for reporting, auditing, and analyzing development workflows.\n\nKey functionalities include:\n\n- **Target Branch Filtering:** You can filter pull requests by their target branch using the `--target-branch` flag. If not specified, the command will prompt you to select one.\n- **Status Filtering:** Filter pull requests by their status: `open`, `merged`, or `abandoned` using the `--status` flag. An interactive prompt is provided if no status is specified.\n- **Minimum Date Filtering:** Use the `--min-date` flag to retrieve pull requests created or updated after a specific date.\n- **CSV Output:** The extracted pull request data is generated into a CSV file, which can be used for further analysis in spreadsheet software.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves interacting with a Git provider's API:\n\n- **Git Provider Abstraction:** It uses the `GitProvider.getInstance(true)` to abstract away the specifics of different Git platforms (e.g., GitHub, GitLab, Azure DevOps). This ensures the command can work across various environments.\n- **API Calls:** The `gitProvider.listPullRequests()` method is called with a `prConstraint` object that encapsulates the filtering criteria (target branch, minimum date, status).\n- **Interactive Prompts:** The `prompts` library is used to interactively gather input from the user for the target branch and pull request status if they are not provided as command-line flags.\n- **Date Handling:** The `moment` library is used to parse and handle date inputs for the `--min-date` flag.\n- **CSV Generation:** The `generateCsvFile` utility is responsible for converting the retrieved pull request data into a CSV format, and `generateReportPath` determines the output file location.\n- **Error Handling:** It includes error handling for cases where a Git provider cannot be identified.\n</details>\n",
|
|
4656
4618
|
"examples": [
|
|
4657
|
-
"$ sf hardis:
|
|
4619
|
+
"$ sf hardis:git:pull-requests:extract",
|
|
4620
|
+
"$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
|
|
4658
4621
|
],
|
|
4659
4622
|
"flags": {
|
|
4660
4623
|
"json": {
|
|
@@ -4672,6 +4635,43 @@
|
|
|
4672
4635
|
"multiple": false,
|
|
4673
4636
|
"type": "option"
|
|
4674
4637
|
},
|
|
4638
|
+
"target-branch": {
|
|
4639
|
+
"char": "t",
|
|
4640
|
+
"description": "Target branch of PRs",
|
|
4641
|
+
"name": "target-branch",
|
|
4642
|
+
"hasDynamicHelp": false,
|
|
4643
|
+
"multiple": false,
|
|
4644
|
+
"type": "option"
|
|
4645
|
+
},
|
|
4646
|
+
"status": {
|
|
4647
|
+
"char": "x",
|
|
4648
|
+
"description": "Status of the PR",
|
|
4649
|
+
"name": "status",
|
|
4650
|
+
"hasDynamicHelp": false,
|
|
4651
|
+
"multiple": false,
|
|
4652
|
+
"options": [
|
|
4653
|
+
"open",
|
|
4654
|
+
"merged",
|
|
4655
|
+
"abandoned"
|
|
4656
|
+
],
|
|
4657
|
+
"type": "option"
|
|
4658
|
+
},
|
|
4659
|
+
"min-date": {
|
|
4660
|
+
"char": "m",
|
|
4661
|
+
"description": "Minimum date for PR",
|
|
4662
|
+
"name": "min-date",
|
|
4663
|
+
"hasDynamicHelp": false,
|
|
4664
|
+
"multiple": false,
|
|
4665
|
+
"type": "option"
|
|
4666
|
+
},
|
|
4667
|
+
"outputfile": {
|
|
4668
|
+
"char": "f",
|
|
4669
|
+
"description": "Force the path and name of output report file. Must end with .csv",
|
|
4670
|
+
"name": "outputfile",
|
|
4671
|
+
"hasDynamicHelp": false,
|
|
4672
|
+
"multiple": false,
|
|
4673
|
+
"type": "option"
|
|
4674
|
+
},
|
|
4675
4675
|
"debug": {
|
|
4676
4676
|
"char": "d",
|
|
4677
4677
|
"description": "Activate debug mode (more logs)",
|
|
@@ -4695,49 +4695,49 @@
|
|
|
4695
4695
|
},
|
|
4696
4696
|
"hasDynamicHelp": false,
|
|
4697
4697
|
"hiddenAliases": [],
|
|
4698
|
-
"id": "hardis:
|
|
4698
|
+
"id": "hardis:git:pull-requests:extract",
|
|
4699
4699
|
"pluginAlias": "sfdx-hardis",
|
|
4700
4700
|
"pluginName": "sfdx-hardis",
|
|
4701
4701
|
"pluginType": "core",
|
|
4702
4702
|
"strict": true,
|
|
4703
4703
|
"enableJsonFlag": true,
|
|
4704
|
-
"title": "
|
|
4705
|
-
"requiresProject":
|
|
4704
|
+
"title": "Extract pull requests",
|
|
4705
|
+
"requiresProject": true,
|
|
4706
4706
|
"isESM": true,
|
|
4707
4707
|
"relativePath": [
|
|
4708
4708
|
"lib",
|
|
4709
4709
|
"commands",
|
|
4710
4710
|
"hardis",
|
|
4711
|
-
"
|
|
4712
|
-
"
|
|
4713
|
-
"
|
|
4711
|
+
"git",
|
|
4712
|
+
"pull-requests",
|
|
4713
|
+
"extract.js"
|
|
4714
4714
|
],
|
|
4715
4715
|
"aliasPermutations": [],
|
|
4716
4716
|
"permutations": [
|
|
4717
|
-
"hardis:
|
|
4718
|
-
"
|
|
4719
|
-
"
|
|
4720
|
-
"
|
|
4721
|
-
"hardis:
|
|
4722
|
-
"
|
|
4723
|
-
"
|
|
4724
|
-
"
|
|
4725
|
-
"hardis:
|
|
4726
|
-
"
|
|
4727
|
-
"
|
|
4728
|
-
"
|
|
4729
|
-
"hardis:
|
|
4730
|
-
"
|
|
4731
|
-
"
|
|
4732
|
-
"
|
|
4733
|
-
"hardis:
|
|
4734
|
-
"
|
|
4735
|
-
"
|
|
4736
|
-
"
|
|
4737
|
-
"hardis:
|
|
4738
|
-
"
|
|
4739
|
-
"
|
|
4740
|
-
"
|
|
4717
|
+
"hardis:git:pull-requests:extract",
|
|
4718
|
+
"git:hardis:pull-requests:extract",
|
|
4719
|
+
"git:pull-requests:hardis:extract",
|
|
4720
|
+
"git:pull-requests:extract:hardis",
|
|
4721
|
+
"hardis:pull-requests:git:extract",
|
|
4722
|
+
"pull-requests:hardis:git:extract",
|
|
4723
|
+
"pull-requests:git:hardis:extract",
|
|
4724
|
+
"pull-requests:git:extract:hardis",
|
|
4725
|
+
"hardis:pull-requests:extract:git",
|
|
4726
|
+
"pull-requests:hardis:extract:git",
|
|
4727
|
+
"pull-requests:extract:hardis:git",
|
|
4728
|
+
"pull-requests:extract:git:hardis",
|
|
4729
|
+
"hardis:git:extract:pull-requests",
|
|
4730
|
+
"git:hardis:extract:pull-requests",
|
|
4731
|
+
"git:extract:hardis:pull-requests",
|
|
4732
|
+
"git:extract:pull-requests:hardis",
|
|
4733
|
+
"hardis:extract:git:pull-requests",
|
|
4734
|
+
"extract:hardis:git:pull-requests",
|
|
4735
|
+
"extract:git:hardis:pull-requests",
|
|
4736
|
+
"extract:git:pull-requests:hardis",
|
|
4737
|
+
"hardis:extract:pull-requests:git",
|
|
4738
|
+
"extract:hardis:pull-requests:git",
|
|
4739
|
+
"extract:pull-requests:hardis:git",
|
|
4740
|
+
"extract:pull-requests:git:hardis"
|
|
4741
4741
|
]
|
|
4742
4742
|
},
|
|
4743
4743
|
"hardis:org:community:update": {
|
|
@@ -7070,14 +7070,13 @@
|
|
|
7070
7070
|
"import:files:org:hardis"
|
|
7071
7071
|
]
|
|
7072
7072
|
},
|
|
7073
|
-
"hardis:org:
|
|
7073
|
+
"hardis:org:fix:listviewmine": {
|
|
7074
7074
|
"aliases": [],
|
|
7075
7075
|
"args": {},
|
|
7076
|
-
"description": "
|
|
7076
|
+
"description": "Fix listviews whose scope Mine has been replaced by Everything\n\n[](https://nicolas.vuillamy.fr/invalid-scope-mine-not-allowed-deploy-your-listviews-anyway-443aceca8ac7)\n\nList of ListViews can be:\n\n- read from .sfdx-hardis.yml file in property **listViewsToSetToMine**\n- sent in argument listviews\n\nNote: property **listViewsToSetToMine** can be auto-generated by command hardis:work:save if .sfdx-hardis.yml contains the following configuration\n\n```yaml\nautoCleanTypes:\n - listViewsMine\n```\n\n- Example of sfdx-hardis.yml property `listViewsToSetToMine`:\n\n```yaml\nlistViewsToSetToMine:\n - \"force-app/main/default/objects/Operation__c/listViews/MyCurrentOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Operation__c/listViews/MyFinalizedOperations.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/Default_Opportunity_Pipeline.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MyCurrentSubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Opportunity/listViews/MySubscriptions.listView-meta.xml\"\n - \"force-app/main/default/objects/Account/listViews/MyActivePartners.listView-meta.xml\"\n```\n\n- If manually written, this could also be:\n\n```yaml\nlistViewsToSetToMine:\n - \"Operation__c:MyCurrentOperations\"\n - \"Operation__c:MyFinalizedOperations\"\n - \"Opportunity:Default_Opportunity_Pipeline\"\n - \"Opportunity:MyCurrentSubscriptions\"\n - \"Opportunity:MySubscriptions\"\n - \"Account:MyActivePartners\"\n```\n\nTroubleshooting: if you need to run this command from an alpine-linux based docker image, use this workaround in your dockerfile:\n\n```dockerfile\n# Do not use puppeteer embedded chromium\nRUN apk add --update --no-cache chromium\nENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=\"true\"\nENV CHROMIUM_PATH=\"/usr/bin/chromium-browser\"\nENV PUPPETEER_EXECUTABLE_PATH=\"$\\{CHROMIUM_PATH}\" // remove \\ before {\n```\n",
|
|
7077
7077
|
"examples": [
|
|
7078
|
-
"$ sf hardis:org:
|
|
7079
|
-
"$ sf hardis:org:
|
|
7080
|
-
"$ sf hardis:org:generate:packagexmlfull --target-org nico@example.com"
|
|
7078
|
+
"$ sf hardis:org:fix:listviewmine",
|
|
7079
|
+
"$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
|
|
7081
7080
|
],
|
|
7082
7081
|
"flags": {
|
|
7083
7082
|
"json": {
|
|
@@ -7095,9 +7094,10 @@
|
|
|
7095
7094
|
"multiple": false,
|
|
7096
7095
|
"type": "option"
|
|
7097
7096
|
},
|
|
7098
|
-
"
|
|
7099
|
-
"
|
|
7100
|
-
"
|
|
7097
|
+
"listviews": {
|
|
7098
|
+
"char": "l",
|
|
7099
|
+
"description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
|
|
7100
|
+
"name": "listviews",
|
|
7101
7101
|
"hasDynamicHelp": false,
|
|
7102
7102
|
"multiple": false,
|
|
7103
7103
|
"type": "option"
|
|
@@ -7109,13 +7109,6 @@
|
|
|
7109
7109
|
"allowNo": false,
|
|
7110
7110
|
"type": "boolean"
|
|
7111
7111
|
},
|
|
7112
|
-
"no-prompt": {
|
|
7113
|
-
"char": "n",
|
|
7114
|
-
"description": "Do not prompt for org username, use the default one",
|
|
7115
|
-
"name": "no-prompt",
|
|
7116
|
-
"allowNo": false,
|
|
7117
|
-
"type": "boolean"
|
|
7118
|
-
},
|
|
7119
7112
|
"websocket": {
|
|
7120
7113
|
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
7121
7114
|
"name": "websocket",
|
|
@@ -7147,58 +7140,59 @@
|
|
|
7147
7140
|
},
|
|
7148
7141
|
"hasDynamicHelp": true,
|
|
7149
7142
|
"hiddenAliases": [],
|
|
7150
|
-
"id": "hardis:org:
|
|
7143
|
+
"id": "hardis:org:fix:listviewmine",
|
|
7151
7144
|
"pluginAlias": "sfdx-hardis",
|
|
7152
7145
|
"pluginName": "sfdx-hardis",
|
|
7153
7146
|
"pluginType": "core",
|
|
7154
7147
|
"strict": true,
|
|
7155
7148
|
"enableJsonFlag": true,
|
|
7156
|
-
"title": "
|
|
7157
|
-
"requiresProject":
|
|
7149
|
+
"title": "Fix listviews with ",
|
|
7150
|
+
"requiresProject": true,
|
|
7158
7151
|
"isESM": true,
|
|
7159
7152
|
"relativePath": [
|
|
7160
7153
|
"lib",
|
|
7161
7154
|
"commands",
|
|
7162
7155
|
"hardis",
|
|
7163
7156
|
"org",
|
|
7164
|
-
"
|
|
7165
|
-
"
|
|
7157
|
+
"fix",
|
|
7158
|
+
"listviewmine.js"
|
|
7166
7159
|
],
|
|
7167
7160
|
"aliasPermutations": [],
|
|
7168
7161
|
"permutations": [
|
|
7169
|
-
"hardis:org:
|
|
7170
|
-
"org:hardis:
|
|
7171
|
-
"org:
|
|
7172
|
-
"org:
|
|
7173
|
-
"hardis:
|
|
7174
|
-
"
|
|
7175
|
-
"
|
|
7176
|
-
"
|
|
7177
|
-
"hardis:
|
|
7178
|
-
"
|
|
7179
|
-
"
|
|
7180
|
-
"
|
|
7181
|
-
"hardis:org:
|
|
7182
|
-
"org:hardis:
|
|
7183
|
-
"org:
|
|
7184
|
-
"org:
|
|
7185
|
-
"hardis:
|
|
7186
|
-
"
|
|
7187
|
-
"
|
|
7188
|
-
"
|
|
7189
|
-
"hardis:
|
|
7190
|
-
"
|
|
7191
|
-
"
|
|
7192
|
-
"
|
|
7162
|
+
"hardis:org:fix:listviewmine",
|
|
7163
|
+
"org:hardis:fix:listviewmine",
|
|
7164
|
+
"org:fix:hardis:listviewmine",
|
|
7165
|
+
"org:fix:listviewmine:hardis",
|
|
7166
|
+
"hardis:fix:org:listviewmine",
|
|
7167
|
+
"fix:hardis:org:listviewmine",
|
|
7168
|
+
"fix:org:hardis:listviewmine",
|
|
7169
|
+
"fix:org:listviewmine:hardis",
|
|
7170
|
+
"hardis:fix:listviewmine:org",
|
|
7171
|
+
"fix:hardis:listviewmine:org",
|
|
7172
|
+
"fix:listviewmine:hardis:org",
|
|
7173
|
+
"fix:listviewmine:org:hardis",
|
|
7174
|
+
"hardis:org:listviewmine:fix",
|
|
7175
|
+
"org:hardis:listviewmine:fix",
|
|
7176
|
+
"org:listviewmine:hardis:fix",
|
|
7177
|
+
"org:listviewmine:fix:hardis",
|
|
7178
|
+
"hardis:listviewmine:org:fix",
|
|
7179
|
+
"listviewmine:hardis:org:fix",
|
|
7180
|
+
"listviewmine:org:hardis:fix",
|
|
7181
|
+
"listviewmine:org:fix:hardis",
|
|
7182
|
+
"hardis:listviewmine:fix:org",
|
|
7183
|
+
"listviewmine:hardis:fix:org",
|
|
7184
|
+
"listviewmine:fix:hardis:org",
|
|
7185
|
+
"listviewmine:fix:org:hardis"
|
|
7193
7186
|
]
|
|
7194
7187
|
},
|
|
7195
|
-
"hardis:org:
|
|
7188
|
+
"hardis:org:generate:packagexmlfull": {
|
|
7196
7189
|
"aliases": [],
|
|
7197
7190
|
"args": {},
|
|
7198
|
-
"description": "
|
|
7191
|
+
"description": "\n## Command Behavior\n\n**Generates a comprehensive `package.xml` file for a Salesforce org, including all metadata components, even managed ones.**\n\nThis command is essential for various Salesforce development and administration tasks, especially when you need a complete snapshot of an org's metadata. It goes beyond typical source tracking by including managed package components, which is crucial for understanding the full metadata footprint of an org.\n\nKey functionalities:\n\n- **Full Org Metadata Retrieval:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a complete list of all metadata types and their members.\n- **Managed Package Inclusion:** Unlike standard source retrieval, this command explicitly includes metadata from managed packages, providing a truly comprehensive `package.xml`.\n- **Customizable Output:** Allows you to specify the output file path for the generated `package.xml`.\n- **Interactive Org Selection:** If no target org is specified, it interactively prompts the user to choose an org. (or use --no-prompt to skip this step)\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Salesforce Metadata API Interaction:** It leverages the Salesforce Metadata API to list all available metadata types and then retrieve all components for each type.\n- **`buildOrgManifest` Utility:** The core logic for querying the org's metadata and constructing the `package.xml` is encapsulated within the `buildOrgManifest` utility function.\n- **XML Generation:** It dynamically builds the XML structure of the `package.xml` file, including the `types` and `members` elements for all retrieved metadata.\n- **File System Operations:** It writes the generated `package.xml` file to the specified output path.\n- **Interactive Prompts:** Uses `promptOrgUsernameDefault` to guide the user in selecting the target Salesforce org.\n</details>\n",
|
|
7199
7192
|
"examples": [
|
|
7200
|
-
"$ sf hardis:org:
|
|
7201
|
-
"$ sf hardis:org:
|
|
7193
|
+
"$ sf hardis:org:generate:packagexmlfull",
|
|
7194
|
+
"$ sf hardis:org:generate:packagexmlfull --outputfile /tmp/packagexmlfull.xml",
|
|
7195
|
+
"$ sf hardis:org:generate:packagexmlfull --target-org nico@example.com"
|
|
7202
7196
|
],
|
|
7203
7197
|
"flags": {
|
|
7204
7198
|
"json": {
|
|
@@ -7216,10 +7210,9 @@
|
|
|
7216
7210
|
"multiple": false,
|
|
7217
7211
|
"type": "option"
|
|
7218
7212
|
},
|
|
7219
|
-
"
|
|
7220
|
-
"
|
|
7221
|
-
"
|
|
7222
|
-
"name": "listviews",
|
|
7213
|
+
"outputfile": {
|
|
7214
|
+
"description": "Output package.xml file",
|
|
7215
|
+
"name": "outputfile",
|
|
7223
7216
|
"hasDynamicHelp": false,
|
|
7224
7217
|
"multiple": false,
|
|
7225
7218
|
"type": "option"
|
|
@@ -7231,6 +7224,13 @@
|
|
|
7231
7224
|
"allowNo": false,
|
|
7232
7225
|
"type": "boolean"
|
|
7233
7226
|
},
|
|
7227
|
+
"no-prompt": {
|
|
7228
|
+
"char": "n",
|
|
7229
|
+
"description": "Do not prompt for org username, use the default one",
|
|
7230
|
+
"name": "no-prompt",
|
|
7231
|
+
"allowNo": false,
|
|
7232
|
+
"type": "boolean"
|
|
7233
|
+
},
|
|
7234
7234
|
"websocket": {
|
|
7235
7235
|
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
7236
7236
|
"name": "websocket",
|
|
@@ -7262,49 +7262,49 @@
|
|
|
7262
7262
|
},
|
|
7263
7263
|
"hasDynamicHelp": true,
|
|
7264
7264
|
"hiddenAliases": [],
|
|
7265
|
-
"id": "hardis:org:
|
|
7265
|
+
"id": "hardis:org:generate:packagexmlfull",
|
|
7266
7266
|
"pluginAlias": "sfdx-hardis",
|
|
7267
7267
|
"pluginName": "sfdx-hardis",
|
|
7268
7268
|
"pluginType": "core",
|
|
7269
7269
|
"strict": true,
|
|
7270
7270
|
"enableJsonFlag": true,
|
|
7271
|
-
"title": "
|
|
7272
|
-
"requiresProject":
|
|
7271
|
+
"title": "Generate Full Org package.xml",
|
|
7272
|
+
"requiresProject": false,
|
|
7273
7273
|
"isESM": true,
|
|
7274
7274
|
"relativePath": [
|
|
7275
7275
|
"lib",
|
|
7276
7276
|
"commands",
|
|
7277
7277
|
"hardis",
|
|
7278
7278
|
"org",
|
|
7279
|
-
"
|
|
7280
|
-
"
|
|
7279
|
+
"generate",
|
|
7280
|
+
"packagexmlfull.js"
|
|
7281
7281
|
],
|
|
7282
7282
|
"aliasPermutations": [],
|
|
7283
7283
|
"permutations": [
|
|
7284
|
-
"hardis:org:
|
|
7285
|
-
"org:hardis:
|
|
7286
|
-
"org:
|
|
7287
|
-
"org:
|
|
7288
|
-
"hardis:
|
|
7289
|
-
"
|
|
7290
|
-
"
|
|
7291
|
-
"
|
|
7292
|
-
"hardis:
|
|
7293
|
-
"
|
|
7294
|
-
"
|
|
7295
|
-
"
|
|
7296
|
-
"hardis:org:
|
|
7297
|
-
"org:hardis:
|
|
7298
|
-
"org:
|
|
7299
|
-
"org:
|
|
7300
|
-
"hardis:
|
|
7301
|
-
"
|
|
7302
|
-
"
|
|
7303
|
-
"
|
|
7304
|
-
"hardis:
|
|
7305
|
-
"
|
|
7306
|
-
"
|
|
7307
|
-
"
|
|
7284
|
+
"hardis:org:generate:packagexmlfull",
|
|
7285
|
+
"org:hardis:generate:packagexmlfull",
|
|
7286
|
+
"org:generate:hardis:packagexmlfull",
|
|
7287
|
+
"org:generate:packagexmlfull:hardis",
|
|
7288
|
+
"hardis:generate:org:packagexmlfull",
|
|
7289
|
+
"generate:hardis:org:packagexmlfull",
|
|
7290
|
+
"generate:org:hardis:packagexmlfull",
|
|
7291
|
+
"generate:org:packagexmlfull:hardis",
|
|
7292
|
+
"hardis:generate:packagexmlfull:org",
|
|
7293
|
+
"generate:hardis:packagexmlfull:org",
|
|
7294
|
+
"generate:packagexmlfull:hardis:org",
|
|
7295
|
+
"generate:packagexmlfull:org:hardis",
|
|
7296
|
+
"hardis:org:packagexmlfull:generate",
|
|
7297
|
+
"org:hardis:packagexmlfull:generate",
|
|
7298
|
+
"org:packagexmlfull:hardis:generate",
|
|
7299
|
+
"org:packagexmlfull:generate:hardis",
|
|
7300
|
+
"hardis:packagexmlfull:org:generate",
|
|
7301
|
+
"packagexmlfull:hardis:org:generate",
|
|
7302
|
+
"packagexmlfull:org:hardis:generate",
|
|
7303
|
+
"packagexmlfull:org:generate:hardis",
|
|
7304
|
+
"hardis:packagexmlfull:generate:org",
|
|
7305
|
+
"packagexmlfull:hardis:generate:org",
|
|
7306
|
+
"packagexmlfull:generate:hardis:org",
|
|
7307
|
+
"packagexmlfull:generate:org:hardis"
|
|
7308
7308
|
]
|
|
7309
7309
|
},
|
|
7310
7310
|
"hardis:org:monitor:all": {
|
|
@@ -9818,109 +9818,6 @@
|
|
|
9818
9818
|
"auth:configure:project:hardis"
|
|
9819
9819
|
]
|
|
9820
9820
|
},
|
|
9821
|
-
"hardis:project:convert:profilestopermsets": {
|
|
9822
|
-
"aliases": [],
|
|
9823
|
-
"args": {},
|
|
9824
|
-
"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",
|
|
9825
|
-
"examples": [
|
|
9826
|
-
"$ sf hardis:project:convert:profilestopermsets"
|
|
9827
|
-
],
|
|
9828
|
-
"flags": {
|
|
9829
|
-
"json": {
|
|
9830
|
-
"description": "Format output as json.",
|
|
9831
|
-
"helpGroup": "GLOBAL",
|
|
9832
|
-
"name": "json",
|
|
9833
|
-
"allowNo": false,
|
|
9834
|
-
"type": "boolean"
|
|
9835
|
-
},
|
|
9836
|
-
"flags-dir": {
|
|
9837
|
-
"helpGroup": "GLOBAL",
|
|
9838
|
-
"name": "flags-dir",
|
|
9839
|
-
"summary": "Import flag values from a directory.",
|
|
9840
|
-
"hasDynamicHelp": false,
|
|
9841
|
-
"multiple": false,
|
|
9842
|
-
"type": "option"
|
|
9843
|
-
},
|
|
9844
|
-
"except": {
|
|
9845
|
-
"char": "e",
|
|
9846
|
-
"description": "List of filters",
|
|
9847
|
-
"name": "except",
|
|
9848
|
-
"default": [],
|
|
9849
|
-
"hasDynamicHelp": false,
|
|
9850
|
-
"multiple": true,
|
|
9851
|
-
"type": "option"
|
|
9852
|
-
},
|
|
9853
|
-
"debug": {
|
|
9854
|
-
"char": "d",
|
|
9855
|
-
"description": "Activate debug mode (more logs)",
|
|
9856
|
-
"name": "debug",
|
|
9857
|
-
"allowNo": false,
|
|
9858
|
-
"type": "boolean"
|
|
9859
|
-
},
|
|
9860
|
-
"websocket": {
|
|
9861
|
-
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
9862
|
-
"name": "websocket",
|
|
9863
|
-
"hasDynamicHelp": false,
|
|
9864
|
-
"multiple": false,
|
|
9865
|
-
"type": "option"
|
|
9866
|
-
},
|
|
9867
|
-
"skipauth": {
|
|
9868
|
-
"description": "Skip authentication check when a default username is required",
|
|
9869
|
-
"name": "skipauth",
|
|
9870
|
-
"allowNo": false,
|
|
9871
|
-
"type": "boolean"
|
|
9872
|
-
}
|
|
9873
|
-
},
|
|
9874
|
-
"hasDynamicHelp": false,
|
|
9875
|
-
"hiddenAliases": [],
|
|
9876
|
-
"id": "hardis:project:convert:profilestopermsets",
|
|
9877
|
-
"pluginAlias": "sfdx-hardis",
|
|
9878
|
-
"pluginName": "sfdx-hardis",
|
|
9879
|
-
"pluginType": "core",
|
|
9880
|
-
"strict": true,
|
|
9881
|
-
"enableJsonFlag": true,
|
|
9882
|
-
"title": "Convert Profiles into Permission Sets",
|
|
9883
|
-
"requiresProject": true,
|
|
9884
|
-
"requiresSfdxPlugins": [
|
|
9885
|
-
"shane-sfdx-plugins"
|
|
9886
|
-
],
|
|
9887
|
-
"isESM": true,
|
|
9888
|
-
"relativePath": [
|
|
9889
|
-
"lib",
|
|
9890
|
-
"commands",
|
|
9891
|
-
"hardis",
|
|
9892
|
-
"project",
|
|
9893
|
-
"convert",
|
|
9894
|
-
"profilestopermsets.js"
|
|
9895
|
-
],
|
|
9896
|
-
"aliasPermutations": [],
|
|
9897
|
-
"permutations": [
|
|
9898
|
-
"hardis:project:convert:profilestopermsets",
|
|
9899
|
-
"project:hardis:convert:profilestopermsets",
|
|
9900
|
-
"project:convert:hardis:profilestopermsets",
|
|
9901
|
-
"project:convert:profilestopermsets:hardis",
|
|
9902
|
-
"hardis:convert:project:profilestopermsets",
|
|
9903
|
-
"convert:hardis:project:profilestopermsets",
|
|
9904
|
-
"convert:project:hardis:profilestopermsets",
|
|
9905
|
-
"convert:project:profilestopermsets:hardis",
|
|
9906
|
-
"hardis:convert:profilestopermsets:project",
|
|
9907
|
-
"convert:hardis:profilestopermsets:project",
|
|
9908
|
-
"convert:profilestopermsets:hardis:project",
|
|
9909
|
-
"convert:profilestopermsets:project:hardis",
|
|
9910
|
-
"hardis:project:profilestopermsets:convert",
|
|
9911
|
-
"project:hardis:profilestopermsets:convert",
|
|
9912
|
-
"project:profilestopermsets:hardis:convert",
|
|
9913
|
-
"project:profilestopermsets:convert:hardis",
|
|
9914
|
-
"hardis:profilestopermsets:project:convert",
|
|
9915
|
-
"profilestopermsets:hardis:project:convert",
|
|
9916
|
-
"profilestopermsets:project:hardis:convert",
|
|
9917
|
-
"profilestopermsets:project:convert:hardis",
|
|
9918
|
-
"hardis:profilestopermsets:convert:project",
|
|
9919
|
-
"profilestopermsets:hardis:convert:project",
|
|
9920
|
-
"profilestopermsets:convert:hardis:project",
|
|
9921
|
-
"profilestopermsets:convert:project:hardis"
|
|
9922
|
-
]
|
|
9923
|
-
},
|
|
9924
9821
|
"hardis:project:clean:emptyitems": {
|
|
9925
9822
|
"aliases": [],
|
|
9926
9823
|
"args": {},
|
|
@@ -11406,14 +11303,12 @@
|
|
|
11406
11303
|
"xml:clean:project:hardis"
|
|
11407
11304
|
]
|
|
11408
11305
|
},
|
|
11409
|
-
"hardis:project:
|
|
11306
|
+
"hardis:project:convert:profilestopermsets": {
|
|
11410
11307
|
"aliases": [],
|
|
11411
11308
|
"args": {},
|
|
11412
|
-
"description": "
|
|
11309
|
+
"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",
|
|
11413
11310
|
"examples": [
|
|
11414
|
-
"$ sf hardis:project:
|
|
11415
|
-
"$ sf hardis:project:deploy:notify --check-only --deploy-status invalid --message \"This deployment check has failed !\\n\\Oh no !!\"",
|
|
11416
|
-
"$ sf hardis:project:deploy:notify --deploy-status valid --message \"This deployment has been processed !\\n\\nYahooo !!\""
|
|
11311
|
+
"$ sf hardis:project:convert:profilestopermsets"
|
|
11417
11312
|
],
|
|
11418
11313
|
"flags": {
|
|
11419
11314
|
"json": {
|
|
@@ -11431,34 +11326,13 @@
|
|
|
11431
11326
|
"multiple": false,
|
|
11432
11327
|
"type": "option"
|
|
11433
11328
|
},
|
|
11434
|
-
"
|
|
11435
|
-
"char": "
|
|
11436
|
-
"description": "
|
|
11437
|
-
"name": "
|
|
11438
|
-
"
|
|
11439
|
-
"type": "boolean"
|
|
11440
|
-
},
|
|
11441
|
-
"deploy-status": {
|
|
11442
|
-
"char": "s",
|
|
11443
|
-
"description": "Send success, failure or unknown (default) to indicate if the deployment or deployment simulation is in success or not",
|
|
11444
|
-
"name": "deploy-status",
|
|
11445
|
-
"default": "unknown",
|
|
11446
|
-
"hasDynamicHelp": false,
|
|
11447
|
-
"multiple": false,
|
|
11448
|
-
"options": [
|
|
11449
|
-
"valid",
|
|
11450
|
-
"invalid",
|
|
11451
|
-
"unknown"
|
|
11452
|
-
],
|
|
11453
|
-
"type": "option"
|
|
11454
|
-
},
|
|
11455
|
-
"message": {
|
|
11456
|
-
"char": "m",
|
|
11457
|
-
"description": "Custom message that you want to be added in notifications (string or markdown format)",
|
|
11458
|
-
"name": "message",
|
|
11459
|
-
"default": "",
|
|
11329
|
+
"except": {
|
|
11330
|
+
"char": "e",
|
|
11331
|
+
"description": "List of filters",
|
|
11332
|
+
"name": "except",
|
|
11333
|
+
"default": [],
|
|
11460
11334
|
"hasDynamicHelp": false,
|
|
11461
|
-
"multiple":
|
|
11335
|
+
"multiple": true,
|
|
11462
11336
|
"type": "option"
|
|
11463
11337
|
},
|
|
11464
11338
|
"debug": {
|
|
@@ -11480,58 +11354,399 @@
|
|
|
11480
11354
|
"name": "skipauth",
|
|
11481
11355
|
"allowNo": false,
|
|
11482
11356
|
"type": "boolean"
|
|
11483
|
-
},
|
|
11484
|
-
"target-org": {
|
|
11485
|
-
"aliases": [
|
|
11486
|
-
"targetusername",
|
|
11487
|
-
"u"
|
|
11488
|
-
],
|
|
11489
|
-
"char": "o",
|
|
11490
|
-
"deprecateAliases": true,
|
|
11491
|
-
"name": "target-org",
|
|
11492
|
-
"noCacheDefault": true,
|
|
11493
|
-
"required": true,
|
|
11494
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
11495
|
-
"hasDynamicHelp": true,
|
|
11496
|
-
"multiple": false,
|
|
11497
|
-
"type": "option"
|
|
11498
11357
|
}
|
|
11499
11358
|
},
|
|
11500
|
-
"hasDynamicHelp":
|
|
11359
|
+
"hasDynamicHelp": false,
|
|
11501
11360
|
"hiddenAliases": [],
|
|
11502
|
-
"id": "hardis:project:
|
|
11361
|
+
"id": "hardis:project:convert:profilestopermsets",
|
|
11503
11362
|
"pluginAlias": "sfdx-hardis",
|
|
11504
11363
|
"pluginName": "sfdx-hardis",
|
|
11505
11364
|
"pluginType": "core",
|
|
11506
11365
|
"strict": true,
|
|
11507
11366
|
"enableJsonFlag": true,
|
|
11508
|
-
"title": "
|
|
11367
|
+
"title": "Convert Profiles into Permission Sets",
|
|
11509
11368
|
"requiresProject": true,
|
|
11369
|
+
"requiresSfdxPlugins": [
|
|
11370
|
+
"shane-sfdx-plugins"
|
|
11371
|
+
],
|
|
11510
11372
|
"isESM": true,
|
|
11511
11373
|
"relativePath": [
|
|
11512
11374
|
"lib",
|
|
11513
11375
|
"commands",
|
|
11514
11376
|
"hardis",
|
|
11515
11377
|
"project",
|
|
11516
|
-
"
|
|
11517
|
-
"
|
|
11378
|
+
"convert",
|
|
11379
|
+
"profilestopermsets.js"
|
|
11518
11380
|
],
|
|
11519
11381
|
"aliasPermutations": [],
|
|
11520
11382
|
"permutations": [
|
|
11521
|
-
"hardis:project:
|
|
11522
|
-
"project:hardis:
|
|
11523
|
-
"project:
|
|
11524
|
-
"project:
|
|
11525
|
-
"hardis:
|
|
11526
|
-
"
|
|
11527
|
-
"
|
|
11528
|
-
"
|
|
11529
|
-
"hardis:
|
|
11530
|
-
"
|
|
11531
|
-
"
|
|
11532
|
-
"
|
|
11533
|
-
"hardis:project:
|
|
11534
|
-
"project:hardis:
|
|
11383
|
+
"hardis:project:convert:profilestopermsets",
|
|
11384
|
+
"project:hardis:convert:profilestopermsets",
|
|
11385
|
+
"project:convert:hardis:profilestopermsets",
|
|
11386
|
+
"project:convert:profilestopermsets:hardis",
|
|
11387
|
+
"hardis:convert:project:profilestopermsets",
|
|
11388
|
+
"convert:hardis:project:profilestopermsets",
|
|
11389
|
+
"convert:project:hardis:profilestopermsets",
|
|
11390
|
+
"convert:project:profilestopermsets:hardis",
|
|
11391
|
+
"hardis:convert:profilestopermsets:project",
|
|
11392
|
+
"convert:hardis:profilestopermsets:project",
|
|
11393
|
+
"convert:profilestopermsets:hardis:project",
|
|
11394
|
+
"convert:profilestopermsets:project:hardis",
|
|
11395
|
+
"hardis:project:profilestopermsets:convert",
|
|
11396
|
+
"project:hardis:profilestopermsets:convert",
|
|
11397
|
+
"project:profilestopermsets:hardis:convert",
|
|
11398
|
+
"project:profilestopermsets:convert:hardis",
|
|
11399
|
+
"hardis:profilestopermsets:project:convert",
|
|
11400
|
+
"profilestopermsets:hardis:project:convert",
|
|
11401
|
+
"profilestopermsets:project:hardis:convert",
|
|
11402
|
+
"profilestopermsets:project:convert:hardis",
|
|
11403
|
+
"hardis:profilestopermsets:convert:project",
|
|
11404
|
+
"profilestopermsets:hardis:convert:project",
|
|
11405
|
+
"profilestopermsets:convert:hardis:project",
|
|
11406
|
+
"profilestopermsets:convert:project:hardis"
|
|
11407
|
+
]
|
|
11408
|
+
},
|
|
11409
|
+
"hardis:project:fix:profiletabs": {
|
|
11410
|
+
"aliases": [],
|
|
11411
|
+
"args": {},
|
|
11412
|
+
"description": "\n## Command Behavior\n\n**Interactively updates tab visibility settings in Salesforce profiles, addressing a common issue where tab visibilities are not correctly retrieved by `sf project retrieve start`.**\n\nThis command provides a user-friendly interface to manage tab settings within your profile XML files, ensuring that your local project accurately reflects the intended tab configurations in your Salesforce org.\n\nKey functionalities:\n\n- **Interactive Tab Selection:** Displays a multi-select menu of all available tabs in your org, allowing you to choose which tabs to update.\n- **Visibility Control:** Lets you set the visibility for the selected tabs to either `DefaultOn` (Visible) or `Hidden`.\n- **Profile Selection:** Presents a multi-select menu of all .profile-meta.xml files in your project, allowing you to apply the tab visibility changes to specific profiles.\n- **XML Updates:** Modifies the <tabVisibilities> section of the selected profile XML files to reflect the chosen tab settings. If a tab visibility setting already exists for a selected tab, it will be updated; otherwise, a new one will be added.\n- **Sorted Output:** The <tabVisibilities> in the updated profile XML files are sorted alphabetically for consistency and readability.\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 `TabDefinition` object using `soqlQueryTooling` to retrieve a list of all available tabs in the target org.\n- **File Discovery:** Uses `glob` to find all .profile-meta.xml files within the specified project path.\n- **Interactive Prompts:** Leverages the `prompts` library to create interactive menus for selecting tabs, visibility settings, and profiles.\n- **XML Parsing and Manipulation:** Uses `parseXmlFile` to read the content of profile XML files and `writeXmlFile` to write the modified content back. It manipulates the `tabVisibilities` array within the parsed XML to add or update tab settings.\n- **Array Sorting:** Employs the `sort-array` library to sort the `tabVisibilities` alphabetically by tab name.\n- **Logging:** Provides feedback to the user about which profiles have been updated and a summary of the changes.\n</details>\n",
|
|
11413
|
+
"examples": [
|
|
11414
|
+
"$ sf hardis:project:fix:profiletabs"
|
|
11415
|
+
],
|
|
11416
|
+
"flags": {
|
|
11417
|
+
"json": {
|
|
11418
|
+
"description": "Format output as json.",
|
|
11419
|
+
"helpGroup": "GLOBAL",
|
|
11420
|
+
"name": "json",
|
|
11421
|
+
"allowNo": false,
|
|
11422
|
+
"type": "boolean"
|
|
11423
|
+
},
|
|
11424
|
+
"flags-dir": {
|
|
11425
|
+
"helpGroup": "GLOBAL",
|
|
11426
|
+
"name": "flags-dir",
|
|
11427
|
+
"summary": "Import flag values from a directory.",
|
|
11428
|
+
"hasDynamicHelp": false,
|
|
11429
|
+
"multiple": false,
|
|
11430
|
+
"type": "option"
|
|
11431
|
+
},
|
|
11432
|
+
"path": {
|
|
11433
|
+
"char": "p",
|
|
11434
|
+
"description": "Root folder",
|
|
11435
|
+
"name": "path",
|
|
11436
|
+
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
11437
|
+
"hasDynamicHelp": false,
|
|
11438
|
+
"multiple": false,
|
|
11439
|
+
"type": "option"
|
|
11440
|
+
},
|
|
11441
|
+
"debug": {
|
|
11442
|
+
"char": "d",
|
|
11443
|
+
"description": "Activate debug mode (more logs)",
|
|
11444
|
+
"name": "debug",
|
|
11445
|
+
"allowNo": false,
|
|
11446
|
+
"type": "boolean"
|
|
11447
|
+
},
|
|
11448
|
+
"websocket": {
|
|
11449
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
11450
|
+
"name": "websocket",
|
|
11451
|
+
"hasDynamicHelp": false,
|
|
11452
|
+
"multiple": false,
|
|
11453
|
+
"type": "option"
|
|
11454
|
+
},
|
|
11455
|
+
"skipauth": {
|
|
11456
|
+
"description": "Skip authentication check when a default username is required",
|
|
11457
|
+
"name": "skipauth",
|
|
11458
|
+
"allowNo": false,
|
|
11459
|
+
"type": "boolean"
|
|
11460
|
+
},
|
|
11461
|
+
"target-org": {
|
|
11462
|
+
"aliases": [
|
|
11463
|
+
"targetusername",
|
|
11464
|
+
"u"
|
|
11465
|
+
],
|
|
11466
|
+
"char": "o",
|
|
11467
|
+
"deprecateAliases": true,
|
|
11468
|
+
"name": "target-org",
|
|
11469
|
+
"noCacheDefault": true,
|
|
11470
|
+
"required": true,
|
|
11471
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
11472
|
+
"hasDynamicHelp": true,
|
|
11473
|
+
"multiple": false,
|
|
11474
|
+
"type": "option"
|
|
11475
|
+
}
|
|
11476
|
+
},
|
|
11477
|
+
"hasDynamicHelp": true,
|
|
11478
|
+
"hiddenAliases": [],
|
|
11479
|
+
"id": "hardis:project:fix:profiletabs",
|
|
11480
|
+
"pluginAlias": "sfdx-hardis",
|
|
11481
|
+
"pluginName": "sfdx-hardis",
|
|
11482
|
+
"pluginType": "core",
|
|
11483
|
+
"strict": true,
|
|
11484
|
+
"enableJsonFlag": true,
|
|
11485
|
+
"title": "Fix profiles to add tabs that are not retrieved by SF CLI",
|
|
11486
|
+
"requiresProject": true,
|
|
11487
|
+
"isESM": true,
|
|
11488
|
+
"relativePath": [
|
|
11489
|
+
"lib",
|
|
11490
|
+
"commands",
|
|
11491
|
+
"hardis",
|
|
11492
|
+
"project",
|
|
11493
|
+
"fix",
|
|
11494
|
+
"profiletabs.js"
|
|
11495
|
+
],
|
|
11496
|
+
"aliasPermutations": [],
|
|
11497
|
+
"permutations": [
|
|
11498
|
+
"hardis:project:fix:profiletabs",
|
|
11499
|
+
"project:hardis:fix:profiletabs",
|
|
11500
|
+
"project:fix:hardis:profiletabs",
|
|
11501
|
+
"project:fix:profiletabs:hardis",
|
|
11502
|
+
"hardis:fix:project:profiletabs",
|
|
11503
|
+
"fix:hardis:project:profiletabs",
|
|
11504
|
+
"fix:project:hardis:profiletabs",
|
|
11505
|
+
"fix:project:profiletabs:hardis",
|
|
11506
|
+
"hardis:fix:profiletabs:project",
|
|
11507
|
+
"fix:hardis:profiletabs:project",
|
|
11508
|
+
"fix:profiletabs:hardis:project",
|
|
11509
|
+
"fix:profiletabs:project:hardis",
|
|
11510
|
+
"hardis:project:profiletabs:fix",
|
|
11511
|
+
"project:hardis:profiletabs:fix",
|
|
11512
|
+
"project:profiletabs:hardis:fix",
|
|
11513
|
+
"project:profiletabs:fix:hardis",
|
|
11514
|
+
"hardis:profiletabs:project:fix",
|
|
11515
|
+
"profiletabs:hardis:project:fix",
|
|
11516
|
+
"profiletabs:project:hardis:fix",
|
|
11517
|
+
"profiletabs:project:fix:hardis",
|
|
11518
|
+
"hardis:profiletabs:fix:project",
|
|
11519
|
+
"profiletabs:hardis:fix:project",
|
|
11520
|
+
"profiletabs:fix:hardis:project",
|
|
11521
|
+
"profiletabs:fix:project:hardis"
|
|
11522
|
+
]
|
|
11523
|
+
},
|
|
11524
|
+
"hardis:project:fix:v53flexipages": {
|
|
11525
|
+
"aliases": [],
|
|
11526
|
+
"args": {},
|
|
11527
|
+
"description": "\n## Command Behavior\n\n**Fixes Salesforce FlexiPages for compatibility with API Version 53.0 (Winter '22 release) by adding missing identifiers to component instances.**\n\nSalesforce introduced a change in API Version 53.0 that requires `identifier` tags within `componentInstance` and `fieldInstance` elements in FlexiPage metadata. If these identifiers are missing, deployments to orgs with API version 53.0 or higher will fail. This command automates the process of adding these missing identifiers, ensuring your FlexiPages remain deployable.\n\nKey functionalities:\n\n- **Targeted FlexiPage Processing:** Scans all .flexipage-meta.xml files within the specified root folder (defaults to current working directory).\n- **Identifier Injection:** Inserts a unique `identifier` tag (e.g., `SFDX_HARDIS_REPLACEMENT_ID`) into `componentInstance` and `fieldInstance` elements that lack one.\n\n**Important Note:** After running this command, ensure you update your `apiVersion` to `53.0` (or higher) in your `package.xml` and `sfdx-project.json` files.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **File Discovery:** Uses `glob` to find all .flexipage-meta.xml files.\n- **Content Reading:** Reads the XML content of each FlexiPage file.\n- **Regular Expression Replacement:** Employs a set of regular expressions to identify specific XML patterns (componentName.../componentName.../componentInstance, componentName.../componentName.../visibilityRule, fieldItem.../fieldItem.../fieldInstance) that are missing the `identifier` tag.\n- **Dynamic ID Generation:** For each match, it generates a unique identifier (e.g., `sfdxHardisIdX`) and injects it into the XML structure.\n- **File Writing:** If changes are made, the modified XML content is written back to the FlexiPage file using `fs.writeFile`.\n- **Logging:** Provides messages about which FlexiPages are being processed and a summary of the total number of identifiers added.\n</details>\n",
|
|
11528
|
+
"examples": [
|
|
11529
|
+
"$ sf hardis:project:fix:v53flexipages"
|
|
11530
|
+
],
|
|
11531
|
+
"flags": {
|
|
11532
|
+
"json": {
|
|
11533
|
+
"description": "Format output as json.",
|
|
11534
|
+
"helpGroup": "GLOBAL",
|
|
11535
|
+
"name": "json",
|
|
11536
|
+
"allowNo": false,
|
|
11537
|
+
"type": "boolean"
|
|
11538
|
+
},
|
|
11539
|
+
"flags-dir": {
|
|
11540
|
+
"helpGroup": "GLOBAL",
|
|
11541
|
+
"name": "flags-dir",
|
|
11542
|
+
"summary": "Import flag values from a directory.",
|
|
11543
|
+
"hasDynamicHelp": false,
|
|
11544
|
+
"multiple": false,
|
|
11545
|
+
"type": "option"
|
|
11546
|
+
},
|
|
11547
|
+
"path": {
|
|
11548
|
+
"char": "p",
|
|
11549
|
+
"description": "Root folder",
|
|
11550
|
+
"name": "path",
|
|
11551
|
+
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
11552
|
+
"hasDynamicHelp": false,
|
|
11553
|
+
"multiple": false,
|
|
11554
|
+
"type": "option"
|
|
11555
|
+
},
|
|
11556
|
+
"debug": {
|
|
11557
|
+
"char": "d",
|
|
11558
|
+
"description": "Activate debug mode (more logs)",
|
|
11559
|
+
"name": "debug",
|
|
11560
|
+
"allowNo": false,
|
|
11561
|
+
"type": "boolean"
|
|
11562
|
+
},
|
|
11563
|
+
"websocket": {
|
|
11564
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
11565
|
+
"name": "websocket",
|
|
11566
|
+
"hasDynamicHelp": false,
|
|
11567
|
+
"multiple": false,
|
|
11568
|
+
"type": "option"
|
|
11569
|
+
},
|
|
11570
|
+
"skipauth": {
|
|
11571
|
+
"description": "Skip authentication check when a default username is required",
|
|
11572
|
+
"name": "skipauth",
|
|
11573
|
+
"allowNo": false,
|
|
11574
|
+
"type": "boolean"
|
|
11575
|
+
}
|
|
11576
|
+
},
|
|
11577
|
+
"hasDynamicHelp": false,
|
|
11578
|
+
"hiddenAliases": [],
|
|
11579
|
+
"id": "hardis:project:fix:v53flexipages",
|
|
11580
|
+
"pluginAlias": "sfdx-hardis",
|
|
11581
|
+
"pluginName": "sfdx-hardis",
|
|
11582
|
+
"pluginType": "core",
|
|
11583
|
+
"strict": true,
|
|
11584
|
+
"enableJsonFlag": true,
|
|
11585
|
+
"title": "Fix flexipages for v53",
|
|
11586
|
+
"requiresProject": true,
|
|
11587
|
+
"isESM": true,
|
|
11588
|
+
"relativePath": [
|
|
11589
|
+
"lib",
|
|
11590
|
+
"commands",
|
|
11591
|
+
"hardis",
|
|
11592
|
+
"project",
|
|
11593
|
+
"fix",
|
|
11594
|
+
"v53flexipages.js"
|
|
11595
|
+
],
|
|
11596
|
+
"aliasPermutations": [],
|
|
11597
|
+
"permutations": [
|
|
11598
|
+
"hardis:project:fix:v53flexipages",
|
|
11599
|
+
"project:hardis:fix:v53flexipages",
|
|
11600
|
+
"project:fix:hardis:v53flexipages",
|
|
11601
|
+
"project:fix:v53flexipages:hardis",
|
|
11602
|
+
"hardis:fix:project:v53flexipages",
|
|
11603
|
+
"fix:hardis:project:v53flexipages",
|
|
11604
|
+
"fix:project:hardis:v53flexipages",
|
|
11605
|
+
"fix:project:v53flexipages:hardis",
|
|
11606
|
+
"hardis:fix:v53flexipages:project",
|
|
11607
|
+
"fix:hardis:v53flexipages:project",
|
|
11608
|
+
"fix:v53flexipages:hardis:project",
|
|
11609
|
+
"fix:v53flexipages:project:hardis",
|
|
11610
|
+
"hardis:project:v53flexipages:fix",
|
|
11611
|
+
"project:hardis:v53flexipages:fix",
|
|
11612
|
+
"project:v53flexipages:hardis:fix",
|
|
11613
|
+
"project:v53flexipages:fix:hardis",
|
|
11614
|
+
"hardis:v53flexipages:project:fix",
|
|
11615
|
+
"v53flexipages:hardis:project:fix",
|
|
11616
|
+
"v53flexipages:project:hardis:fix",
|
|
11617
|
+
"v53flexipages:project:fix:hardis",
|
|
11618
|
+
"hardis:v53flexipages:fix:project",
|
|
11619
|
+
"v53flexipages:hardis:fix:project",
|
|
11620
|
+
"v53flexipages:fix:hardis:project",
|
|
11621
|
+
"v53flexipages:fix:project:hardis"
|
|
11622
|
+
]
|
|
11623
|
+
},
|
|
11624
|
+
"hardis:project:deploy:notify": {
|
|
11625
|
+
"aliases": [],
|
|
11626
|
+
"args": {},
|
|
11627
|
+
"description": "Post notifications related to:\n\n- **Deployment simulation** _(use with --check-only)_\n\n- **Deployment process** _(to call only if your deployment is successful)_\n\n### Integrations\n\nAccording to the [integrations you configured](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integrations-home/), notifications can contain deployment information and [Flow Visual Git Diff](https://sfdx-hardis.cloudity.com/salesforce-deployment-assistant-home/#flow-visual-git-diff)\n\n - GitHub, Gitlab, Azure DevOps, Bitbucket comments on Pull Requests (including Flows Visual Git Diff)\n\n - Slack, Microsoft Teams, Email deployment summary after a successful deployment\n\n - JIRA tags and comments on tickets that just has been deployed\n\n\n\n\n\n### Flows Visual Git Diff\n\n- Visually show you the differences on a diagram\n\n- Display the update details without having to open any XML !\n\n🟩 = added\n\n🟥 = removed\n\n🟧 = updated\n\n\n\n\n\n### In custom CI/CD workflow\n\nExample of usage in a custom CI/CD pipeline:\n\n```bash\n# Disable exit-on-error temporarily\nset +e\n\n# Run the deploy command\nsf project deploy start [....]\nRET_CODE=$?\n\n# Re-enable exit-on-error\nset -e\n\n# Determine MYSTATUS based on return code\nif [ $RET_CODE -eq 0 ]; then\n MYSTATUS=\"valid\"\nelse\n MYSTATUS=\"invalid\"\nfi\n\n# Run the notify command with MYSTATUS\nsf hardis:project:deploy:notify --check-only --deploy-status \"$MYSTATUS\"\n```\n\n### Other usages\n\nThis command is for custom SF Cli pipelines, if you are a sfdx-hardis user, it is already embedded in sf hardis:deploy:smart.\n\nYou can also use [sfdx-hardis wrapper commands of SF deployment commands](https://sfdx-hardis.cloudity.com/salesforce-deployment-assistant-setup/#using-custom-cicd-pipeline)\n",
|
|
11628
|
+
"examples": [
|
|
11629
|
+
"$ sf hardis:project:deploy:notify --check-only --deploy-status valid --message \"This deployment check is valid\\n\\nYahooo !!\"",
|
|
11630
|
+
"$ sf hardis:project:deploy:notify --check-only --deploy-status invalid --message \"This deployment check has failed !\\n\\Oh no !!\"",
|
|
11631
|
+
"$ sf hardis:project:deploy:notify --deploy-status valid --message \"This deployment has been processed !\\n\\nYahooo !!\""
|
|
11632
|
+
],
|
|
11633
|
+
"flags": {
|
|
11634
|
+
"json": {
|
|
11635
|
+
"description": "Format output as json.",
|
|
11636
|
+
"helpGroup": "GLOBAL",
|
|
11637
|
+
"name": "json",
|
|
11638
|
+
"allowNo": false,
|
|
11639
|
+
"type": "boolean"
|
|
11640
|
+
},
|
|
11641
|
+
"flags-dir": {
|
|
11642
|
+
"helpGroup": "GLOBAL",
|
|
11643
|
+
"name": "flags-dir",
|
|
11644
|
+
"summary": "Import flag values from a directory.",
|
|
11645
|
+
"hasDynamicHelp": false,
|
|
11646
|
+
"multiple": false,
|
|
11647
|
+
"type": "option"
|
|
11648
|
+
},
|
|
11649
|
+
"check-only": {
|
|
11650
|
+
"char": "c",
|
|
11651
|
+
"description": "Use this option to send notifications from a Deployment simulation job",
|
|
11652
|
+
"name": "check-only",
|
|
11653
|
+
"allowNo": false,
|
|
11654
|
+
"type": "boolean"
|
|
11655
|
+
},
|
|
11656
|
+
"deploy-status": {
|
|
11657
|
+
"char": "s",
|
|
11658
|
+
"description": "Send success, failure or unknown (default) to indicate if the deployment or deployment simulation is in success or not",
|
|
11659
|
+
"name": "deploy-status",
|
|
11660
|
+
"default": "unknown",
|
|
11661
|
+
"hasDynamicHelp": false,
|
|
11662
|
+
"multiple": false,
|
|
11663
|
+
"options": [
|
|
11664
|
+
"valid",
|
|
11665
|
+
"invalid",
|
|
11666
|
+
"unknown"
|
|
11667
|
+
],
|
|
11668
|
+
"type": "option"
|
|
11669
|
+
},
|
|
11670
|
+
"message": {
|
|
11671
|
+
"char": "m",
|
|
11672
|
+
"description": "Custom message that you want to be added in notifications (string or markdown format)",
|
|
11673
|
+
"name": "message",
|
|
11674
|
+
"default": "",
|
|
11675
|
+
"hasDynamicHelp": false,
|
|
11676
|
+
"multiple": false,
|
|
11677
|
+
"type": "option"
|
|
11678
|
+
},
|
|
11679
|
+
"debug": {
|
|
11680
|
+
"char": "d",
|
|
11681
|
+
"description": "Activate debug mode (more logs)",
|
|
11682
|
+
"name": "debug",
|
|
11683
|
+
"allowNo": false,
|
|
11684
|
+
"type": "boolean"
|
|
11685
|
+
},
|
|
11686
|
+
"websocket": {
|
|
11687
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
11688
|
+
"name": "websocket",
|
|
11689
|
+
"hasDynamicHelp": false,
|
|
11690
|
+
"multiple": false,
|
|
11691
|
+
"type": "option"
|
|
11692
|
+
},
|
|
11693
|
+
"skipauth": {
|
|
11694
|
+
"description": "Skip authentication check when a default username is required",
|
|
11695
|
+
"name": "skipauth",
|
|
11696
|
+
"allowNo": false,
|
|
11697
|
+
"type": "boolean"
|
|
11698
|
+
},
|
|
11699
|
+
"target-org": {
|
|
11700
|
+
"aliases": [
|
|
11701
|
+
"targetusername",
|
|
11702
|
+
"u"
|
|
11703
|
+
],
|
|
11704
|
+
"char": "o",
|
|
11705
|
+
"deprecateAliases": true,
|
|
11706
|
+
"name": "target-org",
|
|
11707
|
+
"noCacheDefault": true,
|
|
11708
|
+
"required": true,
|
|
11709
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
11710
|
+
"hasDynamicHelp": true,
|
|
11711
|
+
"multiple": false,
|
|
11712
|
+
"type": "option"
|
|
11713
|
+
}
|
|
11714
|
+
},
|
|
11715
|
+
"hasDynamicHelp": true,
|
|
11716
|
+
"hiddenAliases": [],
|
|
11717
|
+
"id": "hardis:project:deploy:notify",
|
|
11718
|
+
"pluginAlias": "sfdx-hardis",
|
|
11719
|
+
"pluginName": "sfdx-hardis",
|
|
11720
|
+
"pluginType": "core",
|
|
11721
|
+
"strict": true,
|
|
11722
|
+
"enableJsonFlag": true,
|
|
11723
|
+
"title": "Deployment Notifications",
|
|
11724
|
+
"requiresProject": true,
|
|
11725
|
+
"isESM": true,
|
|
11726
|
+
"relativePath": [
|
|
11727
|
+
"lib",
|
|
11728
|
+
"commands",
|
|
11729
|
+
"hardis",
|
|
11730
|
+
"project",
|
|
11731
|
+
"deploy",
|
|
11732
|
+
"notify.js"
|
|
11733
|
+
],
|
|
11734
|
+
"aliasPermutations": [],
|
|
11735
|
+
"permutations": [
|
|
11736
|
+
"hardis:project:deploy:notify",
|
|
11737
|
+
"project:hardis:deploy:notify",
|
|
11738
|
+
"project:deploy:hardis:notify",
|
|
11739
|
+
"project:deploy:notify:hardis",
|
|
11740
|
+
"hardis:deploy:project:notify",
|
|
11741
|
+
"deploy:hardis:project:notify",
|
|
11742
|
+
"deploy:project:hardis:notify",
|
|
11743
|
+
"deploy:project:notify:hardis",
|
|
11744
|
+
"hardis:deploy:notify:project",
|
|
11745
|
+
"deploy:hardis:notify:project",
|
|
11746
|
+
"deploy:notify:hardis:project",
|
|
11747
|
+
"deploy:notify:project:hardis",
|
|
11748
|
+
"hardis:project:notify:deploy",
|
|
11749
|
+
"project:hardis:notify:deploy",
|
|
11535
11750
|
"project:notify:hardis:deploy",
|
|
11536
11751
|
"project:notify:deploy:hardis",
|
|
11537
11752
|
"hardis:notify:project:deploy",
|
|
@@ -12581,221 +12796,6 @@
|
|
|
12581
12796
|
"validate:deploy:project:hardis"
|
|
12582
12797
|
]
|
|
12583
12798
|
},
|
|
12584
|
-
"hardis:project:fix:profiletabs": {
|
|
12585
|
-
"aliases": [],
|
|
12586
|
-
"args": {},
|
|
12587
|
-
"description": "\n## Command Behavior\n\n**Interactively updates tab visibility settings in Salesforce profiles, addressing a common issue where tab visibilities are not correctly retrieved by `sf project retrieve start`.**\n\nThis command provides a user-friendly interface to manage tab settings within your profile XML files, ensuring that your local project accurately reflects the intended tab configurations in your Salesforce org.\n\nKey functionalities:\n\n- **Interactive Tab Selection:** Displays a multi-select menu of all available tabs in your org, allowing you to choose which tabs to update.\n- **Visibility Control:** Lets you set the visibility for the selected tabs to either `DefaultOn` (Visible) or `Hidden`.\n- **Profile Selection:** Presents a multi-select menu of all .profile-meta.xml files in your project, allowing you to apply the tab visibility changes to specific profiles.\n- **XML Updates:** Modifies the <tabVisibilities> section of the selected profile XML files to reflect the chosen tab settings. If a tab visibility setting already exists for a selected tab, it will be updated; otherwise, a new one will be added.\n- **Sorted Output:** The <tabVisibilities> in the updated profile XML files are sorted alphabetically for consistency and readability.\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 `TabDefinition` object using `soqlQueryTooling` to retrieve a list of all available tabs in the target org.\n- **File Discovery:** Uses `glob` to find all .profile-meta.xml files within the specified project path.\n- **Interactive Prompts:** Leverages the `prompts` library to create interactive menus for selecting tabs, visibility settings, and profiles.\n- **XML Parsing and Manipulation:** Uses `parseXmlFile` to read the content of profile XML files and `writeXmlFile` to write the modified content back. It manipulates the `tabVisibilities` array within the parsed XML to add or update tab settings.\n- **Array Sorting:** Employs the `sort-array` library to sort the `tabVisibilities` alphabetically by tab name.\n- **Logging:** Provides feedback to the user about which profiles have been updated and a summary of the changes.\n</details>\n",
|
|
12588
|
-
"examples": [
|
|
12589
|
-
"$ sf hardis:project:fix:profiletabs"
|
|
12590
|
-
],
|
|
12591
|
-
"flags": {
|
|
12592
|
-
"json": {
|
|
12593
|
-
"description": "Format output as json.",
|
|
12594
|
-
"helpGroup": "GLOBAL",
|
|
12595
|
-
"name": "json",
|
|
12596
|
-
"allowNo": false,
|
|
12597
|
-
"type": "boolean"
|
|
12598
|
-
},
|
|
12599
|
-
"flags-dir": {
|
|
12600
|
-
"helpGroup": "GLOBAL",
|
|
12601
|
-
"name": "flags-dir",
|
|
12602
|
-
"summary": "Import flag values from a directory.",
|
|
12603
|
-
"hasDynamicHelp": false,
|
|
12604
|
-
"multiple": false,
|
|
12605
|
-
"type": "option"
|
|
12606
|
-
},
|
|
12607
|
-
"path": {
|
|
12608
|
-
"char": "p",
|
|
12609
|
-
"description": "Root folder",
|
|
12610
|
-
"name": "path",
|
|
12611
|
-
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
12612
|
-
"hasDynamicHelp": false,
|
|
12613
|
-
"multiple": false,
|
|
12614
|
-
"type": "option"
|
|
12615
|
-
},
|
|
12616
|
-
"debug": {
|
|
12617
|
-
"char": "d",
|
|
12618
|
-
"description": "Activate debug mode (more logs)",
|
|
12619
|
-
"name": "debug",
|
|
12620
|
-
"allowNo": false,
|
|
12621
|
-
"type": "boolean"
|
|
12622
|
-
},
|
|
12623
|
-
"websocket": {
|
|
12624
|
-
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
12625
|
-
"name": "websocket",
|
|
12626
|
-
"hasDynamicHelp": false,
|
|
12627
|
-
"multiple": false,
|
|
12628
|
-
"type": "option"
|
|
12629
|
-
},
|
|
12630
|
-
"skipauth": {
|
|
12631
|
-
"description": "Skip authentication check when a default username is required",
|
|
12632
|
-
"name": "skipauth",
|
|
12633
|
-
"allowNo": false,
|
|
12634
|
-
"type": "boolean"
|
|
12635
|
-
},
|
|
12636
|
-
"target-org": {
|
|
12637
|
-
"aliases": [
|
|
12638
|
-
"targetusername",
|
|
12639
|
-
"u"
|
|
12640
|
-
],
|
|
12641
|
-
"char": "o",
|
|
12642
|
-
"deprecateAliases": true,
|
|
12643
|
-
"name": "target-org",
|
|
12644
|
-
"noCacheDefault": true,
|
|
12645
|
-
"required": true,
|
|
12646
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
12647
|
-
"hasDynamicHelp": true,
|
|
12648
|
-
"multiple": false,
|
|
12649
|
-
"type": "option"
|
|
12650
|
-
}
|
|
12651
|
-
},
|
|
12652
|
-
"hasDynamicHelp": true,
|
|
12653
|
-
"hiddenAliases": [],
|
|
12654
|
-
"id": "hardis:project:fix:profiletabs",
|
|
12655
|
-
"pluginAlias": "sfdx-hardis",
|
|
12656
|
-
"pluginName": "sfdx-hardis",
|
|
12657
|
-
"pluginType": "core",
|
|
12658
|
-
"strict": true,
|
|
12659
|
-
"enableJsonFlag": true,
|
|
12660
|
-
"title": "Fix profiles to add tabs that are not retrieved by SF CLI",
|
|
12661
|
-
"requiresProject": true,
|
|
12662
|
-
"isESM": true,
|
|
12663
|
-
"relativePath": [
|
|
12664
|
-
"lib",
|
|
12665
|
-
"commands",
|
|
12666
|
-
"hardis",
|
|
12667
|
-
"project",
|
|
12668
|
-
"fix",
|
|
12669
|
-
"profiletabs.js"
|
|
12670
|
-
],
|
|
12671
|
-
"aliasPermutations": [],
|
|
12672
|
-
"permutations": [
|
|
12673
|
-
"hardis:project:fix:profiletabs",
|
|
12674
|
-
"project:hardis:fix:profiletabs",
|
|
12675
|
-
"project:fix:hardis:profiletabs",
|
|
12676
|
-
"project:fix:profiletabs:hardis",
|
|
12677
|
-
"hardis:fix:project:profiletabs",
|
|
12678
|
-
"fix:hardis:project:profiletabs",
|
|
12679
|
-
"fix:project:hardis:profiletabs",
|
|
12680
|
-
"fix:project:profiletabs:hardis",
|
|
12681
|
-
"hardis:fix:profiletabs:project",
|
|
12682
|
-
"fix:hardis:profiletabs:project",
|
|
12683
|
-
"fix:profiletabs:hardis:project",
|
|
12684
|
-
"fix:profiletabs:project:hardis",
|
|
12685
|
-
"hardis:project:profiletabs:fix",
|
|
12686
|
-
"project:hardis:profiletabs:fix",
|
|
12687
|
-
"project:profiletabs:hardis:fix",
|
|
12688
|
-
"project:profiletabs:fix:hardis",
|
|
12689
|
-
"hardis:profiletabs:project:fix",
|
|
12690
|
-
"profiletabs:hardis:project:fix",
|
|
12691
|
-
"profiletabs:project:hardis:fix",
|
|
12692
|
-
"profiletabs:project:fix:hardis",
|
|
12693
|
-
"hardis:profiletabs:fix:project",
|
|
12694
|
-
"profiletabs:hardis:fix:project",
|
|
12695
|
-
"profiletabs:fix:hardis:project",
|
|
12696
|
-
"profiletabs:fix:project:hardis"
|
|
12697
|
-
]
|
|
12698
|
-
},
|
|
12699
|
-
"hardis:project:fix:v53flexipages": {
|
|
12700
|
-
"aliases": [],
|
|
12701
|
-
"args": {},
|
|
12702
|
-
"description": "\n## Command Behavior\n\n**Fixes Salesforce FlexiPages for compatibility with API Version 53.0 (Winter '22 release) by adding missing identifiers to component instances.**\n\nSalesforce introduced a change in API Version 53.0 that requires `identifier` tags within `componentInstance` and `fieldInstance` elements in FlexiPage metadata. If these identifiers are missing, deployments to orgs with API version 53.0 or higher will fail. This command automates the process of adding these missing identifiers, ensuring your FlexiPages remain deployable.\n\nKey functionalities:\n\n- **Targeted FlexiPage Processing:** Scans all .flexipage-meta.xml files within the specified root folder (defaults to current working directory).\n- **Identifier Injection:** Inserts a unique `identifier` tag (e.g., `SFDX_HARDIS_REPLACEMENT_ID`) into `componentInstance` and `fieldInstance` elements that lack one.\n\n**Important Note:** After running this command, ensure you update your `apiVersion` to `53.0` (or higher) in your `package.xml` and `sfdx-project.json` files.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **File Discovery:** Uses `glob` to find all .flexipage-meta.xml files.\n- **Content Reading:** Reads the XML content of each FlexiPage file.\n- **Regular Expression Replacement:** Employs a set of regular expressions to identify specific XML patterns (componentName.../componentName.../componentInstance, componentName.../componentName.../visibilityRule, fieldItem.../fieldItem.../fieldInstance) that are missing the `identifier` tag.\n- **Dynamic ID Generation:** For each match, it generates a unique identifier (e.g., `sfdxHardisIdX`) and injects it into the XML structure.\n- **File Writing:** If changes are made, the modified XML content is written back to the FlexiPage file using `fs.writeFile`.\n- **Logging:** Provides messages about which FlexiPages are being processed and a summary of the total number of identifiers added.\n</details>\n",
|
|
12703
|
-
"examples": [
|
|
12704
|
-
"$ sf hardis:project:fix:v53flexipages"
|
|
12705
|
-
],
|
|
12706
|
-
"flags": {
|
|
12707
|
-
"json": {
|
|
12708
|
-
"description": "Format output as json.",
|
|
12709
|
-
"helpGroup": "GLOBAL",
|
|
12710
|
-
"name": "json",
|
|
12711
|
-
"allowNo": false,
|
|
12712
|
-
"type": "boolean"
|
|
12713
|
-
},
|
|
12714
|
-
"flags-dir": {
|
|
12715
|
-
"helpGroup": "GLOBAL",
|
|
12716
|
-
"name": "flags-dir",
|
|
12717
|
-
"summary": "Import flag values from a directory.",
|
|
12718
|
-
"hasDynamicHelp": false,
|
|
12719
|
-
"multiple": false,
|
|
12720
|
-
"type": "option"
|
|
12721
|
-
},
|
|
12722
|
-
"path": {
|
|
12723
|
-
"char": "p",
|
|
12724
|
-
"description": "Root folder",
|
|
12725
|
-
"name": "path",
|
|
12726
|
-
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
12727
|
-
"hasDynamicHelp": false,
|
|
12728
|
-
"multiple": false,
|
|
12729
|
-
"type": "option"
|
|
12730
|
-
},
|
|
12731
|
-
"debug": {
|
|
12732
|
-
"char": "d",
|
|
12733
|
-
"description": "Activate debug mode (more logs)",
|
|
12734
|
-
"name": "debug",
|
|
12735
|
-
"allowNo": false,
|
|
12736
|
-
"type": "boolean"
|
|
12737
|
-
},
|
|
12738
|
-
"websocket": {
|
|
12739
|
-
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
12740
|
-
"name": "websocket",
|
|
12741
|
-
"hasDynamicHelp": false,
|
|
12742
|
-
"multiple": false,
|
|
12743
|
-
"type": "option"
|
|
12744
|
-
},
|
|
12745
|
-
"skipauth": {
|
|
12746
|
-
"description": "Skip authentication check when a default username is required",
|
|
12747
|
-
"name": "skipauth",
|
|
12748
|
-
"allowNo": false,
|
|
12749
|
-
"type": "boolean"
|
|
12750
|
-
}
|
|
12751
|
-
},
|
|
12752
|
-
"hasDynamicHelp": false,
|
|
12753
|
-
"hiddenAliases": [],
|
|
12754
|
-
"id": "hardis:project:fix:v53flexipages",
|
|
12755
|
-
"pluginAlias": "sfdx-hardis",
|
|
12756
|
-
"pluginName": "sfdx-hardis",
|
|
12757
|
-
"pluginType": "core",
|
|
12758
|
-
"strict": true,
|
|
12759
|
-
"enableJsonFlag": true,
|
|
12760
|
-
"title": "Fix flexipages for v53",
|
|
12761
|
-
"requiresProject": true,
|
|
12762
|
-
"isESM": true,
|
|
12763
|
-
"relativePath": [
|
|
12764
|
-
"lib",
|
|
12765
|
-
"commands",
|
|
12766
|
-
"hardis",
|
|
12767
|
-
"project",
|
|
12768
|
-
"fix",
|
|
12769
|
-
"v53flexipages.js"
|
|
12770
|
-
],
|
|
12771
|
-
"aliasPermutations": [],
|
|
12772
|
-
"permutations": [
|
|
12773
|
-
"hardis:project:fix:v53flexipages",
|
|
12774
|
-
"project:hardis:fix:v53flexipages",
|
|
12775
|
-
"project:fix:hardis:v53flexipages",
|
|
12776
|
-
"project:fix:v53flexipages:hardis",
|
|
12777
|
-
"hardis:fix:project:v53flexipages",
|
|
12778
|
-
"fix:hardis:project:v53flexipages",
|
|
12779
|
-
"fix:project:hardis:v53flexipages",
|
|
12780
|
-
"fix:project:v53flexipages:hardis",
|
|
12781
|
-
"hardis:fix:v53flexipages:project",
|
|
12782
|
-
"fix:hardis:v53flexipages:project",
|
|
12783
|
-
"fix:v53flexipages:hardis:project",
|
|
12784
|
-
"fix:v53flexipages:project:hardis",
|
|
12785
|
-
"hardis:project:v53flexipages:fix",
|
|
12786
|
-
"project:hardis:v53flexipages:fix",
|
|
12787
|
-
"project:v53flexipages:hardis:fix",
|
|
12788
|
-
"project:v53flexipages:fix:hardis",
|
|
12789
|
-
"hardis:v53flexipages:project:fix",
|
|
12790
|
-
"v53flexipages:hardis:project:fix",
|
|
12791
|
-
"v53flexipages:project:hardis:fix",
|
|
12792
|
-
"v53flexipages:project:fix:hardis",
|
|
12793
|
-
"hardis:v53flexipages:fix:project",
|
|
12794
|
-
"v53flexipages:hardis:fix:project",
|
|
12795
|
-
"v53flexipages:fix:hardis:project",
|
|
12796
|
-
"v53flexipages:fix:project:hardis"
|
|
12797
|
-
]
|
|
12798
|
-
},
|
|
12799
12799
|
"hardis:project:generate:bypass": {
|
|
12800
12800
|
"aliases": [],
|
|
12801
12801
|
"args": {},
|
|
@@ -15369,5 +15369,5 @@
|
|
|
15369
15369
|
]
|
|
15370
15370
|
}
|
|
15371
15371
|
},
|
|
15372
|
-
"version": "6.
|
|
15372
|
+
"version": "6.7.0"
|
|
15373
15373
|
}
|