sfdx-hardis 6.13.0 → 6.14.1-beta202512011840.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
|
@@ -5808,121 +5808,6 @@
|
|
|
5808
5808
|
"import:files:org:hardis"
|
|
5809
5809
|
]
|
|
5810
5810
|
},
|
|
5811
|
-
"hardis:org:fix:listviewmine": {
|
|
5812
|
-
"aliases": [],
|
|
5813
|
-
"args": {},
|
|
5814
|
-
"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",
|
|
5815
|
-
"examples": [
|
|
5816
|
-
"$ sf hardis:org:fix:listviewmine",
|
|
5817
|
-
"$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
|
|
5818
|
-
],
|
|
5819
|
-
"flags": {
|
|
5820
|
-
"json": {
|
|
5821
|
-
"description": "Format output as json.",
|
|
5822
|
-
"helpGroup": "GLOBAL",
|
|
5823
|
-
"name": "json",
|
|
5824
|
-
"allowNo": false,
|
|
5825
|
-
"type": "boolean"
|
|
5826
|
-
},
|
|
5827
|
-
"flags-dir": {
|
|
5828
|
-
"helpGroup": "GLOBAL",
|
|
5829
|
-
"name": "flags-dir",
|
|
5830
|
-
"summary": "Import flag values from a directory.",
|
|
5831
|
-
"hasDynamicHelp": false,
|
|
5832
|
-
"multiple": false,
|
|
5833
|
-
"type": "option"
|
|
5834
|
-
},
|
|
5835
|
-
"listviews": {
|
|
5836
|
-
"char": "l",
|
|
5837
|
-
"description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
|
|
5838
|
-
"name": "listviews",
|
|
5839
|
-
"hasDynamicHelp": false,
|
|
5840
|
-
"multiple": false,
|
|
5841
|
-
"type": "option"
|
|
5842
|
-
},
|
|
5843
|
-
"debug": {
|
|
5844
|
-
"char": "d",
|
|
5845
|
-
"description": "Activate debug mode (more logs)",
|
|
5846
|
-
"name": "debug",
|
|
5847
|
-
"allowNo": false,
|
|
5848
|
-
"type": "boolean"
|
|
5849
|
-
},
|
|
5850
|
-
"websocket": {
|
|
5851
|
-
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
5852
|
-
"name": "websocket",
|
|
5853
|
-
"hasDynamicHelp": false,
|
|
5854
|
-
"multiple": false,
|
|
5855
|
-
"type": "option"
|
|
5856
|
-
},
|
|
5857
|
-
"skipauth": {
|
|
5858
|
-
"description": "Skip authentication check when a default username is required",
|
|
5859
|
-
"name": "skipauth",
|
|
5860
|
-
"allowNo": false,
|
|
5861
|
-
"type": "boolean"
|
|
5862
|
-
},
|
|
5863
|
-
"target-org": {
|
|
5864
|
-
"aliases": [
|
|
5865
|
-
"targetusername",
|
|
5866
|
-
"u"
|
|
5867
|
-
],
|
|
5868
|
-
"char": "o",
|
|
5869
|
-
"deprecateAliases": true,
|
|
5870
|
-
"name": "target-org",
|
|
5871
|
-
"noCacheDefault": true,
|
|
5872
|
-
"required": true,
|
|
5873
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
5874
|
-
"hasDynamicHelp": true,
|
|
5875
|
-
"multiple": false,
|
|
5876
|
-
"type": "option"
|
|
5877
|
-
}
|
|
5878
|
-
},
|
|
5879
|
-
"hasDynamicHelp": true,
|
|
5880
|
-
"hiddenAliases": [],
|
|
5881
|
-
"id": "hardis:org:fix:listviewmine",
|
|
5882
|
-
"pluginAlias": "sfdx-hardis",
|
|
5883
|
-
"pluginName": "sfdx-hardis",
|
|
5884
|
-
"pluginType": "core",
|
|
5885
|
-
"strict": true,
|
|
5886
|
-
"enableJsonFlag": true,
|
|
5887
|
-
"title": "Fix listviews with ",
|
|
5888
|
-
"requiresProject": true,
|
|
5889
|
-
"isESM": true,
|
|
5890
|
-
"relativePath": [
|
|
5891
|
-
"lib",
|
|
5892
|
-
"commands",
|
|
5893
|
-
"hardis",
|
|
5894
|
-
"org",
|
|
5895
|
-
"fix",
|
|
5896
|
-
"listviewmine.js"
|
|
5897
|
-
],
|
|
5898
|
-
"aliasPermutations": [],
|
|
5899
|
-
"permutations": [
|
|
5900
|
-
"hardis:org:fix:listviewmine",
|
|
5901
|
-
"org:hardis:fix:listviewmine",
|
|
5902
|
-
"org:fix:hardis:listviewmine",
|
|
5903
|
-
"org:fix:listviewmine:hardis",
|
|
5904
|
-
"hardis:fix:org:listviewmine",
|
|
5905
|
-
"fix:hardis:org:listviewmine",
|
|
5906
|
-
"fix:org:hardis:listviewmine",
|
|
5907
|
-
"fix:org:listviewmine:hardis",
|
|
5908
|
-
"hardis:fix:listviewmine:org",
|
|
5909
|
-
"fix:hardis:listviewmine:org",
|
|
5910
|
-
"fix:listviewmine:hardis:org",
|
|
5911
|
-
"fix:listviewmine:org:hardis",
|
|
5912
|
-
"hardis:org:listviewmine:fix",
|
|
5913
|
-
"org:hardis:listviewmine:fix",
|
|
5914
|
-
"org:listviewmine:hardis:fix",
|
|
5915
|
-
"org:listviewmine:fix:hardis",
|
|
5916
|
-
"hardis:listviewmine:org:fix",
|
|
5917
|
-
"listviewmine:hardis:org:fix",
|
|
5918
|
-
"listviewmine:org:hardis:fix",
|
|
5919
|
-
"listviewmine:org:fix:hardis",
|
|
5920
|
-
"hardis:listviewmine:fix:org",
|
|
5921
|
-
"listviewmine:hardis:fix:org",
|
|
5922
|
-
"listviewmine:fix:hardis:org",
|
|
5923
|
-
"listviewmine:fix:org:hardis"
|
|
5924
|
-
]
|
|
5925
|
-
},
|
|
5926
5811
|
"hardis:org:diagnose:audittrail": {
|
|
5927
5812
|
"aliases": [],
|
|
5928
5813
|
"args": {},
|
|
@@ -7321,6 +7206,121 @@
|
|
|
7321
7206
|
"unusedusers:diagnose:org:hardis"
|
|
7322
7207
|
]
|
|
7323
7208
|
},
|
|
7209
|
+
"hardis:org:fix:listviewmine": {
|
|
7210
|
+
"aliases": [],
|
|
7211
|
+
"args": {},
|
|
7212
|
+
"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",
|
|
7213
|
+
"examples": [
|
|
7214
|
+
"$ sf hardis:org:fix:listviewmine",
|
|
7215
|
+
"$ sf hardis:org:fix:listviewmine --listviews Opportunity:MySubscriptions,Account:MyActivePartners"
|
|
7216
|
+
],
|
|
7217
|
+
"flags": {
|
|
7218
|
+
"json": {
|
|
7219
|
+
"description": "Format output as json.",
|
|
7220
|
+
"helpGroup": "GLOBAL",
|
|
7221
|
+
"name": "json",
|
|
7222
|
+
"allowNo": false,
|
|
7223
|
+
"type": "boolean"
|
|
7224
|
+
},
|
|
7225
|
+
"flags-dir": {
|
|
7226
|
+
"helpGroup": "GLOBAL",
|
|
7227
|
+
"name": "flags-dir",
|
|
7228
|
+
"summary": "Import flag values from a directory.",
|
|
7229
|
+
"hasDynamicHelp": false,
|
|
7230
|
+
"multiple": false,
|
|
7231
|
+
"type": "option"
|
|
7232
|
+
},
|
|
7233
|
+
"listviews": {
|
|
7234
|
+
"char": "l",
|
|
7235
|
+
"description": "Comma-separated list of listviews following format Object:ListViewName\nExample: Contact:MyContacts,Contact:MyActiveContacts,Opportunity:MYClosedOpportunities",
|
|
7236
|
+
"name": "listviews",
|
|
7237
|
+
"hasDynamicHelp": false,
|
|
7238
|
+
"multiple": false,
|
|
7239
|
+
"type": "option"
|
|
7240
|
+
},
|
|
7241
|
+
"debug": {
|
|
7242
|
+
"char": "d",
|
|
7243
|
+
"description": "Activate debug mode (more logs)",
|
|
7244
|
+
"name": "debug",
|
|
7245
|
+
"allowNo": false,
|
|
7246
|
+
"type": "boolean"
|
|
7247
|
+
},
|
|
7248
|
+
"websocket": {
|
|
7249
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
7250
|
+
"name": "websocket",
|
|
7251
|
+
"hasDynamicHelp": false,
|
|
7252
|
+
"multiple": false,
|
|
7253
|
+
"type": "option"
|
|
7254
|
+
},
|
|
7255
|
+
"skipauth": {
|
|
7256
|
+
"description": "Skip authentication check when a default username is required",
|
|
7257
|
+
"name": "skipauth",
|
|
7258
|
+
"allowNo": false,
|
|
7259
|
+
"type": "boolean"
|
|
7260
|
+
},
|
|
7261
|
+
"target-org": {
|
|
7262
|
+
"aliases": [
|
|
7263
|
+
"targetusername",
|
|
7264
|
+
"u"
|
|
7265
|
+
],
|
|
7266
|
+
"char": "o",
|
|
7267
|
+
"deprecateAliases": true,
|
|
7268
|
+
"name": "target-org",
|
|
7269
|
+
"noCacheDefault": true,
|
|
7270
|
+
"required": true,
|
|
7271
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
7272
|
+
"hasDynamicHelp": true,
|
|
7273
|
+
"multiple": false,
|
|
7274
|
+
"type": "option"
|
|
7275
|
+
}
|
|
7276
|
+
},
|
|
7277
|
+
"hasDynamicHelp": true,
|
|
7278
|
+
"hiddenAliases": [],
|
|
7279
|
+
"id": "hardis:org:fix:listviewmine",
|
|
7280
|
+
"pluginAlias": "sfdx-hardis",
|
|
7281
|
+
"pluginName": "sfdx-hardis",
|
|
7282
|
+
"pluginType": "core",
|
|
7283
|
+
"strict": true,
|
|
7284
|
+
"enableJsonFlag": true,
|
|
7285
|
+
"title": "Fix listviews with ",
|
|
7286
|
+
"requiresProject": true,
|
|
7287
|
+
"isESM": true,
|
|
7288
|
+
"relativePath": [
|
|
7289
|
+
"lib",
|
|
7290
|
+
"commands",
|
|
7291
|
+
"hardis",
|
|
7292
|
+
"org",
|
|
7293
|
+
"fix",
|
|
7294
|
+
"listviewmine.js"
|
|
7295
|
+
],
|
|
7296
|
+
"aliasPermutations": [],
|
|
7297
|
+
"permutations": [
|
|
7298
|
+
"hardis:org:fix:listviewmine",
|
|
7299
|
+
"org:hardis:fix:listviewmine",
|
|
7300
|
+
"org:fix:hardis:listviewmine",
|
|
7301
|
+
"org:fix:listviewmine:hardis",
|
|
7302
|
+
"hardis:fix:org:listviewmine",
|
|
7303
|
+
"fix:hardis:org:listviewmine",
|
|
7304
|
+
"fix:org:hardis:listviewmine",
|
|
7305
|
+
"fix:org:listviewmine:hardis",
|
|
7306
|
+
"hardis:fix:listviewmine:org",
|
|
7307
|
+
"fix:hardis:listviewmine:org",
|
|
7308
|
+
"fix:listviewmine:hardis:org",
|
|
7309
|
+
"fix:listviewmine:org:hardis",
|
|
7310
|
+
"hardis:org:listviewmine:fix",
|
|
7311
|
+
"org:hardis:listviewmine:fix",
|
|
7312
|
+
"org:listviewmine:hardis:fix",
|
|
7313
|
+
"org:listviewmine:fix:hardis",
|
|
7314
|
+
"hardis:listviewmine:org:fix",
|
|
7315
|
+
"listviewmine:hardis:org:fix",
|
|
7316
|
+
"listviewmine:org:hardis:fix",
|
|
7317
|
+
"listviewmine:org:fix:hardis",
|
|
7318
|
+
"hardis:listviewmine:fix:org",
|
|
7319
|
+
"listviewmine:hardis:fix:org",
|
|
7320
|
+
"listviewmine:fix:hardis:org",
|
|
7321
|
+
"listviewmine:fix:org:hardis"
|
|
7322
|
+
]
|
|
7323
|
+
},
|
|
7324
7324
|
"hardis:org:generate:packagexmlfull": {
|
|
7325
7325
|
"aliases": [],
|
|
7326
7326
|
"args": {},
|
|
@@ -8306,13 +8306,16 @@
|
|
|
8306
8306
|
"profile:purge:org:hardis"
|
|
8307
8307
|
]
|
|
8308
8308
|
},
|
|
8309
|
-
"hardis:org:
|
|
8309
|
+
"hardis:org:refresh:after-refresh": {
|
|
8310
8310
|
"aliases": [],
|
|
8311
8311
|
"args": {},
|
|
8312
|
-
"description": "\n**
|
|
8312
|
+
"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",
|
|
8313
8313
|
"examples": [
|
|
8314
|
-
"$ sf hardis:org:
|
|
8315
|
-
"sf hardis:org:
|
|
8314
|
+
"$ sf hardis:org:refresh:after-refresh",
|
|
8315
|
+
"$ sf hardis:org:refresh:after-refresh --name \"MyConnectedApp\" // Process specific app, no selection prompt",
|
|
8316
|
+
"$ sf hardis:org:refresh:after-refresh --name \"App1,App2,App3\" // Process multiple apps, no selection prompt",
|
|
8317
|
+
"$ sf hardis:org:refresh:after-refresh --all // Process all apps, no selection prompt",
|
|
8318
|
+
"$ sf hardis:org:refresh:after-refresh --target-org myDevOrg"
|
|
8316
8319
|
],
|
|
8317
8320
|
"flags": {
|
|
8318
8321
|
"json": {
|
|
@@ -8330,125 +8333,15 @@
|
|
|
8330
8333
|
"multiple": false,
|
|
8331
8334
|
"type": "option"
|
|
8332
8335
|
},
|
|
8333
|
-
"
|
|
8334
|
-
"char": "
|
|
8335
|
-
"
|
|
8336
|
-
"
|
|
8337
|
-
"
|
|
8338
|
-
"
|
|
8339
|
-
|
|
8340
|
-
|
|
8341
|
-
"
|
|
8342
|
-
"name": "websocket",
|
|
8343
|
-
"hasDynamicHelp": false,
|
|
8344
|
-
"multiple": false,
|
|
8345
|
-
"type": "option"
|
|
8346
|
-
},
|
|
8347
|
-
"skipauth": {
|
|
8348
|
-
"description": "Skip authentication check when a default username is required",
|
|
8349
|
-
"name": "skipauth",
|
|
8350
|
-
"allowNo": false,
|
|
8351
|
-
"type": "boolean"
|
|
8352
|
-
},
|
|
8353
|
-
"target-org": {
|
|
8354
|
-
"aliases": [
|
|
8355
|
-
"targetusername",
|
|
8356
|
-
"u"
|
|
8357
|
-
],
|
|
8358
|
-
"char": "o",
|
|
8359
|
-
"deprecateAliases": true,
|
|
8360
|
-
"name": "target-org",
|
|
8361
|
-
"noCacheDefault": true,
|
|
8362
|
-
"required": true,
|
|
8363
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
8364
|
-
"hasDynamicHelp": true,
|
|
8365
|
-
"multiple": false,
|
|
8366
|
-
"type": "option"
|
|
8367
|
-
}
|
|
8368
|
-
},
|
|
8369
|
-
"hasDynamicHelp": true,
|
|
8370
|
-
"hiddenAliases": [],
|
|
8371
|
-
"id": "hardis:org:retrieve:packageconfig",
|
|
8372
|
-
"pluginAlias": "sfdx-hardis",
|
|
8373
|
-
"pluginName": "sfdx-hardis",
|
|
8374
|
-
"pluginType": "core",
|
|
8375
|
-
"strict": true,
|
|
8376
|
-
"enableJsonFlag": true,
|
|
8377
|
-
"title": "Retrieve package configuration from an org",
|
|
8378
|
-
"requiresProject": false,
|
|
8379
|
-
"isESM": true,
|
|
8380
|
-
"relativePath": [
|
|
8381
|
-
"lib",
|
|
8382
|
-
"commands",
|
|
8383
|
-
"hardis",
|
|
8384
|
-
"org",
|
|
8385
|
-
"retrieve",
|
|
8386
|
-
"packageconfig.js"
|
|
8387
|
-
],
|
|
8388
|
-
"aliasPermutations": [],
|
|
8389
|
-
"permutations": [
|
|
8390
|
-
"hardis:org:retrieve:packageconfig",
|
|
8391
|
-
"org:hardis:retrieve:packageconfig",
|
|
8392
|
-
"org:retrieve:hardis:packageconfig",
|
|
8393
|
-
"org:retrieve:packageconfig:hardis",
|
|
8394
|
-
"hardis:retrieve:org:packageconfig",
|
|
8395
|
-
"retrieve:hardis:org:packageconfig",
|
|
8396
|
-
"retrieve:org:hardis:packageconfig",
|
|
8397
|
-
"retrieve:org:packageconfig:hardis",
|
|
8398
|
-
"hardis:retrieve:packageconfig:org",
|
|
8399
|
-
"retrieve:hardis:packageconfig:org",
|
|
8400
|
-
"retrieve:packageconfig:hardis:org",
|
|
8401
|
-
"retrieve:packageconfig:org:hardis",
|
|
8402
|
-
"hardis:org:packageconfig:retrieve",
|
|
8403
|
-
"org:hardis:packageconfig:retrieve",
|
|
8404
|
-
"org:packageconfig:hardis:retrieve",
|
|
8405
|
-
"org:packageconfig:retrieve:hardis",
|
|
8406
|
-
"hardis:packageconfig:org:retrieve",
|
|
8407
|
-
"packageconfig:hardis:org:retrieve",
|
|
8408
|
-
"packageconfig:org:hardis:retrieve",
|
|
8409
|
-
"packageconfig:org:retrieve:hardis",
|
|
8410
|
-
"hardis:packageconfig:retrieve:org",
|
|
8411
|
-
"packageconfig:hardis:retrieve:org",
|
|
8412
|
-
"packageconfig:retrieve:hardis:org",
|
|
8413
|
-
"packageconfig:retrieve:org:hardis"
|
|
8414
|
-
]
|
|
8415
|
-
},
|
|
8416
|
-
"hardis:org:refresh:after-refresh": {
|
|
8417
|
-
"aliases": [],
|
|
8418
|
-
"args": {},
|
|
8419
|
-
"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",
|
|
8420
|
-
"examples": [
|
|
8421
|
-
"$ sf hardis:org:refresh:after-refresh",
|
|
8422
|
-
"$ sf hardis:org:refresh:after-refresh --name \"MyConnectedApp\" // Process specific app, no selection prompt",
|
|
8423
|
-
"$ sf hardis:org:refresh:after-refresh --name \"App1,App2,App3\" // Process multiple apps, no selection prompt",
|
|
8424
|
-
"$ sf hardis:org:refresh:after-refresh --all // Process all apps, no selection prompt",
|
|
8425
|
-
"$ sf hardis:org:refresh:after-refresh --target-org myDevOrg"
|
|
8426
|
-
],
|
|
8427
|
-
"flags": {
|
|
8428
|
-
"json": {
|
|
8429
|
-
"description": "Format output as json.",
|
|
8430
|
-
"helpGroup": "GLOBAL",
|
|
8431
|
-
"name": "json",
|
|
8432
|
-
"allowNo": false,
|
|
8433
|
-
"type": "boolean"
|
|
8434
|
-
},
|
|
8435
|
-
"flags-dir": {
|
|
8436
|
-
"helpGroup": "GLOBAL",
|
|
8437
|
-
"name": "flags-dir",
|
|
8438
|
-
"summary": "Import flag values from a directory.",
|
|
8439
|
-
"hasDynamicHelp": false,
|
|
8440
|
-
"multiple": false,
|
|
8441
|
-
"type": "option"
|
|
8442
|
-
},
|
|
8443
|
-
"target-org": {
|
|
8444
|
-
"char": "o",
|
|
8445
|
-
"name": "target-org",
|
|
8446
|
-
"noCacheDefault": true,
|
|
8447
|
-
"required": true,
|
|
8448
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
8449
|
-
"hasDynamicHelp": true,
|
|
8450
|
-
"multiple": false,
|
|
8451
|
-
"type": "option"
|
|
8336
|
+
"target-org": {
|
|
8337
|
+
"char": "o",
|
|
8338
|
+
"name": "target-org",
|
|
8339
|
+
"noCacheDefault": true,
|
|
8340
|
+
"required": true,
|
|
8341
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
8342
|
+
"hasDynamicHelp": true,
|
|
8343
|
+
"multiple": false,
|
|
8344
|
+
"type": "option"
|
|
8452
8345
|
},
|
|
8453
8346
|
"name": {
|
|
8454
8347
|
"char": "n",
|
|
@@ -8652,6 +8545,113 @@
|
|
|
8652
8545
|
"before-refresh:refresh:org:hardis"
|
|
8653
8546
|
]
|
|
8654
8547
|
},
|
|
8548
|
+
"hardis:org:retrieve:packageconfig": {
|
|
8549
|
+
"aliases": [],
|
|
8550
|
+
"args": {},
|
|
8551
|
+
"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",
|
|
8552
|
+
"examples": [
|
|
8553
|
+
"$ sf hardis:org:retrieve:packageconfig",
|
|
8554
|
+
"sf hardis:org:retrieve:packageconfig -u myOrg"
|
|
8555
|
+
],
|
|
8556
|
+
"flags": {
|
|
8557
|
+
"json": {
|
|
8558
|
+
"description": "Format output as json.",
|
|
8559
|
+
"helpGroup": "GLOBAL",
|
|
8560
|
+
"name": "json",
|
|
8561
|
+
"allowNo": false,
|
|
8562
|
+
"type": "boolean"
|
|
8563
|
+
},
|
|
8564
|
+
"flags-dir": {
|
|
8565
|
+
"helpGroup": "GLOBAL",
|
|
8566
|
+
"name": "flags-dir",
|
|
8567
|
+
"summary": "Import flag values from a directory.",
|
|
8568
|
+
"hasDynamicHelp": false,
|
|
8569
|
+
"multiple": false,
|
|
8570
|
+
"type": "option"
|
|
8571
|
+
},
|
|
8572
|
+
"debug": {
|
|
8573
|
+
"char": "d",
|
|
8574
|
+
"description": "Activate debug mode (more logs)",
|
|
8575
|
+
"name": "debug",
|
|
8576
|
+
"allowNo": false,
|
|
8577
|
+
"type": "boolean"
|
|
8578
|
+
},
|
|
8579
|
+
"websocket": {
|
|
8580
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
8581
|
+
"name": "websocket",
|
|
8582
|
+
"hasDynamicHelp": false,
|
|
8583
|
+
"multiple": false,
|
|
8584
|
+
"type": "option"
|
|
8585
|
+
},
|
|
8586
|
+
"skipauth": {
|
|
8587
|
+
"description": "Skip authentication check when a default username is required",
|
|
8588
|
+
"name": "skipauth",
|
|
8589
|
+
"allowNo": false,
|
|
8590
|
+
"type": "boolean"
|
|
8591
|
+
},
|
|
8592
|
+
"target-org": {
|
|
8593
|
+
"aliases": [
|
|
8594
|
+
"targetusername",
|
|
8595
|
+
"u"
|
|
8596
|
+
],
|
|
8597
|
+
"char": "o",
|
|
8598
|
+
"deprecateAliases": true,
|
|
8599
|
+
"name": "target-org",
|
|
8600
|
+
"noCacheDefault": true,
|
|
8601
|
+
"required": true,
|
|
8602
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
8603
|
+
"hasDynamicHelp": true,
|
|
8604
|
+
"multiple": false,
|
|
8605
|
+
"type": "option"
|
|
8606
|
+
}
|
|
8607
|
+
},
|
|
8608
|
+
"hasDynamicHelp": true,
|
|
8609
|
+
"hiddenAliases": [],
|
|
8610
|
+
"id": "hardis:org:retrieve:packageconfig",
|
|
8611
|
+
"pluginAlias": "sfdx-hardis",
|
|
8612
|
+
"pluginName": "sfdx-hardis",
|
|
8613
|
+
"pluginType": "core",
|
|
8614
|
+
"strict": true,
|
|
8615
|
+
"enableJsonFlag": true,
|
|
8616
|
+
"title": "Retrieve package configuration from an org",
|
|
8617
|
+
"requiresProject": false,
|
|
8618
|
+
"isESM": true,
|
|
8619
|
+
"relativePath": [
|
|
8620
|
+
"lib",
|
|
8621
|
+
"commands",
|
|
8622
|
+
"hardis",
|
|
8623
|
+
"org",
|
|
8624
|
+
"retrieve",
|
|
8625
|
+
"packageconfig.js"
|
|
8626
|
+
],
|
|
8627
|
+
"aliasPermutations": [],
|
|
8628
|
+
"permutations": [
|
|
8629
|
+
"hardis:org:retrieve:packageconfig",
|
|
8630
|
+
"org:hardis:retrieve:packageconfig",
|
|
8631
|
+
"org:retrieve:hardis:packageconfig",
|
|
8632
|
+
"org:retrieve:packageconfig:hardis",
|
|
8633
|
+
"hardis:retrieve:org:packageconfig",
|
|
8634
|
+
"retrieve:hardis:org:packageconfig",
|
|
8635
|
+
"retrieve:org:hardis:packageconfig",
|
|
8636
|
+
"retrieve:org:packageconfig:hardis",
|
|
8637
|
+
"hardis:retrieve:packageconfig:org",
|
|
8638
|
+
"retrieve:hardis:packageconfig:org",
|
|
8639
|
+
"retrieve:packageconfig:hardis:org",
|
|
8640
|
+
"retrieve:packageconfig:org:hardis",
|
|
8641
|
+
"hardis:org:packageconfig:retrieve",
|
|
8642
|
+
"org:hardis:packageconfig:retrieve",
|
|
8643
|
+
"org:packageconfig:hardis:retrieve",
|
|
8644
|
+
"org:packageconfig:retrieve:hardis",
|
|
8645
|
+
"hardis:packageconfig:org:retrieve",
|
|
8646
|
+
"packageconfig:hardis:org:retrieve",
|
|
8647
|
+
"packageconfig:org:hardis:retrieve",
|
|
8648
|
+
"packageconfig:org:retrieve:hardis",
|
|
8649
|
+
"hardis:packageconfig:retrieve:org",
|
|
8650
|
+
"packageconfig:hardis:retrieve:org",
|
|
8651
|
+
"packageconfig:retrieve:hardis:org",
|
|
8652
|
+
"packageconfig:retrieve:org:hardis"
|
|
8653
|
+
]
|
|
8654
|
+
},
|
|
8655
8655
|
"hardis:org:test:apex": {
|
|
8656
8656
|
"aliases": [],
|
|
8657
8657
|
"args": {},
|
|
@@ -10068,12 +10068,12 @@
|
|
|
10068
10068
|
"auth:configure:project:hardis"
|
|
10069
10069
|
]
|
|
10070
10070
|
},
|
|
10071
|
-
"hardis:project:
|
|
10071
|
+
"hardis:project:convert:profilestopermsets": {
|
|
10072
10072
|
"aliases": [],
|
|
10073
10073
|
"args": {},
|
|
10074
|
-
"description": "\n## Command Behavior\n\n**
|
|
10074
|
+
"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",
|
|
10075
10075
|
"examples": [
|
|
10076
|
-
"$ sf hardis:project:
|
|
10076
|
+
"$ sf hardis:project:convert:profilestopermsets"
|
|
10077
10077
|
],
|
|
10078
10078
|
"flags": {
|
|
10079
10079
|
"json": {
|
|
@@ -10091,13 +10091,13 @@
|
|
|
10091
10091
|
"multiple": false,
|
|
10092
10092
|
"type": "option"
|
|
10093
10093
|
},
|
|
10094
|
-
"
|
|
10095
|
-
"char": "
|
|
10096
|
-
"description": "
|
|
10097
|
-
"name": "
|
|
10098
|
-
"default":
|
|
10094
|
+
"except": {
|
|
10095
|
+
"char": "e",
|
|
10096
|
+
"description": "List of filters",
|
|
10097
|
+
"name": "except",
|
|
10098
|
+
"default": [],
|
|
10099
10099
|
"hasDynamicHelp": false,
|
|
10100
|
-
"multiple":
|
|
10100
|
+
"multiple": true,
|
|
10101
10101
|
"type": "option"
|
|
10102
10102
|
},
|
|
10103
10103
|
"debug": {
|
|
@@ -10123,32 +10123,135 @@
|
|
|
10123
10123
|
},
|
|
10124
10124
|
"hasDynamicHelp": false,
|
|
10125
10125
|
"hiddenAliases": [],
|
|
10126
|
-
"id": "hardis:project:
|
|
10126
|
+
"id": "hardis:project:convert:profilestopermsets",
|
|
10127
10127
|
"pluginAlias": "sfdx-hardis",
|
|
10128
10128
|
"pluginName": "sfdx-hardis",
|
|
10129
10129
|
"pluginType": "core",
|
|
10130
10130
|
"strict": true,
|
|
10131
10131
|
"enableJsonFlag": true,
|
|
10132
|
-
"title": "
|
|
10132
|
+
"title": "Convert Profiles into Permission Sets",
|
|
10133
10133
|
"requiresProject": true,
|
|
10134
|
+
"requiresSfdxPlugins": [
|
|
10135
|
+
"shane-sfdx-plugins"
|
|
10136
|
+
],
|
|
10134
10137
|
"isESM": true,
|
|
10135
10138
|
"relativePath": [
|
|
10136
10139
|
"lib",
|
|
10137
10140
|
"commands",
|
|
10138
10141
|
"hardis",
|
|
10139
10142
|
"project",
|
|
10140
|
-
"
|
|
10141
|
-
"
|
|
10143
|
+
"convert",
|
|
10144
|
+
"profilestopermsets.js"
|
|
10142
10145
|
],
|
|
10143
10146
|
"aliasPermutations": [],
|
|
10144
10147
|
"permutations": [
|
|
10145
|
-
"hardis:project:
|
|
10146
|
-
"project:hardis:
|
|
10147
|
-
"project:
|
|
10148
|
-
"project:
|
|
10149
|
-
"hardis:
|
|
10150
|
-
"
|
|
10151
|
-
"
|
|
10148
|
+
"hardis:project:convert:profilestopermsets",
|
|
10149
|
+
"project:hardis:convert:profilestopermsets",
|
|
10150
|
+
"project:convert:hardis:profilestopermsets",
|
|
10151
|
+
"project:convert:profilestopermsets:hardis",
|
|
10152
|
+
"hardis:convert:project:profilestopermsets",
|
|
10153
|
+
"convert:hardis:project:profilestopermsets",
|
|
10154
|
+
"convert:project:hardis:profilestopermsets",
|
|
10155
|
+
"convert:project:profilestopermsets:hardis",
|
|
10156
|
+
"hardis:convert:profilestopermsets:project",
|
|
10157
|
+
"convert:hardis:profilestopermsets:project",
|
|
10158
|
+
"convert:profilestopermsets:hardis:project",
|
|
10159
|
+
"convert:profilestopermsets:project:hardis",
|
|
10160
|
+
"hardis:project:profilestopermsets:convert",
|
|
10161
|
+
"project:hardis:profilestopermsets:convert",
|
|
10162
|
+
"project:profilestopermsets:hardis:convert",
|
|
10163
|
+
"project:profilestopermsets:convert:hardis",
|
|
10164
|
+
"hardis:profilestopermsets:project:convert",
|
|
10165
|
+
"profilestopermsets:hardis:project:convert",
|
|
10166
|
+
"profilestopermsets:project:hardis:convert",
|
|
10167
|
+
"profilestopermsets:project:convert:hardis",
|
|
10168
|
+
"hardis:profilestopermsets:convert:project",
|
|
10169
|
+
"profilestopermsets:hardis:convert:project",
|
|
10170
|
+
"profilestopermsets:convert:hardis:project",
|
|
10171
|
+
"profilestopermsets:convert:project:hardis"
|
|
10172
|
+
]
|
|
10173
|
+
},
|
|
10174
|
+
"hardis:project:clean:emptyitems": {
|
|
10175
|
+
"aliases": [],
|
|
10176
|
+
"args": {},
|
|
10177
|
+
"description": "\n## Command Behavior\n\n**Removes empty or irrelevant metadata items from your Salesforce DX project sources.**\n\nThis command helps maintain a clean and efficient Salesforce codebase by deleting metadata files that are essentially empty or contain no meaningful configuration. These files can sometimes be generated during retrieval processes or remain after refactoring, contributing to unnecessary clutter in your project.\n\nKey functionalities:\n\n- **Targeted Cleaning:** Specifically targets and removes empty instances of:\n - Global Value Set Translations (`.globalValueSetTranslation-meta.xml`)\n - Standard Value Sets (`.standardValueSet-meta.xml`)\n - Sharing Rules (`.sharingRules-meta.xml`)\n- **Content-Based Deletion:** It checks the XML content of these files for the presence of specific tags (e.g., `valueTranslation` for Global Value Set Translations) to determine if they are truly empty or lack relevant data.\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 files matching predefined patterns for Global Value Set Translations, Standard Value Sets, and Sharing Rules within the specified root folder (defaults to `force-app`).\n- **XML Parsing:** For each matching file, it reads and parses the XML content using `parseXmlFile`.\n- **Content Validation:** It then checks the parsed XML object for the existence of specific nested properties (e.g., `xmlContent.GlobalValueSetTranslation.valueTranslation`). If these properties are missing or empty, the file is considered empty.\n- **File Deletion:** If a file is determined to be empty, it is removed from the file system using `fs.remove`.\n- **Logging:** Provides clear messages about which files are being removed and a summary of the total number of items cleaned.\n</details>\n",
|
|
10178
|
+
"examples": [
|
|
10179
|
+
"$ sf hardis:project:clean:emptyitems"
|
|
10180
|
+
],
|
|
10181
|
+
"flags": {
|
|
10182
|
+
"json": {
|
|
10183
|
+
"description": "Format output as json.",
|
|
10184
|
+
"helpGroup": "GLOBAL",
|
|
10185
|
+
"name": "json",
|
|
10186
|
+
"allowNo": false,
|
|
10187
|
+
"type": "boolean"
|
|
10188
|
+
},
|
|
10189
|
+
"flags-dir": {
|
|
10190
|
+
"helpGroup": "GLOBAL",
|
|
10191
|
+
"name": "flags-dir",
|
|
10192
|
+
"summary": "Import flag values from a directory.",
|
|
10193
|
+
"hasDynamicHelp": false,
|
|
10194
|
+
"multiple": false,
|
|
10195
|
+
"type": "option"
|
|
10196
|
+
},
|
|
10197
|
+
"folder": {
|
|
10198
|
+
"char": "f",
|
|
10199
|
+
"description": "Root folder",
|
|
10200
|
+
"name": "folder",
|
|
10201
|
+
"default": "force-app",
|
|
10202
|
+
"hasDynamicHelp": false,
|
|
10203
|
+
"multiple": false,
|
|
10204
|
+
"type": "option"
|
|
10205
|
+
},
|
|
10206
|
+
"debug": {
|
|
10207
|
+
"char": "d",
|
|
10208
|
+
"description": "Activate debug mode (more logs)",
|
|
10209
|
+
"name": "debug",
|
|
10210
|
+
"allowNo": false,
|
|
10211
|
+
"type": "boolean"
|
|
10212
|
+
},
|
|
10213
|
+
"websocket": {
|
|
10214
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
10215
|
+
"name": "websocket",
|
|
10216
|
+
"hasDynamicHelp": false,
|
|
10217
|
+
"multiple": false,
|
|
10218
|
+
"type": "option"
|
|
10219
|
+
},
|
|
10220
|
+
"skipauth": {
|
|
10221
|
+
"description": "Skip authentication check when a default username is required",
|
|
10222
|
+
"name": "skipauth",
|
|
10223
|
+
"allowNo": false,
|
|
10224
|
+
"type": "boolean"
|
|
10225
|
+
}
|
|
10226
|
+
},
|
|
10227
|
+
"hasDynamicHelp": false,
|
|
10228
|
+
"hiddenAliases": [],
|
|
10229
|
+
"id": "hardis:project:clean:emptyitems",
|
|
10230
|
+
"pluginAlias": "sfdx-hardis",
|
|
10231
|
+
"pluginName": "sfdx-hardis",
|
|
10232
|
+
"pluginType": "core",
|
|
10233
|
+
"strict": true,
|
|
10234
|
+
"enableJsonFlag": true,
|
|
10235
|
+
"title": "Clean retrieved empty items in dx sources",
|
|
10236
|
+
"requiresProject": true,
|
|
10237
|
+
"isESM": true,
|
|
10238
|
+
"relativePath": [
|
|
10239
|
+
"lib",
|
|
10240
|
+
"commands",
|
|
10241
|
+
"hardis",
|
|
10242
|
+
"project",
|
|
10243
|
+
"clean",
|
|
10244
|
+
"emptyitems.js"
|
|
10245
|
+
],
|
|
10246
|
+
"aliasPermutations": [],
|
|
10247
|
+
"permutations": [
|
|
10248
|
+
"hardis:project:clean:emptyitems",
|
|
10249
|
+
"project:hardis:clean:emptyitems",
|
|
10250
|
+
"project:clean:hardis:emptyitems",
|
|
10251
|
+
"project:clean:emptyitems:hardis",
|
|
10252
|
+
"hardis:clean:project:emptyitems",
|
|
10253
|
+
"clean:hardis:project:emptyitems",
|
|
10254
|
+
"clean:project:hardis:emptyitems",
|
|
10152
10255
|
"clean:project:emptyitems:hardis",
|
|
10153
10256
|
"hardis:clean:emptyitems:project",
|
|
10154
10257
|
"clean:hardis:emptyitems:project",
|
|
@@ -11654,12 +11757,12 @@
|
|
|
11654
11757
|
"xml:clean:project:hardis"
|
|
11655
11758
|
]
|
|
11656
11759
|
},
|
|
11657
|
-
"hardis:project:
|
|
11760
|
+
"hardis:project:fix:profiletabs": {
|
|
11658
11761
|
"aliases": [],
|
|
11659
11762
|
"args": {},
|
|
11660
|
-
"description": "\n## Command Behavior\n\n**
|
|
11763
|
+
"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",
|
|
11661
11764
|
"examples": [
|
|
11662
|
-
"$ sf hardis:project:
|
|
11765
|
+
"$ sf hardis:project:fix:profiletabs"
|
|
11663
11766
|
],
|
|
11664
11767
|
"flags": {
|
|
11665
11768
|
"json": {
|
|
@@ -11677,13 +11780,13 @@
|
|
|
11677
11780
|
"multiple": false,
|
|
11678
11781
|
"type": "option"
|
|
11679
11782
|
},
|
|
11680
|
-
"
|
|
11681
|
-
"char": "
|
|
11682
|
-
"description": "
|
|
11683
|
-
"name": "
|
|
11684
|
-
"default":
|
|
11783
|
+
"path": {
|
|
11784
|
+
"char": "p",
|
|
11785
|
+
"description": "Root folder",
|
|
11786
|
+
"name": "path",
|
|
11787
|
+
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
11685
11788
|
"hasDynamicHelp": false,
|
|
11686
|
-
"multiple":
|
|
11789
|
+
"multiple": false,
|
|
11687
11790
|
"type": "option"
|
|
11688
11791
|
},
|
|
11689
11792
|
"debug": {
|
|
@@ -11705,66 +11808,76 @@
|
|
|
11705
11808
|
"name": "skipauth",
|
|
11706
11809
|
"allowNo": false,
|
|
11707
11810
|
"type": "boolean"
|
|
11811
|
+
},
|
|
11812
|
+
"target-org": {
|
|
11813
|
+
"aliases": [
|
|
11814
|
+
"targetusername",
|
|
11815
|
+
"u"
|
|
11816
|
+
],
|
|
11817
|
+
"char": "o",
|
|
11818
|
+
"deprecateAliases": true,
|
|
11819
|
+
"name": "target-org",
|
|
11820
|
+
"noCacheDefault": true,
|
|
11821
|
+
"required": true,
|
|
11822
|
+
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
11823
|
+
"hasDynamicHelp": true,
|
|
11824
|
+
"multiple": false,
|
|
11825
|
+
"type": "option"
|
|
11708
11826
|
}
|
|
11709
11827
|
},
|
|
11710
|
-
"hasDynamicHelp":
|
|
11828
|
+
"hasDynamicHelp": true,
|
|
11711
11829
|
"hiddenAliases": [],
|
|
11712
|
-
"id": "hardis:project:
|
|
11830
|
+
"id": "hardis:project:fix:profiletabs",
|
|
11713
11831
|
"pluginAlias": "sfdx-hardis",
|
|
11714
11832
|
"pluginName": "sfdx-hardis",
|
|
11715
11833
|
"pluginType": "core",
|
|
11716
11834
|
"strict": true,
|
|
11717
11835
|
"enableJsonFlag": true,
|
|
11718
|
-
"title": "
|
|
11836
|
+
"title": "Fix profiles to add tabs that are not retrieved by SF CLI",
|
|
11719
11837
|
"requiresProject": true,
|
|
11720
|
-
"requiresSfdxPlugins": [
|
|
11721
|
-
"shane-sfdx-plugins"
|
|
11722
|
-
],
|
|
11723
11838
|
"isESM": true,
|
|
11724
11839
|
"relativePath": [
|
|
11725
11840
|
"lib",
|
|
11726
11841
|
"commands",
|
|
11727
11842
|
"hardis",
|
|
11728
11843
|
"project",
|
|
11729
|
-
"
|
|
11730
|
-
"
|
|
11844
|
+
"fix",
|
|
11845
|
+
"profiletabs.js"
|
|
11731
11846
|
],
|
|
11732
11847
|
"aliasPermutations": [],
|
|
11733
11848
|
"permutations": [
|
|
11734
|
-
"hardis:project:
|
|
11735
|
-
"project:hardis:
|
|
11736
|
-
"project:
|
|
11737
|
-
"project:
|
|
11738
|
-
"hardis:
|
|
11739
|
-
"
|
|
11740
|
-
"
|
|
11741
|
-
"
|
|
11742
|
-
"hardis:
|
|
11743
|
-
"
|
|
11744
|
-
"
|
|
11745
|
-
"
|
|
11746
|
-
"hardis:project:
|
|
11747
|
-
"project:hardis:
|
|
11748
|
-
"project:
|
|
11749
|
-
"project:
|
|
11750
|
-
"hardis:
|
|
11751
|
-
"
|
|
11752
|
-
"
|
|
11753
|
-
"
|
|
11754
|
-
"hardis:
|
|
11755
|
-
"
|
|
11756
|
-
"
|
|
11757
|
-
"
|
|
11849
|
+
"hardis:project:fix:profiletabs",
|
|
11850
|
+
"project:hardis:fix:profiletabs",
|
|
11851
|
+
"project:fix:hardis:profiletabs",
|
|
11852
|
+
"project:fix:profiletabs:hardis",
|
|
11853
|
+
"hardis:fix:project:profiletabs",
|
|
11854
|
+
"fix:hardis:project:profiletabs",
|
|
11855
|
+
"fix:project:hardis:profiletabs",
|
|
11856
|
+
"fix:project:profiletabs:hardis",
|
|
11857
|
+
"hardis:fix:profiletabs:project",
|
|
11858
|
+
"fix:hardis:profiletabs:project",
|
|
11859
|
+
"fix:profiletabs:hardis:project",
|
|
11860
|
+
"fix:profiletabs:project:hardis",
|
|
11861
|
+
"hardis:project:profiletabs:fix",
|
|
11862
|
+
"project:hardis:profiletabs:fix",
|
|
11863
|
+
"project:profiletabs:hardis:fix",
|
|
11864
|
+
"project:profiletabs:fix:hardis",
|
|
11865
|
+
"hardis:profiletabs:project:fix",
|
|
11866
|
+
"profiletabs:hardis:project:fix",
|
|
11867
|
+
"profiletabs:project:hardis:fix",
|
|
11868
|
+
"profiletabs:project:fix:hardis",
|
|
11869
|
+
"hardis:profiletabs:fix:project",
|
|
11870
|
+
"profiletabs:hardis:fix:project",
|
|
11871
|
+
"profiletabs:fix:hardis:project",
|
|
11872
|
+
"profiletabs:fix:project:hardis"
|
|
11758
11873
|
]
|
|
11759
11874
|
},
|
|
11760
|
-
"hardis:project:
|
|
11875
|
+
"hardis:project:fix:v53flexipages": {
|
|
11761
11876
|
"aliases": [],
|
|
11762
11877
|
"args": {},
|
|
11763
|
-
"description": "
|
|
11878
|
+
"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",
|
|
11764
11879
|
"examples": [
|
|
11765
|
-
"$ sf hardis:project:
|
|
11766
|
-
"$ sf hardis:project:deploy:notify --check-only --deploy-status invalid --message \"This deployment check has failed !\\n\\Oh no !!\"",
|
|
11767
|
-
"$ sf hardis:project:deploy:notify --deploy-status valid --message \"This deployment has been processed !\\n\\nYahooo !!\""
|
|
11880
|
+
"$ sf hardis:project:fix:v53flexipages"
|
|
11768
11881
|
],
|
|
11769
11882
|
"flags": {
|
|
11770
11883
|
"json": {
|
|
@@ -11782,32 +11895,11 @@
|
|
|
11782
11895
|
"multiple": false,
|
|
11783
11896
|
"type": "option"
|
|
11784
11897
|
},
|
|
11785
|
-
"
|
|
11786
|
-
"char": "
|
|
11787
|
-
"description": "
|
|
11788
|
-
"name": "
|
|
11789
|
-
"
|
|
11790
|
-
"type": "boolean"
|
|
11791
|
-
},
|
|
11792
|
-
"deploy-status": {
|
|
11793
|
-
"char": "s",
|
|
11794
|
-
"description": "Send success, failure or unknown (default) to indicate if the deployment or deployment simulation is in success or not",
|
|
11795
|
-
"name": "deploy-status",
|
|
11796
|
-
"default": "unknown",
|
|
11797
|
-
"hasDynamicHelp": false,
|
|
11798
|
-
"multiple": false,
|
|
11799
|
-
"options": [
|
|
11800
|
-
"valid",
|
|
11801
|
-
"invalid",
|
|
11802
|
-
"unknown"
|
|
11803
|
-
],
|
|
11804
|
-
"type": "option"
|
|
11805
|
-
},
|
|
11806
|
-
"message": {
|
|
11807
|
-
"char": "m",
|
|
11808
|
-
"description": "Custom message that you want to be added in notifications (string or markdown format)",
|
|
11809
|
-
"name": "message",
|
|
11810
|
-
"default": "",
|
|
11898
|
+
"path": {
|
|
11899
|
+
"char": "p",
|
|
11900
|
+
"description": "Root folder",
|
|
11901
|
+
"name": "path",
|
|
11902
|
+
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
11811
11903
|
"hasDynamicHelp": false,
|
|
11812
11904
|
"multiple": false,
|
|
11813
11905
|
"type": "option"
|
|
@@ -11831,23 +11923,146 @@
|
|
|
11831
11923
|
"name": "skipauth",
|
|
11832
11924
|
"allowNo": false,
|
|
11833
11925
|
"type": "boolean"
|
|
11834
|
-
},
|
|
11835
|
-
"target-org": {
|
|
11836
|
-
"aliases": [
|
|
11837
|
-
"targetusername",
|
|
11838
|
-
"u"
|
|
11839
|
-
],
|
|
11840
|
-
"char": "o",
|
|
11841
|
-
"deprecateAliases": true,
|
|
11842
|
-
"name": "target-org",
|
|
11843
|
-
"noCacheDefault": true,
|
|
11844
|
-
"summary": "Username or alias of the target org.",
|
|
11845
|
-
"hasDynamicHelp": true,
|
|
11846
|
-
"multiple": false,
|
|
11847
|
-
"type": "option"
|
|
11848
11926
|
}
|
|
11849
11927
|
},
|
|
11850
|
-
"hasDynamicHelp":
|
|
11928
|
+
"hasDynamicHelp": false,
|
|
11929
|
+
"hiddenAliases": [],
|
|
11930
|
+
"id": "hardis:project:fix:v53flexipages",
|
|
11931
|
+
"pluginAlias": "sfdx-hardis",
|
|
11932
|
+
"pluginName": "sfdx-hardis",
|
|
11933
|
+
"pluginType": "core",
|
|
11934
|
+
"strict": true,
|
|
11935
|
+
"enableJsonFlag": true,
|
|
11936
|
+
"title": "Fix flexipages for v53",
|
|
11937
|
+
"requiresProject": true,
|
|
11938
|
+
"isESM": true,
|
|
11939
|
+
"relativePath": [
|
|
11940
|
+
"lib",
|
|
11941
|
+
"commands",
|
|
11942
|
+
"hardis",
|
|
11943
|
+
"project",
|
|
11944
|
+
"fix",
|
|
11945
|
+
"v53flexipages.js"
|
|
11946
|
+
],
|
|
11947
|
+
"aliasPermutations": [],
|
|
11948
|
+
"permutations": [
|
|
11949
|
+
"hardis:project:fix:v53flexipages",
|
|
11950
|
+
"project:hardis:fix:v53flexipages",
|
|
11951
|
+
"project:fix:hardis:v53flexipages",
|
|
11952
|
+
"project:fix:v53flexipages:hardis",
|
|
11953
|
+
"hardis:fix:project:v53flexipages",
|
|
11954
|
+
"fix:hardis:project:v53flexipages",
|
|
11955
|
+
"fix:project:hardis:v53flexipages",
|
|
11956
|
+
"fix:project:v53flexipages:hardis",
|
|
11957
|
+
"hardis:fix:v53flexipages:project",
|
|
11958
|
+
"fix:hardis:v53flexipages:project",
|
|
11959
|
+
"fix:v53flexipages:hardis:project",
|
|
11960
|
+
"fix:v53flexipages:project:hardis",
|
|
11961
|
+
"hardis:project:v53flexipages:fix",
|
|
11962
|
+
"project:hardis:v53flexipages:fix",
|
|
11963
|
+
"project:v53flexipages:hardis:fix",
|
|
11964
|
+
"project:v53flexipages:fix:hardis",
|
|
11965
|
+
"hardis:v53flexipages:project:fix",
|
|
11966
|
+
"v53flexipages:hardis:project:fix",
|
|
11967
|
+
"v53flexipages:project:hardis:fix",
|
|
11968
|
+
"v53flexipages:project:fix:hardis",
|
|
11969
|
+
"hardis:v53flexipages:fix:project",
|
|
11970
|
+
"v53flexipages:hardis:fix:project",
|
|
11971
|
+
"v53flexipages:fix:hardis:project",
|
|
11972
|
+
"v53flexipages:fix:project:hardis"
|
|
11973
|
+
]
|
|
11974
|
+
},
|
|
11975
|
+
"hardis:project:deploy:notify": {
|
|
11976
|
+
"aliases": [],
|
|
11977
|
+
"args": {},
|
|
11978
|
+
"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",
|
|
11979
|
+
"examples": [
|
|
11980
|
+
"$ sf hardis:project:deploy:notify --check-only --deploy-status valid --message \"This deployment check is valid\\n\\nYahooo !!\"",
|
|
11981
|
+
"$ sf hardis:project:deploy:notify --check-only --deploy-status invalid --message \"This deployment check has failed !\\n\\Oh no !!\"",
|
|
11982
|
+
"$ sf hardis:project:deploy:notify --deploy-status valid --message \"This deployment has been processed !\\n\\nYahooo !!\""
|
|
11983
|
+
],
|
|
11984
|
+
"flags": {
|
|
11985
|
+
"json": {
|
|
11986
|
+
"description": "Format output as json.",
|
|
11987
|
+
"helpGroup": "GLOBAL",
|
|
11988
|
+
"name": "json",
|
|
11989
|
+
"allowNo": false,
|
|
11990
|
+
"type": "boolean"
|
|
11991
|
+
},
|
|
11992
|
+
"flags-dir": {
|
|
11993
|
+
"helpGroup": "GLOBAL",
|
|
11994
|
+
"name": "flags-dir",
|
|
11995
|
+
"summary": "Import flag values from a directory.",
|
|
11996
|
+
"hasDynamicHelp": false,
|
|
11997
|
+
"multiple": false,
|
|
11998
|
+
"type": "option"
|
|
11999
|
+
},
|
|
12000
|
+
"check-only": {
|
|
12001
|
+
"char": "c",
|
|
12002
|
+
"description": "Use this option to send notifications from a Deployment simulation job",
|
|
12003
|
+
"name": "check-only",
|
|
12004
|
+
"allowNo": false,
|
|
12005
|
+
"type": "boolean"
|
|
12006
|
+
},
|
|
12007
|
+
"deploy-status": {
|
|
12008
|
+
"char": "s",
|
|
12009
|
+
"description": "Send success, failure or unknown (default) to indicate if the deployment or deployment simulation is in success or not",
|
|
12010
|
+
"name": "deploy-status",
|
|
12011
|
+
"default": "unknown",
|
|
12012
|
+
"hasDynamicHelp": false,
|
|
12013
|
+
"multiple": false,
|
|
12014
|
+
"options": [
|
|
12015
|
+
"valid",
|
|
12016
|
+
"invalid",
|
|
12017
|
+
"unknown"
|
|
12018
|
+
],
|
|
12019
|
+
"type": "option"
|
|
12020
|
+
},
|
|
12021
|
+
"message": {
|
|
12022
|
+
"char": "m",
|
|
12023
|
+
"description": "Custom message that you want to be added in notifications (string or markdown format)",
|
|
12024
|
+
"name": "message",
|
|
12025
|
+
"default": "",
|
|
12026
|
+
"hasDynamicHelp": false,
|
|
12027
|
+
"multiple": false,
|
|
12028
|
+
"type": "option"
|
|
12029
|
+
},
|
|
12030
|
+
"debug": {
|
|
12031
|
+
"char": "d",
|
|
12032
|
+
"description": "Activate debug mode (more logs)",
|
|
12033
|
+
"name": "debug",
|
|
12034
|
+
"allowNo": false,
|
|
12035
|
+
"type": "boolean"
|
|
12036
|
+
},
|
|
12037
|
+
"websocket": {
|
|
12038
|
+
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
12039
|
+
"name": "websocket",
|
|
12040
|
+
"hasDynamicHelp": false,
|
|
12041
|
+
"multiple": false,
|
|
12042
|
+
"type": "option"
|
|
12043
|
+
},
|
|
12044
|
+
"skipauth": {
|
|
12045
|
+
"description": "Skip authentication check when a default username is required",
|
|
12046
|
+
"name": "skipauth",
|
|
12047
|
+
"allowNo": false,
|
|
12048
|
+
"type": "boolean"
|
|
12049
|
+
},
|
|
12050
|
+
"target-org": {
|
|
12051
|
+
"aliases": [
|
|
12052
|
+
"targetusername",
|
|
12053
|
+
"u"
|
|
12054
|
+
],
|
|
12055
|
+
"char": "o",
|
|
12056
|
+
"deprecateAliases": true,
|
|
12057
|
+
"name": "target-org",
|
|
12058
|
+
"noCacheDefault": true,
|
|
12059
|
+
"summary": "Username or alias of the target org.",
|
|
12060
|
+
"hasDynamicHelp": true,
|
|
12061
|
+
"multiple": false,
|
|
12062
|
+
"type": "option"
|
|
12063
|
+
}
|
|
12064
|
+
},
|
|
12065
|
+
"hasDynamicHelp": true,
|
|
11851
12066
|
"hiddenAliases": [],
|
|
11852
12067
|
"id": "hardis:project:deploy:notify",
|
|
11853
12068
|
"pluginAlias": "sfdx-hardis",
|
|
@@ -12931,221 +13146,6 @@
|
|
|
12931
13146
|
"validate:deploy:project:hardis"
|
|
12932
13147
|
]
|
|
12933
13148
|
},
|
|
12934
|
-
"hardis:project:fix:profiletabs": {
|
|
12935
|
-
"aliases": [],
|
|
12936
|
-
"args": {},
|
|
12937
|
-
"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",
|
|
12938
|
-
"examples": [
|
|
12939
|
-
"$ sf hardis:project:fix:profiletabs"
|
|
12940
|
-
],
|
|
12941
|
-
"flags": {
|
|
12942
|
-
"json": {
|
|
12943
|
-
"description": "Format output as json.",
|
|
12944
|
-
"helpGroup": "GLOBAL",
|
|
12945
|
-
"name": "json",
|
|
12946
|
-
"allowNo": false,
|
|
12947
|
-
"type": "boolean"
|
|
12948
|
-
},
|
|
12949
|
-
"flags-dir": {
|
|
12950
|
-
"helpGroup": "GLOBAL",
|
|
12951
|
-
"name": "flags-dir",
|
|
12952
|
-
"summary": "Import flag values from a directory.",
|
|
12953
|
-
"hasDynamicHelp": false,
|
|
12954
|
-
"multiple": false,
|
|
12955
|
-
"type": "option"
|
|
12956
|
-
},
|
|
12957
|
-
"path": {
|
|
12958
|
-
"char": "p",
|
|
12959
|
-
"description": "Root folder",
|
|
12960
|
-
"name": "path",
|
|
12961
|
-
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
12962
|
-
"hasDynamicHelp": false,
|
|
12963
|
-
"multiple": false,
|
|
12964
|
-
"type": "option"
|
|
12965
|
-
},
|
|
12966
|
-
"debug": {
|
|
12967
|
-
"char": "d",
|
|
12968
|
-
"description": "Activate debug mode (more logs)",
|
|
12969
|
-
"name": "debug",
|
|
12970
|
-
"allowNo": false,
|
|
12971
|
-
"type": "boolean"
|
|
12972
|
-
},
|
|
12973
|
-
"websocket": {
|
|
12974
|
-
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
12975
|
-
"name": "websocket",
|
|
12976
|
-
"hasDynamicHelp": false,
|
|
12977
|
-
"multiple": false,
|
|
12978
|
-
"type": "option"
|
|
12979
|
-
},
|
|
12980
|
-
"skipauth": {
|
|
12981
|
-
"description": "Skip authentication check when a default username is required",
|
|
12982
|
-
"name": "skipauth",
|
|
12983
|
-
"allowNo": false,
|
|
12984
|
-
"type": "boolean"
|
|
12985
|
-
},
|
|
12986
|
-
"target-org": {
|
|
12987
|
-
"aliases": [
|
|
12988
|
-
"targetusername",
|
|
12989
|
-
"u"
|
|
12990
|
-
],
|
|
12991
|
-
"char": "o",
|
|
12992
|
-
"deprecateAliases": true,
|
|
12993
|
-
"name": "target-org",
|
|
12994
|
-
"noCacheDefault": true,
|
|
12995
|
-
"required": true,
|
|
12996
|
-
"summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
|
|
12997
|
-
"hasDynamicHelp": true,
|
|
12998
|
-
"multiple": false,
|
|
12999
|
-
"type": "option"
|
|
13000
|
-
}
|
|
13001
|
-
},
|
|
13002
|
-
"hasDynamicHelp": true,
|
|
13003
|
-
"hiddenAliases": [],
|
|
13004
|
-
"id": "hardis:project:fix:profiletabs",
|
|
13005
|
-
"pluginAlias": "sfdx-hardis",
|
|
13006
|
-
"pluginName": "sfdx-hardis",
|
|
13007
|
-
"pluginType": "core",
|
|
13008
|
-
"strict": true,
|
|
13009
|
-
"enableJsonFlag": true,
|
|
13010
|
-
"title": "Fix profiles to add tabs that are not retrieved by SF CLI",
|
|
13011
|
-
"requiresProject": true,
|
|
13012
|
-
"isESM": true,
|
|
13013
|
-
"relativePath": [
|
|
13014
|
-
"lib",
|
|
13015
|
-
"commands",
|
|
13016
|
-
"hardis",
|
|
13017
|
-
"project",
|
|
13018
|
-
"fix",
|
|
13019
|
-
"profiletabs.js"
|
|
13020
|
-
],
|
|
13021
|
-
"aliasPermutations": [],
|
|
13022
|
-
"permutations": [
|
|
13023
|
-
"hardis:project:fix:profiletabs",
|
|
13024
|
-
"project:hardis:fix:profiletabs",
|
|
13025
|
-
"project:fix:hardis:profiletabs",
|
|
13026
|
-
"project:fix:profiletabs:hardis",
|
|
13027
|
-
"hardis:fix:project:profiletabs",
|
|
13028
|
-
"fix:hardis:project:profiletabs",
|
|
13029
|
-
"fix:project:hardis:profiletabs",
|
|
13030
|
-
"fix:project:profiletabs:hardis",
|
|
13031
|
-
"hardis:fix:profiletabs:project",
|
|
13032
|
-
"fix:hardis:profiletabs:project",
|
|
13033
|
-
"fix:profiletabs:hardis:project",
|
|
13034
|
-
"fix:profiletabs:project:hardis",
|
|
13035
|
-
"hardis:project:profiletabs:fix",
|
|
13036
|
-
"project:hardis:profiletabs:fix",
|
|
13037
|
-
"project:profiletabs:hardis:fix",
|
|
13038
|
-
"project:profiletabs:fix:hardis",
|
|
13039
|
-
"hardis:profiletabs:project:fix",
|
|
13040
|
-
"profiletabs:hardis:project:fix",
|
|
13041
|
-
"profiletabs:project:hardis:fix",
|
|
13042
|
-
"profiletabs:project:fix:hardis",
|
|
13043
|
-
"hardis:profiletabs:fix:project",
|
|
13044
|
-
"profiletabs:hardis:fix:project",
|
|
13045
|
-
"profiletabs:fix:hardis:project",
|
|
13046
|
-
"profiletabs:fix:project:hardis"
|
|
13047
|
-
]
|
|
13048
|
-
},
|
|
13049
|
-
"hardis:project:fix:v53flexipages": {
|
|
13050
|
-
"aliases": [],
|
|
13051
|
-
"args": {},
|
|
13052
|
-
"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",
|
|
13053
|
-
"examples": [
|
|
13054
|
-
"$ sf hardis:project:fix:v53flexipages"
|
|
13055
|
-
],
|
|
13056
|
-
"flags": {
|
|
13057
|
-
"json": {
|
|
13058
|
-
"description": "Format output as json.",
|
|
13059
|
-
"helpGroup": "GLOBAL",
|
|
13060
|
-
"name": "json",
|
|
13061
|
-
"allowNo": false,
|
|
13062
|
-
"type": "boolean"
|
|
13063
|
-
},
|
|
13064
|
-
"flags-dir": {
|
|
13065
|
-
"helpGroup": "GLOBAL",
|
|
13066
|
-
"name": "flags-dir",
|
|
13067
|
-
"summary": "Import flag values from a directory.",
|
|
13068
|
-
"hasDynamicHelp": false,
|
|
13069
|
-
"multiple": false,
|
|
13070
|
-
"type": "option"
|
|
13071
|
-
},
|
|
13072
|
-
"path": {
|
|
13073
|
-
"char": "p",
|
|
13074
|
-
"description": "Root folder",
|
|
13075
|
-
"name": "path",
|
|
13076
|
-
"default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
|
|
13077
|
-
"hasDynamicHelp": false,
|
|
13078
|
-
"multiple": false,
|
|
13079
|
-
"type": "option"
|
|
13080
|
-
},
|
|
13081
|
-
"debug": {
|
|
13082
|
-
"char": "d",
|
|
13083
|
-
"description": "Activate debug mode (more logs)",
|
|
13084
|
-
"name": "debug",
|
|
13085
|
-
"allowNo": false,
|
|
13086
|
-
"type": "boolean"
|
|
13087
|
-
},
|
|
13088
|
-
"websocket": {
|
|
13089
|
-
"description": "Websocket host:port for VsCode SFDX Hardis UI integration",
|
|
13090
|
-
"name": "websocket",
|
|
13091
|
-
"hasDynamicHelp": false,
|
|
13092
|
-
"multiple": false,
|
|
13093
|
-
"type": "option"
|
|
13094
|
-
},
|
|
13095
|
-
"skipauth": {
|
|
13096
|
-
"description": "Skip authentication check when a default username is required",
|
|
13097
|
-
"name": "skipauth",
|
|
13098
|
-
"allowNo": false,
|
|
13099
|
-
"type": "boolean"
|
|
13100
|
-
}
|
|
13101
|
-
},
|
|
13102
|
-
"hasDynamicHelp": false,
|
|
13103
|
-
"hiddenAliases": [],
|
|
13104
|
-
"id": "hardis:project:fix:v53flexipages",
|
|
13105
|
-
"pluginAlias": "sfdx-hardis",
|
|
13106
|
-
"pluginName": "sfdx-hardis",
|
|
13107
|
-
"pluginType": "core",
|
|
13108
|
-
"strict": true,
|
|
13109
|
-
"enableJsonFlag": true,
|
|
13110
|
-
"title": "Fix flexipages for v53",
|
|
13111
|
-
"requiresProject": true,
|
|
13112
|
-
"isESM": true,
|
|
13113
|
-
"relativePath": [
|
|
13114
|
-
"lib",
|
|
13115
|
-
"commands",
|
|
13116
|
-
"hardis",
|
|
13117
|
-
"project",
|
|
13118
|
-
"fix",
|
|
13119
|
-
"v53flexipages.js"
|
|
13120
|
-
],
|
|
13121
|
-
"aliasPermutations": [],
|
|
13122
|
-
"permutations": [
|
|
13123
|
-
"hardis:project:fix:v53flexipages",
|
|
13124
|
-
"project:hardis:fix:v53flexipages",
|
|
13125
|
-
"project:fix:hardis:v53flexipages",
|
|
13126
|
-
"project:fix:v53flexipages:hardis",
|
|
13127
|
-
"hardis:fix:project:v53flexipages",
|
|
13128
|
-
"fix:hardis:project:v53flexipages",
|
|
13129
|
-
"fix:project:hardis:v53flexipages",
|
|
13130
|
-
"fix:project:v53flexipages:hardis",
|
|
13131
|
-
"hardis:fix:v53flexipages:project",
|
|
13132
|
-
"fix:hardis:v53flexipages:project",
|
|
13133
|
-
"fix:v53flexipages:hardis:project",
|
|
13134
|
-
"fix:v53flexipages:project:hardis",
|
|
13135
|
-
"hardis:project:v53flexipages:fix",
|
|
13136
|
-
"project:hardis:v53flexipages:fix",
|
|
13137
|
-
"project:v53flexipages:hardis:fix",
|
|
13138
|
-
"project:v53flexipages:fix:hardis",
|
|
13139
|
-
"hardis:v53flexipages:project:fix",
|
|
13140
|
-
"v53flexipages:hardis:project:fix",
|
|
13141
|
-
"v53flexipages:project:hardis:fix",
|
|
13142
|
-
"v53flexipages:project:fix:hardis",
|
|
13143
|
-
"hardis:v53flexipages:fix:project",
|
|
13144
|
-
"v53flexipages:hardis:fix:project",
|
|
13145
|
-
"v53flexipages:fix:hardis:project",
|
|
13146
|
-
"v53flexipages:fix:project:hardis"
|
|
13147
|
-
]
|
|
13148
|
-
},
|
|
13149
13149
|
"hardis:project:generate:bypass": {
|
|
13150
13150
|
"aliases": [],
|
|
13151
13151
|
"args": {},
|
|
@@ -15719,5 +15719,5 @@
|
|
|
15719
15719
|
]
|
|
15720
15720
|
}
|
|
15721
15721
|
},
|
|
15722
|
-
"version": "6.
|
|
15722
|
+
"version": "6.14.1-beta202512011840.0"
|
|
15723
15723
|
}
|