sfdx-hardis 5.43.2 → 5.43.3

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.
@@ -57,12 +57,13 @@
57
57
  "world:hello"
58
58
  ]
59
59
  },
60
- "hardis:cache:clear": {
60
+ "hardis:auth:login": {
61
61
  "aliases": [],
62
62
  "args": {},
63
- "description": "Clear cache generated by sfdx-hardis",
63
+ "description": "\nLogins to a Salesforce org from CI/CD workflows.\n\nWill use the variables and files defined by configuration commands:\n\n- CI/CD repos: [Configure Org CI Authentication](https://sfdx-hardis.cloudity.com/hardis/project/configure/auth/)\n- Monitoring repos: [Configure Org Monitoring](https://sfdx-hardis.cloudity.com/hardis/org/configure/monitoring/)\n\nIf you have a technical org (for example to call Agentforce from another org, you can define variable SFDX_AUTH_URL_TECHNICAL_ORG and it will authenticate it with alias TECHNICAL_ORG)\n\nYou can get SFDX_AUTH_URL_TECHNICAL_ORG value by running the command: `sf org display --verbose --json` and copy the value of the field `sfdxAuthUrl` in the output.\n",
64
64
  "examples": [
65
- "$ sf hardis:cache:clear"
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,39 +126,38 @@
103
126
  },
104
127
  "hasDynamicHelp": false,
105
128
  "hiddenAliases": [],
106
- "id": "hardis:cache:clear",
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": "Clear sfdx-hardis cache",
135
+ "title": "Login",
113
136
  "requiresProject": false,
114
137
  "isESM": true,
115
138
  "relativePath": [
116
139
  "lib",
117
140
  "commands",
118
141
  "hardis",
119
- "cache",
120
- "clear.js"
142
+ "auth",
143
+ "login.js"
121
144
  ],
122
145
  "aliasPermutations": [],
123
146
  "permutations": [
124
- "hardis:cache:clear",
125
- "cache:hardis:clear",
126
- "cache:clear:hardis",
127
- "hardis:clear:cache",
128
- "clear:hardis:cache",
129
- "clear:cache:hardis"
147
+ "hardis:auth:login",
148
+ "auth:hardis:login",
149
+ "auth:login:hardis",
150
+ "hardis:login:auth",
151
+ "login:hardis:auth",
152
+ "login:auth:hardis"
130
153
  ]
131
154
  },
132
- "hardis:auth:login": {
155
+ "hardis:cache:clear": {
133
156
  "aliases": [],
134
157
  "args": {},
135
- "description": "\nLogins to a Salesforce org from CI/CD workflows.\n\nWill use the variables and files defined by configuration commands:\n\n- CI/CD repos: [Configure Org CI Authentication](https://sfdx-hardis.cloudity.com/hardis/project/configure/auth/)\n- Monitoring repos: [Configure Org Monitoring](https://sfdx-hardis.cloudity.com/hardis/org/configure/monitoring/)\n\nIf you have a technical org (for example to call Agentforce from another org, you can define variable SFDX_AUTH_URL_TECHNICAL_ORG and it will authenticate it with alias TECHNICAL_ORG)\n\nYou can get SFDX_AUTH_URL_TECHNICAL_ORG value by running the command: `sf org display --verbose --json` and copy the value of the field `sfdxAuthUrl` in the output.\n",
158
+ "description": "Clear cache generated by sfdx-hardis",
136
159
  "examples": [
137
- "$ sf hardis:auth:login",
138
- "CI=true sf hardis:auth:login"
160
+ "$ sf hardis:cache:clear"
139
161
  ],
140
162
  "flags": {
141
163
  "json": {
@@ -153,28 +175,6 @@
153
175
  "multiple": false,
154
176
  "type": "option"
155
177
  },
156
- "instanceurl": {
157
- "char": "r",
158
- "description": "URL of org instance",
159
- "name": "instanceurl",
160
- "hasDynamicHelp": false,
161
- "multiple": false,
162
- "type": "option"
163
- },
164
- "devhub": {
165
- "char": "h",
166
- "description": "Also connect associated DevHub",
167
- "name": "devhub",
168
- "allowNo": false,
169
- "type": "boolean"
170
- },
171
- "scratchorg": {
172
- "char": "s",
173
- "description": "Scratch org",
174
- "name": "scratchorg",
175
- "allowNo": false,
176
- "type": "boolean"
177
- },
178
178
  "debug": {
179
179
  "char": "d",
180
180
  "description": "Activate debug mode (more logs)",
@@ -198,30 +198,30 @@
198
198
  },
199
199
  "hasDynamicHelp": false,
200
200
  "hiddenAliases": [],
201
- "id": "hardis:auth:login",
201
+ "id": "hardis:cache:clear",
202
202
  "pluginAlias": "sfdx-hardis",
203
203
  "pluginName": "sfdx-hardis",
204
204
  "pluginType": "core",
205
205
  "strict": true,
206
206
  "enableJsonFlag": true,
207
- "title": "Login",
207
+ "title": "Clear sfdx-hardis cache",
208
208
  "requiresProject": false,
209
209
  "isESM": true,
210
210
  "relativePath": [
211
211
  "lib",
212
212
  "commands",
213
213
  "hardis",
214
- "auth",
215
- "login.js"
214
+ "cache",
215
+ "clear.js"
216
216
  ],
217
217
  "aliasPermutations": [],
218
218
  "permutations": [
219
- "hardis:auth:login",
220
- "auth:hardis:login",
221
- "auth:login:hardis",
222
- "hardis:login:auth",
223
- "login:hardis:auth",
224
- "login:auth:hardis"
219
+ "hardis:cache:clear",
220
+ "cache:hardis:clear",
221
+ "cache:clear:hardis",
222
+ "hardis:clear:cache",
223
+ "clear:hardis:cache",
224
+ "clear:cache:hardis"
225
225
  ]
226
226
  },
227
227
  "hardis:config:get": {
@@ -310,14 +310,14 @@
310
310
  "get:config:hardis"
311
311
  ]
312
312
  },
313
- "hardis:doc:fieldusage": {
313
+ "hardis:lint:access": {
314
314
  "aliases": [],
315
315
  "args": {},
316
- "description": "\n Retrieves custom field usage from metadata dependencies for specified sObjects.\n ![\"Find custom fields usage\"](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/doc-fieldusage.png)\n ",
316
+ "description": "Check if elements(apex class and field) are at least in one permission set\n \nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-missing-access/) and can output Grafana, Slack and MsTeams Notifications.\n",
317
317
  "examples": [
318
- "$ sf hardis:doc:fieldusage",
319
- "$ sf hardis:doc:fieldusage --sObjects Account,Contact,Opportunity",
320
- "$ sf hardis:doc:fieldusage --target-org myOrgAlias --sObjects CustomObject__c"
318
+ "$ sf hardis:lint:access",
319
+ "$ sf hardis:lint:access -e \"ApexClass:ClassA, CustomField:Account.CustomField\"",
320
+ "$ sf hardis:lint:access -i \"PermissionSet:permissionSetA, Profile\""
321
321
  ],
322
322
  "flags": {
323
323
  "json": {
@@ -335,111 +335,41 @@
335
335
  "multiple": false,
336
336
  "type": "option"
337
337
  },
338
- "target-org": {
339
- "aliases": [
340
- "targetusername",
341
- "u"
342
- ],
343
- "char": "o",
344
- "deprecateAliases": true,
345
- "name": "target-org",
346
- "noCacheDefault": true,
347
- "required": true,
348
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
349
- "hasDynamicHelp": true,
350
- "multiple": false,
351
- "type": "option"
352
- },
353
- "sObjects": {
354
- "char": "s",
355
- "description": "Comma-separated list of sObjects to filter",
356
- "name": "sObjects",
357
- "required": false,
338
+ "elementsignored": {
339
+ "char": "e",
340
+ "description": "Ignore specific elements separated by commas",
341
+ "name": "elementsignored",
342
+ "default": "",
358
343
  "hasDynamicHelp": false,
359
344
  "multiple": false,
360
345
  "type": "option"
361
- }
362
- },
363
- "hasDynamicHelp": true,
364
- "hiddenAliases": [],
365
- "id": "hardis:doc:fieldusage",
366
- "pluginAlias": "sfdx-hardis",
367
- "pluginName": "sfdx-hardis",
368
- "pluginType": "core",
369
- "strict": true,
370
- "enableJsonFlag": true,
371
- "isESM": true,
372
- "relativePath": [
373
- "lib",
374
- "commands",
375
- "hardis",
376
- "doc",
377
- "fieldusage.js"
378
- ],
379
- "aliasPermutations": [],
380
- "permutations": [
381
- "hardis:doc:fieldusage",
382
- "doc:hardis:fieldusage",
383
- "doc:fieldusage:hardis",
384
- "hardis:fieldusage:doc",
385
- "fieldusage:hardis:doc",
386
- "fieldusage:doc:hardis"
387
- ]
388
- },
389
- "hardis:doc:flow2markdown": {
390
- "aliases": [],
391
- "args": {},
392
- "description": "Generates a markdown documentation from a Flow file\n \nIf [AI integration](https://sfdx-hardis.cloudity.com/salesforce-ai-setup/) is configured, documentation will contain a summary of the Flow. \n ",
393
- "examples": [
394
- "$ sf hardis:doc:flow2markdown",
395
- "$ sf hardis:doc:flow2markdown --inputfile force-app/main/default/flows/MyFlow.flow-meta.xml",
396
- "$ sf hardis:doc:flow2markdown --pdf",
397
- "$ sf hardis:doc:flow2markdown --inputfile force-app/main/default/flows/MyFlow.flow-meta.xml --pdf"
398
- ],
399
- "flags": {
400
- "json": {
401
- "description": "Format output as json.",
402
- "helpGroup": "GLOBAL",
403
- "name": "json",
404
- "allowNo": false,
405
- "type": "boolean"
406
346
  },
407
- "flags-dir": {
408
- "helpGroup": "GLOBAL",
409
- "name": "flags-dir",
410
- "summary": "Import flag values from a directory.",
347
+ "ignorerights": {
348
+ "char": "i",
349
+ "description": "Ignore permission sets or profiles",
350
+ "name": "ignorerights",
351
+ "default": "",
411
352
  "hasDynamicHelp": false,
412
353
  "multiple": false,
413
354
  "type": "option"
414
355
  },
415
- "inputfile": {
416
- "char": "x",
417
- "description": "Path to Flow metadata file. If not specified, the command will prompt the user",
418
- "name": "inputfile",
356
+ "folder": {
357
+ "char": "f",
358
+ "description": "Root folder",
359
+ "name": "folder",
360
+ "default": "force-app",
419
361
  "hasDynamicHelp": false,
420
362
  "multiple": false,
421
363
  "type": "option"
422
364
  },
423
365
  "outputfile": {
424
- "char": "f",
425
- "description": "Force the path and name of output markdown file. Must end with .md",
366
+ "char": "x",
367
+ "description": "Force the path and name of output report file. Must end with .csv",
426
368
  "name": "outputfile",
427
369
  "hasDynamicHelp": false,
428
370
  "multiple": false,
429
371
  "type": "option"
430
372
  },
431
- "with-history": {
432
- "description": "Generate a markdown file with the history diff of the Flow",
433
- "name": "with-history",
434
- "allowNo": false,
435
- "type": "boolean"
436
- },
437
- "pdf": {
438
- "description": "Also generate the documentation in PDF format",
439
- "name": "pdf",
440
- "allowNo": false,
441
- "type": "boolean"
442
- },
443
373
  "debug": {
444
374
  "char": "d",
445
375
  "description": "Activate debug mode (more logs)",
@@ -477,38 +407,68 @@
477
407
  },
478
408
  "hasDynamicHelp": true,
479
409
  "hiddenAliases": [],
480
- "id": "hardis:doc:flow2markdown",
410
+ "id": "hardis:lint:access",
481
411
  "pluginAlias": "sfdx-hardis",
482
412
  "pluginName": "sfdx-hardis",
483
413
  "pluginType": "core",
484
414
  "strict": true,
485
415
  "enableJsonFlag": true,
486
- "title": "Flow to Markdown",
487
- "requiresProject": false,
416
+ "title": "check permission access",
417
+ "supportsDevhubUsername": false,
418
+ "requiresProject": true,
419
+ "sourceElements": [
420
+ {
421
+ "regex": "/**/*.cls",
422
+ "type": "ApexClass",
423
+ "xmlField": "apexClass",
424
+ "xmlChildren": "classAccesses",
425
+ "xmlAccessField": "enabled",
426
+ "ignore": {
427
+ "all": false,
428
+ "elements": []
429
+ }
430
+ },
431
+ {
432
+ "regex": "/**/objects/**/fields/*__c.field-meta.xml",
433
+ "type": "CustomField",
434
+ "xmlField": "field",
435
+ "xmlChildren": "fieldPermissions",
436
+ "xmlAccessField": "readable",
437
+ "ignore": {
438
+ "all": false,
439
+ "elements": []
440
+ }
441
+ }
442
+ ],
443
+ "messages": {
444
+ "header": "Check if elements(apex class and field) are at least in one permission set",
445
+ "allElementsHaveRights": "All elements are included in at least one Permission set or Profile",
446
+ "someElementsDontHaveRights": "Some elements are not included in at least one Permission set or Profile"
447
+ },
488
448
  "isESM": true,
489
449
  "relativePath": [
490
450
  "lib",
491
451
  "commands",
492
452
  "hardis",
493
- "doc",
494
- "flow2markdown.js"
453
+ "lint",
454
+ "access.js"
495
455
  ],
496
456
  "aliasPermutations": [],
497
457
  "permutations": [
498
- "hardis:doc:flow2markdown",
499
- "doc:hardis:flow2markdown",
500
- "doc:flow2markdown:hardis",
501
- "hardis:flow2markdown:doc",
502
- "flow2markdown:hardis:doc",
503
- "flow2markdown:doc:hardis"
458
+ "hardis:lint:access",
459
+ "lint:hardis:access",
460
+ "lint:access:hardis",
461
+ "hardis:access:lint",
462
+ "access:hardis:lint",
463
+ "access:lint:hardis"
504
464
  ]
505
465
  },
506
- "hardis:doc:mkdocs-to-cf": {
466
+ "hardis:lint:metadatastatus": {
507
467
  "aliases": [],
508
468
  "args": {},
509
- "description": "Generates MkDocs HTML pages and upload them to Cloudflare as a static pages\n\nThis command performs the following operations:\n\n- Generates MkDocs HTML pages (using locally installed mkdocs-material, or using mkdocs docker image)\n- Creates a Cloudflare pages app\n- Assigns a policy restricting access to the application\n- Opens the new WebSite in the default browser (only if not in CI context)\n\nNote: the documentation must have been previously generated using \"sf hardis:doc:project2markdown --with-history\"\n\nYou can:\n\n- Override default styles by customizing mkdocs.yml\n\nMore info on [Documentation section](https://sfdx-hardis.cloudity.com/salesforce-project-documentation/)\n\n\n| Variable | Description | Default |\n| :----------------------------------------- | :---------- | :-----: |\n| `CLOUDFLARE_EMAIL` | Cloudflare account email | <!--- Required --> |\n| `CLOUDFLARE_API_TOKEN` | Cloudflare API token | <!--- Required --> |\n| `CLOUDFLARE_ACCOUNT_ID` | Cloudflare account | <!--- Required --> |\n| `CLOUDFLARE_PROJECT_NAME` | Project name, that will also be used for site URL | Built from git branch name |\n| `CLOUDFLARE_DEFAULT_LOGIN_METHOD_TYPE` | Cloudflare default login method type | `onetimepin` |\n| `CLOUDFLARE_DEFAULT_ACCESS_EMAIL_DOMAIN` | Cloudflare default access email domain | `@cloudity.com` |\n| `CLOUDFLARE_EXTRA_ACCESS_POLICY_ID_LIST` | Policies to assign to every application access | <!--- Optional --> |\n\n",
469
+ "description": "Check if elements are inactive in the project:\n\n- Approval Processes\n- Assignment Rules\n- Auto Response Rules\n- Escalation Rules\n- Flows\n- Forecasting Types\n- Record Types\n- Validation Rules\n- Workflow Rules\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/detect-inactive-metadata.gif)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n",
510
470
  "examples": [
511
- "$ sf hardis:doc:mkdocs-to-cf"
471
+ "$ sf hardis:lint:metadatastatus"
512
472
  ],
513
473
  "flags": {
514
474
  "json": {
@@ -533,6 +493,14 @@
533
493
  "allowNo": false,
534
494
  "type": "boolean"
535
495
  },
496
+ "outputfile": {
497
+ "char": "f",
498
+ "description": "Force the path and name of output report file. Must end with .csv",
499
+ "name": "outputfile",
500
+ "hasDynamicHelp": false,
501
+ "multiple": false,
502
+ "type": "option"
503
+ },
536
504
  "websocket": {
537
505
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
538
506
  "name": "websocket",
@@ -545,42 +513,57 @@
545
513
  "name": "skipauth",
546
514
  "allowNo": false,
547
515
  "type": "boolean"
516
+ },
517
+ "target-org": {
518
+ "aliases": [
519
+ "targetusername",
520
+ "u"
521
+ ],
522
+ "char": "o",
523
+ "deprecateAliases": true,
524
+ "name": "target-org",
525
+ "noCacheDefault": true,
526
+ "summary": "Username or alias of the target org.",
527
+ "hasDynamicHelp": true,
528
+ "multiple": false,
529
+ "type": "option"
548
530
  }
549
531
  },
550
- "hasDynamicHelp": false,
532
+ "hasDynamicHelp": true,
551
533
  "hiddenAliases": [],
552
- "id": "hardis:doc:mkdocs-to-cf",
534
+ "id": "hardis:lint:metadatastatus",
553
535
  "pluginAlias": "sfdx-hardis",
554
536
  "pluginName": "sfdx-hardis",
555
537
  "pluginType": "core",
556
538
  "strict": true,
557
539
  "enableJsonFlag": true,
558
- "title": "MkDocs to Cloudflare",
540
+ "title": "check inactive metadatas",
541
+ "supportsDevhubUsername": false,
559
542
  "requiresProject": true,
560
543
  "isESM": true,
561
544
  "relativePath": [
562
545
  "lib",
563
546
  "commands",
564
547
  "hardis",
565
- "doc",
566
- "mkdocs-to-cf.js"
548
+ "lint",
549
+ "metadatastatus.js"
567
550
  ],
568
551
  "aliasPermutations": [],
569
552
  "permutations": [
570
- "hardis:doc:mkdocs-to-cf",
571
- "doc:hardis:mkdocs-to-cf",
572
- "doc:mkdocs-to-cf:hardis",
573
- "hardis:mkdocs-to-cf:doc",
574
- "mkdocs-to-cf:hardis:doc",
575
- "mkdocs-to-cf:doc:hardis"
553
+ "hardis:lint:metadatastatus",
554
+ "lint:hardis:metadatastatus",
555
+ "lint:metadatastatus:hardis",
556
+ "hardis:metadatastatus:lint",
557
+ "metadatastatus:hardis:lint",
558
+ "metadatastatus:lint:hardis"
576
559
  ]
577
560
  },
578
- "hardis:doc:mkdocs-to-salesforce": {
561
+ "hardis:lint:missingattributes": {
579
562
  "aliases": [],
580
563
  "args": {},
581
- "description": "Generates MkDocs HTML pages and upload them to Salesforce as a static resource\n\nThis command performs the following operations:\n\n- Generates MkDocs HTML pages (using locally installed mkdocs-material, or using mkdocs docker image)\n- Creates a Static Resource, a VisualForce page and a Custom Tab metadata\n- Upload the metadatas to the default org\n- Opens the Custom Tab in the default browser (only if not in CI context)\n\nNote: the documentation must have been previously generated using \"sf hardis:doc:project2markdown --with-history\"\n\nYou can:\n\n- Specify the type of documentation to generate (CICD or Monitoring) using the --type flag. Default is CICD.\n- Override default styles by customizing mkdocs.yml\n\nMore info on [Documentation section](https://sfdx-hardis.cloudity.com/salesforce-project-documentation/)\n",
564
+ "description": "Check if elements(custom fields) aren't description",
582
565
  "examples": [
583
- "$ sf hardis:doc:mkdocs-to-salesforce"
566
+ "$ sf hardis:lint:missingattributes"
584
567
  ],
585
568
  "flags": {
586
569
  "json": {
@@ -598,19 +581,6 @@
598
581
  "multiple": false,
599
582
  "type": "option"
600
583
  },
601
- "type": {
602
- "char": "t",
603
- "description": "Type of the documentation to generate. Default is \"all\"",
604
- "name": "type",
605
- "default": "CICD",
606
- "hasDynamicHelp": false,
607
- "multiple": false,
608
- "options": [
609
- "CICD",
610
- "Monitoring"
611
- ],
612
- "type": "option"
613
- },
614
584
  "debug": {
615
585
  "char": "d",
616
586
  "description": "Activate debug mode (more logs)",
@@ -618,6 +588,14 @@
618
588
  "allowNo": false,
619
589
  "type": "boolean"
620
590
  },
591
+ "outputfile": {
592
+ "char": "f",
593
+ "description": "Force the path and name of output report file. Must end with .csv",
594
+ "name": "outputfile",
595
+ "hasDynamicHelp": false,
596
+ "multiple": false,
597
+ "type": "option"
598
+ },
621
599
  "websocket": {
622
600
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
623
601
  "name": "websocket",
@@ -640,8 +618,7 @@
640
618
  "deprecateAliases": true,
641
619
  "name": "target-org",
642
620
  "noCacheDefault": true,
643
- "required": true,
644
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
621
+ "summary": "Username or alias of the target org.",
645
622
  "hasDynamicHelp": true,
646
623
  "multiple": false,
647
624
  "type": "option"
@@ -649,39 +626,39 @@
649
626
  },
650
627
  "hasDynamicHelp": true,
651
628
  "hiddenAliases": [],
652
- "id": "hardis:doc:mkdocs-to-salesforce",
629
+ "id": "hardis:lint:missingattributes",
653
630
  "pluginAlias": "sfdx-hardis",
654
631
  "pluginName": "sfdx-hardis",
655
632
  "pluginType": "core",
656
633
  "strict": true,
657
634
  "enableJsonFlag": true,
658
- "title": "MkDocs to Salesforce",
635
+ "title": "check missing description on custom fields",
636
+ "supportsDevhubUsername": false,
659
637
  "requiresProject": true,
660
638
  "isESM": true,
661
639
  "relativePath": [
662
640
  "lib",
663
641
  "commands",
664
642
  "hardis",
665
- "doc",
666
- "mkdocs-to-salesforce.js"
643
+ "lint",
644
+ "missingattributes.js"
667
645
  ],
668
646
  "aliasPermutations": [],
669
647
  "permutations": [
670
- "hardis:doc:mkdocs-to-salesforce",
671
- "doc:hardis:mkdocs-to-salesforce",
672
- "doc:mkdocs-to-salesforce:hardis",
673
- "hardis:mkdocs-to-salesforce:doc",
674
- "mkdocs-to-salesforce:hardis:doc",
675
- "mkdocs-to-salesforce:doc:hardis"
648
+ "hardis:lint:missingattributes",
649
+ "lint:hardis:missingattributes",
650
+ "lint:missingattributes:hardis",
651
+ "hardis:missingattributes:lint",
652
+ "missingattributes:hardis:lint",
653
+ "missingattributes:lint:hardis"
676
654
  ]
677
655
  },
678
- "hardis:doc:override-prompts": {
656
+ "hardis:lint:unusedmetadatas": {
679
657
  "aliases": [],
680
658
  "args": {},
681
- "description": "Create local override files for AI prompt templates and variables\n\nThis command creates a folder config/prompt-templates/ and copies all the default AI prompt templates and variables as .txt files that can be customized.\n\nThe templates are used by sfdx-hardis for:\n- Generating documentation with AI\n- Solving deployment errors\n- Describing Salesforce metadata\n\nThe variables contain common instruction patterns that are reused across multiple templates, such as:\n- Role definitions (business analyst, developer, etc.)\n- Formatting requirements for markdown output\n- Security caution instructions\n- Output format specifications\n\nYou can customize these prompts and variables to match your organization's specific needs and terminology.\n\nAfter running this command, you can modify any of the .txt files in config/prompt-templates/ to override the default prompts and variables.\n\n**Important**: Once created, existing template and variable files will never be overwritten with newer versions from sfdx-hardis updates, unless you explicitly use the --overwrite flag. This ensures your customizations are preserved.\n\nAvailable templates:\n- PROMPT_SOLVE_DEPLOYMENT_ERROR\n- PROMPT_DESCRIBE_FLOW\n- PROMPT_DESCRIBE_FLOW_DIFF\n- PROMPT_DESCRIBE_OBJECT\n- PROMPT_COMPLETE_OBJECT_ATTRIBUTES_MD\n- PROMPT_DESCRIBE_APEX\n- PROMPT_DESCRIBE_PAGE\n- PROMPT_DESCRIBE_PACKAGE\n- PROMPT_DESCRIBE_PROFILE\n- PROMPT_DESCRIBE_PERMISSION_SET\n- PROMPT_DESCRIBE_PERMISSION_SET_GROUP\n- PROMPT_DESCRIBE_ASSIGNMENT_RULES\n- PROMPT_DESCRIBE_APPROVAL_PROCESS\n- PROMPT_DESCRIBE_LWC\n- PROMPT_DESCRIBE_AUTORESPONSE_RULES\n- PROMPT_DESCRIBE_ESCALATION_RULES\n- PROMPT_DESCRIBE_ROLES\n\nAvailable variables:\n- VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC\n- VARIABLE_FORMATTING_REQUIREMENTS\n- VARIABLE_ADDITIONAL_INSTRUCTIONS\n\nMore info on [AI Prompts documentation](https://sfdx-hardis.cloudity.com/salesforce-ai-prompts/)\n",
659
+ "description": "Check if elements (custom labels and custom permissions) are used in the project\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n ",
682
660
  "examples": [
683
- "$ sf hardis:doc:override-prompts",
684
- "$ sf hardis:doc:override-prompts --overwrite"
661
+ "$ sf hardis:lint:unusedmetadatas"
685
662
  ],
686
663
  "flags": {
687
664
  "json": {
@@ -699,12 +676,6 @@
699
676
  "multiple": false,
700
677
  "type": "option"
701
678
  },
702
- "overwrite": {
703
- "description": "Overwrite existing template files if they already exist",
704
- "name": "overwrite",
705
- "allowNo": false,
706
- "type": "boolean"
707
- },
708
679
  "debug": {
709
680
  "char": "d",
710
681
  "description": "Activate debug mode (more logs)",
@@ -712,6 +683,14 @@
712
683
  "allowNo": false,
713
684
  "type": "boolean"
714
685
  },
686
+ "outputfile": {
687
+ "char": "f",
688
+ "description": "Force the path and name of output report file. Must end with .csv",
689
+ "name": "outputfile",
690
+ "hasDynamicHelp": false,
691
+ "multiple": false,
692
+ "type": "option"
693
+ },
715
694
  "websocket": {
716
695
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
717
696
  "name": "websocket",
@@ -724,43 +703,136 @@
724
703
  "name": "skipauth",
725
704
  "allowNo": false,
726
705
  "type": "boolean"
706
+ },
707
+ "target-org": {
708
+ "aliases": [
709
+ "targetusername",
710
+ "u"
711
+ ],
712
+ "char": "o",
713
+ "deprecateAliases": true,
714
+ "name": "target-org",
715
+ "noCacheDefault": true,
716
+ "summary": "Username or alias of the target org.",
717
+ "hasDynamicHelp": true,
718
+ "multiple": false,
719
+ "type": "option"
727
720
  }
728
721
  },
729
- "hasDynamicHelp": false,
722
+ "hasDynamicHelp": true,
730
723
  "hiddenAliases": [],
731
- "id": "hardis:doc:override-prompts",
724
+ "id": "hardis:lint:unusedmetadatas",
725
+ "pluginAlias": "sfdx-hardis",
726
+ "pluginName": "sfdx-hardis",
727
+ "pluginType": "core",
728
+ "strict": true,
729
+ "enableJsonFlag": true,
730
+ "title": "check unused labels and custom permissions",
731
+ "supportsDevhubUsername": false,
732
+ "requiresProject": true,
733
+ "isESM": true,
734
+ "relativePath": [
735
+ "lib",
736
+ "commands",
737
+ "hardis",
738
+ "lint",
739
+ "unusedmetadatas.js"
740
+ ],
741
+ "aliasPermutations": [],
742
+ "permutations": [
743
+ "hardis:lint:unusedmetadatas",
744
+ "lint:hardis:unusedmetadatas",
745
+ "lint:unusedmetadatas:hardis",
746
+ "hardis:unusedmetadatas:lint",
747
+ "unusedmetadatas:hardis:lint",
748
+ "unusedmetadatas:lint:hardis"
749
+ ]
750
+ },
751
+ "hardis:doc:fieldusage": {
752
+ "aliases": [],
753
+ "args": {},
754
+ "description": "\n Retrieves custom field usage from metadata dependencies for specified sObjects.\n ![\"Find custom fields usage\"](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/doc-fieldusage.png)\n ",
755
+ "examples": [
756
+ "$ sf hardis:doc:fieldusage",
757
+ "$ sf hardis:doc:fieldusage --sObjects Account,Contact,Opportunity",
758
+ "$ sf hardis:doc:fieldusage --target-org myOrgAlias --sObjects CustomObject__c"
759
+ ],
760
+ "flags": {
761
+ "json": {
762
+ "description": "Format output as json.",
763
+ "helpGroup": "GLOBAL",
764
+ "name": "json",
765
+ "allowNo": false,
766
+ "type": "boolean"
767
+ },
768
+ "flags-dir": {
769
+ "helpGroup": "GLOBAL",
770
+ "name": "flags-dir",
771
+ "summary": "Import flag values from a directory.",
772
+ "hasDynamicHelp": false,
773
+ "multiple": false,
774
+ "type": "option"
775
+ },
776
+ "target-org": {
777
+ "aliases": [
778
+ "targetusername",
779
+ "u"
780
+ ],
781
+ "char": "o",
782
+ "deprecateAliases": true,
783
+ "name": "target-org",
784
+ "noCacheDefault": true,
785
+ "required": true,
786
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
787
+ "hasDynamicHelp": true,
788
+ "multiple": false,
789
+ "type": "option"
790
+ },
791
+ "sObjects": {
792
+ "char": "s",
793
+ "description": "Comma-separated list of sObjects to filter",
794
+ "name": "sObjects",
795
+ "required": false,
796
+ "hasDynamicHelp": false,
797
+ "multiple": false,
798
+ "type": "option"
799
+ }
800
+ },
801
+ "hasDynamicHelp": true,
802
+ "hiddenAliases": [],
803
+ "id": "hardis:doc:fieldusage",
732
804
  "pluginAlias": "sfdx-hardis",
733
805
  "pluginName": "sfdx-hardis",
734
806
  "pluginType": "core",
735
807
  "strict": true,
736
808
  "enableJsonFlag": true,
737
- "title": "Override AI Prompt Templates",
738
- "requiresProject": false,
739
809
  "isESM": true,
740
810
  "relativePath": [
741
811
  "lib",
742
812
  "commands",
743
813
  "hardis",
744
814
  "doc",
745
- "override-prompts.js"
815
+ "fieldusage.js"
746
816
  ],
747
817
  "aliasPermutations": [],
748
818
  "permutations": [
749
- "hardis:doc:override-prompts",
750
- "doc:hardis:override-prompts",
751
- "doc:override-prompts:hardis",
752
- "hardis:override-prompts:doc",
753
- "override-prompts:hardis:doc",
754
- "override-prompts:doc:hardis"
819
+ "hardis:doc:fieldusage",
820
+ "doc:hardis:fieldusage",
821
+ "doc:fieldusage:hardis",
822
+ "hardis:fieldusage:doc",
823
+ "fieldusage:hardis:doc",
824
+ "fieldusage:doc:hardis"
755
825
  ]
756
826
  },
757
- "hardis:doc:packagexml2markdown": {
827
+ "hardis:doc:flow2markdown": {
758
828
  "aliases": [],
759
829
  "args": {},
760
- "description": "Generates a markdown documentation from a package.xml file",
830
+ "description": "Generates a markdown documentation from a Flow file\n \nIf [AI integration](https://sfdx-hardis.cloudity.com/salesforce-ai-setup/) is configured, documentation will contain a summary of the Flow. \n ",
761
831
  "examples": [
762
- "$ sf hardis:doc:packagexml2markdown",
763
- "$ sf hardis:doc:packagexml2markdown --inputfile manifest/package-all.xml"
832
+ "$ sf hardis:doc:flow2markdown",
833
+ "$ sf hardis:doc:flow2markdown --inputfile force-app/main/default/flows/MyFlow.flow-meta.xml",
834
+ "$ sf hardis:doc:flow2markdown --pdf",
835
+ "$ sf hardis:doc:flow2markdown --inputfile force-app/main/default/flows/MyFlow.flow-meta.xml --pdf"
764
836
  ],
765
837
  "flags": {
766
838
  "json": {
@@ -780,7 +852,7 @@
780
852
  },
781
853
  "inputfile": {
782
854
  "char": "x",
783
- "description": "Path to package.xml file. If not specified, the command will look in manifest folder",
855
+ "description": "Path to Flow metadata file. If not specified, the command will prompt the user",
784
856
  "name": "inputfile",
785
857
  "hasDynamicHelp": false,
786
858
  "multiple": false,
@@ -788,12 +860,24 @@
788
860
  },
789
861
  "outputfile": {
790
862
  "char": "f",
791
- "description": "Force the path and name of output report file. Must end with .md",
863
+ "description": "Force the path and name of output markdown file. Must end with .md",
792
864
  "name": "outputfile",
793
865
  "hasDynamicHelp": false,
794
866
  "multiple": false,
795
867
  "type": "option"
796
868
  },
869
+ "with-history": {
870
+ "description": "Generate a markdown file with the history diff of the Flow",
871
+ "name": "with-history",
872
+ "allowNo": false,
873
+ "type": "boolean"
874
+ },
875
+ "pdf": {
876
+ "description": "Also generate the documentation in PDF format",
877
+ "name": "pdf",
878
+ "allowNo": false,
879
+ "type": "boolean"
880
+ },
797
881
  "debug": {
798
882
  "char": "d",
799
883
  "description": "Activate debug mode (more logs)",
@@ -831,13 +915,13 @@
831
915
  },
832
916
  "hasDynamicHelp": true,
833
917
  "hiddenAliases": [],
834
- "id": "hardis:doc:packagexml2markdown",
918
+ "id": "hardis:doc:flow2markdown",
835
919
  "pluginAlias": "sfdx-hardis",
836
920
  "pluginName": "sfdx-hardis",
837
921
  "pluginType": "core",
838
922
  "strict": true,
839
923
  "enableJsonFlag": true,
840
- "title": "PackageXml to Markdown",
924
+ "title": "Flow to Markdown",
841
925
  "requiresProject": false,
842
926
  "isESM": true,
843
927
  "relativePath": [
@@ -845,26 +929,24 @@
845
929
  "commands",
846
930
  "hardis",
847
931
  "doc",
848
- "packagexml2markdown.js"
932
+ "flow2markdown.js"
849
933
  ],
850
934
  "aliasPermutations": [],
851
935
  "permutations": [
852
- "hardis:doc:packagexml2markdown",
853
- "doc:hardis:packagexml2markdown",
854
- "doc:packagexml2markdown:hardis",
855
- "hardis:packagexml2markdown:doc",
856
- "packagexml2markdown:hardis:doc",
857
- "packagexml2markdown:doc:hardis"
936
+ "hardis:doc:flow2markdown",
937
+ "doc:hardis:flow2markdown",
938
+ "doc:flow2markdown:hardis",
939
+ "hardis:flow2markdown:doc",
940
+ "flow2markdown:hardis:doc",
941
+ "flow2markdown:doc:hardis"
858
942
  ]
859
943
  },
860
- "hardis:doc:project2markdown": {
944
+ "hardis:doc:mkdocs-to-cf": {
861
945
  "aliases": [],
862
946
  "args": {},
863
- "description": "Generates a markdown documentation from a SFDX project\n\n- Objects (with fields, validation rules, relationships and dependencies)\n- Automations\n - Approval Processes\n - Assignment Rules\n - AutoResponse Rules\n - Escalation Rules\n - Flows\n- Authorizations\n - Profiles\n - Permission Set Groups\n - Permission Sets\n- Code\n - Apex\n - Lightning Web Components\n- Lightning Pages\n- Packages\n- SFDX-Hardis Config\n- Branches & Orgs\n- Manifests\n\nCan work on any sfdx project, no need for it to be a sfdx-hardis flavored one.\n\nGenerates markdown files will be written in **docs** folder (except README.md where a link to doc index is added)\n\n- You can customize the pages following [mkdocs-material setup documentation](https://squidfunk.github.io/mkdocs-material/setup/)\n- You can manually add new markdown files in the \"docs\" folder to extend this documentation and add references to them in \"mkdocs.yml\"\n- You can also add images in folder \"docs/assets\" and embed them in markdown files.\n\nTo read Flow documentations if your markdown reader doesn't handle MermaidJS syntax, this command could require @mermaid-js/mermaid-cli\n\n- Run `npm install @mermaid-js/mermaid-cli --global` if puppeteer works in your environment\n- It can also be run as a docker image\n\nBoth modes will be tried by default, but you can also force one of them by defining environment variable `MERMAID_MODES=docker` or `MERMAID_MODES=cli`\n\n_sfdx-hardis docker image is alpine-based and does not succeed to run mermaid/puppeteer: if you can help, please submit a PR !_\n\nIf Flow history doc always display a single state, you probably need to update your workflow configuration:\n\n- on Gitlab: Env variable [`GIT_FETCH_EXTRA_FLAGS: --depth 10000`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.gitlab-ci.yml#L11)\n- on GitHub: [`fetch-depth: 0`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.github/workflows/org-monitoring.yml#L58)\n- on Azure: [`fetchDepth: \"0\"`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/azure-pipelines.yml#L39)\n- on Bitbucket: [`step: clone: depth: full`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/bitbucket-pipelines.yml#L18)\n\n![Screenshot flow doc](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-flow-doc.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-project-doc.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-project-doc-2.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-object-diagram.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-project-doc-profile.gif)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-doc-apex.png)\n\nIf it is a sfdx-hardis CI/CD project, a diagram of the branches and orgs strategy will be generated.\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-doc-branches-strategy.jpg)\n\nIf [AI integration](https://sfdx-hardis.cloudity.com/salesforce-ai-setup/) is configured, documentation will contain a summary of the Flow.\n\n- Use variable PROMPTS_LANGUAGE (ex: PROMPTS_LANGUAGE=fr) to force language for LLM calls (default:en)\n\nIf you have a complex strategy, you might need to input property **mergeTargets** in branch-scoped sfdx-hardis.yml file to have a correct diagram.\n\nDefine DO_NOT_OVERWRITE_INDEX_MD=true to avoid overwriting the index.md file in docs folder, useful if you want to keep your own index.md file.\n\n## Doc HTML Pages\n\nTo read the documentation as HTML pages, run the following code (you need [**Python**](https://www.python.org/downloads/) on your computer)\n\n```python\npip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || python -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || py -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists\nmkdocs serve -v || python -m mkdocs serve -v || py -m mkdocs serve -v\n```\n\nTo just generate HTML pages that you can host anywhere, run `mkdocs build -v || python -m mkdocs build -v || py -m mkdocs build -v`\n\n",
947
+ "description": "Generates MkDocs HTML pages and upload them to Cloudflare as a static pages\n\nThis command performs the following operations:\n\n- Generates MkDocs HTML pages (using locally installed mkdocs-material, or using mkdocs docker image)\n- Creates a Cloudflare pages app\n- Assigns a policy restricting access to the application\n- Opens the new WebSite in the default browser (only if not in CI context)\n\nNote: the documentation must have been previously generated using \"sf hardis:doc:project2markdown --with-history\"\n\nYou can:\n\n- Override default styles by customizing mkdocs.yml\n\nMore info on [Documentation section](https://sfdx-hardis.cloudity.com/salesforce-project-documentation/)\n\n\n| Variable | Description | Default |\n| :----------------------------------------- | :---------- | :-----: |\n| `CLOUDFLARE_EMAIL` | Cloudflare account email | <!--- Required --> |\n| `CLOUDFLARE_API_TOKEN` | Cloudflare API token | <!--- Required --> |\n| `CLOUDFLARE_ACCOUNT_ID` | Cloudflare account | <!--- Required --> |\n| `CLOUDFLARE_PROJECT_NAME` | Project name, that will also be used for site URL | Built from git branch name |\n| `CLOUDFLARE_DEFAULT_LOGIN_METHOD_TYPE` | Cloudflare default login method type | `onetimepin` |\n| `CLOUDFLARE_DEFAULT_ACCESS_EMAIL_DOMAIN` | Cloudflare default access email domain | `@cloudity.com` |\n| `CLOUDFLARE_EXTRA_ACCESS_POLICY_ID_LIST` | Policies to assign to every application access | <!--- Optional --> |\n\n",
864
948
  "examples": [
865
- "$ sf hardis:doc:project2markdown",
866
- "$ sf hardis:doc:project2markdown --with-history",
867
- "$ sf hardis:doc:project2markdown --with-history --pdf"
949
+ "$ sf hardis:doc:mkdocs-to-cf"
868
950
  ],
869
951
  "flags": {
870
952
  "json": {
@@ -882,24 +964,6 @@
882
964
  "multiple": false,
883
965
  "type": "option"
884
966
  },
885
- "diff-only": {
886
- "description": "Generate documentation only for changed files (used for monitoring)",
887
- "name": "diff-only",
888
- "allowNo": false,
889
- "type": "boolean"
890
- },
891
- "with-history": {
892
- "description": "Generate a markdown file with the history diff of the Flow",
893
- "name": "with-history",
894
- "allowNo": false,
895
- "type": "boolean"
896
- },
897
- "pdf": {
898
- "description": "Also generate the documentation in PDF format",
899
- "name": "pdf",
900
- "allowNo": false,
901
- "type": "boolean"
902
- },
903
967
  "debug": {
904
968
  "char": "d",
905
969
  "description": "Activate debug mode (more logs)",
@@ -919,32 +983,17 @@
919
983
  "name": "skipauth",
920
984
  "allowNo": false,
921
985
  "type": "boolean"
922
- },
923
- "target-org": {
924
- "aliases": [
925
- "targetusername",
926
- "u"
927
- ],
928
- "char": "o",
929
- "deprecateAliases": true,
930
- "name": "target-org",
931
- "noCacheDefault": true,
932
- "summary": "Username or alias of the target org.",
933
- "hasDynamicHelp": true,
934
- "multiple": false,
935
- "type": "option"
936
986
  }
937
987
  },
938
- "hasDynamicHelp": true,
988
+ "hasDynamicHelp": false,
939
989
  "hiddenAliases": [],
940
- "id": "hardis:doc:project2markdown",
990
+ "id": "hardis:doc:mkdocs-to-cf",
941
991
  "pluginAlias": "sfdx-hardis",
942
992
  "pluginName": "sfdx-hardis",
943
993
  "pluginType": "core",
944
994
  "strict": true,
945
995
  "enableJsonFlag": true,
946
- "title": "SFDX Project to Markdown",
947
- "htmlInstructions": "## Doc HTML Pages\n\nTo read the documentation as HTML pages, run the following code (you need [**Python**](https://www.python.org/downloads/) on your computer)\n\n```python\npip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || python -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || py -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists\nmkdocs serve -v || python -m mkdocs serve -v || py -m mkdocs serve -v\n```\n\nTo just generate HTML pages that you can host anywhere, run `mkdocs build -v || python -m mkdocs build -v || py -m mkdocs build -v`\n",
996
+ "title": "MkDocs to Cloudflare",
948
997
  "requiresProject": true,
949
998
  "isESM": true,
950
999
  "relativePath": [
@@ -952,26 +1001,24 @@
952
1001
  "commands",
953
1002
  "hardis",
954
1003
  "doc",
955
- "project2markdown.js"
1004
+ "mkdocs-to-cf.js"
956
1005
  ],
957
1006
  "aliasPermutations": [],
958
1007
  "permutations": [
959
- "hardis:doc:project2markdown",
960
- "doc:hardis:project2markdown",
961
- "doc:project2markdown:hardis",
962
- "hardis:project2markdown:doc",
963
- "project2markdown:hardis:doc",
964
- "project2markdown:doc:hardis"
1008
+ "hardis:doc:mkdocs-to-cf",
1009
+ "doc:hardis:mkdocs-to-cf",
1010
+ "doc:mkdocs-to-cf:hardis",
1011
+ "hardis:mkdocs-to-cf:doc",
1012
+ "mkdocs-to-cf:hardis:doc",
1013
+ "mkdocs-to-cf:doc:hardis"
965
1014
  ]
966
1015
  },
967
- "hardis:lint:access": {
1016
+ "hardis:doc:mkdocs-to-salesforce": {
968
1017
  "aliases": [],
969
1018
  "args": {},
970
- "description": "Check if elements(apex class and field) are at least in one permission set\n \nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-missing-access/) and can output Grafana, Slack and MsTeams Notifications.\n",
1019
+ "description": "Generates MkDocs HTML pages and upload them to Salesforce as a static resource\n\nThis command performs the following operations:\n\n- Generates MkDocs HTML pages (using locally installed mkdocs-material, or using mkdocs docker image)\n- Creates a Static Resource, a VisualForce page and a Custom Tab metadata\n- Upload the metadatas to the default org\n- Opens the Custom Tab in the default browser (only if not in CI context)\n\nNote: the documentation must have been previously generated using \"sf hardis:doc:project2markdown --with-history\"\n\nYou can:\n\n- Specify the type of documentation to generate (CICD or Monitoring) using the --type flag. Default is CICD.\n- Override default styles by customizing mkdocs.yml\n\nMore info on [Documentation section](https://sfdx-hardis.cloudity.com/salesforce-project-documentation/)\n",
971
1020
  "examples": [
972
- "$ sf hardis:lint:access",
973
- "$ sf hardis:lint:access -e \"ApexClass:ClassA, CustomField:Account.CustomField\"",
974
- "$ sf hardis:lint:access -i \"PermissionSet:permissionSetA, Profile\""
1021
+ "$ sf hardis:doc:mkdocs-to-salesforce"
975
1022
  ],
976
1023
  "flags": {
977
1024
  "json": {
@@ -989,39 +1036,17 @@
989
1036
  "multiple": false,
990
1037
  "type": "option"
991
1038
  },
992
- "elementsignored": {
993
- "char": "e",
994
- "description": "Ignore specific elements separated by commas",
995
- "name": "elementsignored",
996
- "default": "",
997
- "hasDynamicHelp": false,
998
- "multiple": false,
999
- "type": "option"
1000
- },
1001
- "ignorerights": {
1002
- "char": "i",
1003
- "description": "Ignore permission sets or profiles",
1004
- "name": "ignorerights",
1005
- "default": "",
1006
- "hasDynamicHelp": false,
1007
- "multiple": false,
1008
- "type": "option"
1009
- },
1010
- "folder": {
1011
- "char": "f",
1012
- "description": "Root folder",
1013
- "name": "folder",
1014
- "default": "force-app",
1015
- "hasDynamicHelp": false,
1016
- "multiple": false,
1017
- "type": "option"
1018
- },
1019
- "outputfile": {
1020
- "char": "x",
1021
- "description": "Force the path and name of output report file. Must end with .csv",
1022
- "name": "outputfile",
1039
+ "type": {
1040
+ "char": "t",
1041
+ "description": "Type of the documentation to generate. Default is \"all\"",
1042
+ "name": "type",
1043
+ "default": "CICD",
1023
1044
  "hasDynamicHelp": false,
1024
1045
  "multiple": false,
1046
+ "options": [
1047
+ "CICD",
1048
+ "Monitoring"
1049
+ ],
1025
1050
  "type": "option"
1026
1051
  },
1027
1052
  "debug": {
@@ -1053,7 +1078,8 @@
1053
1078
  "deprecateAliases": true,
1054
1079
  "name": "target-org",
1055
1080
  "noCacheDefault": true,
1056
- "summary": "Username or alias of the target org.",
1081
+ "required": true,
1082
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1057
1083
  "hasDynamicHelp": true,
1058
1084
  "multiple": false,
1059
1085
  "type": "option"
@@ -1061,68 +1087,39 @@
1061
1087
  },
1062
1088
  "hasDynamicHelp": true,
1063
1089
  "hiddenAliases": [],
1064
- "id": "hardis:lint:access",
1090
+ "id": "hardis:doc:mkdocs-to-salesforce",
1065
1091
  "pluginAlias": "sfdx-hardis",
1066
1092
  "pluginName": "sfdx-hardis",
1067
1093
  "pluginType": "core",
1068
1094
  "strict": true,
1069
1095
  "enableJsonFlag": true,
1070
- "title": "check permission access",
1071
- "supportsDevhubUsername": false,
1096
+ "title": "MkDocs to Salesforce",
1072
1097
  "requiresProject": true,
1073
- "sourceElements": [
1074
- {
1075
- "regex": "/**/*.cls",
1076
- "type": "ApexClass",
1077
- "xmlField": "apexClass",
1078
- "xmlChildren": "classAccesses",
1079
- "xmlAccessField": "enabled",
1080
- "ignore": {
1081
- "all": false,
1082
- "elements": []
1083
- }
1084
- },
1085
- {
1086
- "regex": "/**/objects/**/fields/*__c.field-meta.xml",
1087
- "type": "CustomField",
1088
- "xmlField": "field",
1089
- "xmlChildren": "fieldPermissions",
1090
- "xmlAccessField": "readable",
1091
- "ignore": {
1092
- "all": false,
1093
- "elements": []
1094
- }
1095
- }
1096
- ],
1097
- "messages": {
1098
- "header": "Check if elements(apex class and field) are at least in one permission set",
1099
- "allElementsHaveRights": "All elements are included in at least one Permission set or Profile",
1100
- "someElementsDontHaveRights": "Some elements are not included in at least one Permission set or Profile"
1101
- },
1102
1098
  "isESM": true,
1103
1099
  "relativePath": [
1104
1100
  "lib",
1105
1101
  "commands",
1106
1102
  "hardis",
1107
- "lint",
1108
- "access.js"
1103
+ "doc",
1104
+ "mkdocs-to-salesforce.js"
1109
1105
  ],
1110
1106
  "aliasPermutations": [],
1111
1107
  "permutations": [
1112
- "hardis:lint:access",
1113
- "lint:hardis:access",
1114
- "lint:access:hardis",
1115
- "hardis:access:lint",
1116
- "access:hardis:lint",
1117
- "access:lint:hardis"
1108
+ "hardis:doc:mkdocs-to-salesforce",
1109
+ "doc:hardis:mkdocs-to-salesforce",
1110
+ "doc:mkdocs-to-salesforce:hardis",
1111
+ "hardis:mkdocs-to-salesforce:doc",
1112
+ "mkdocs-to-salesforce:hardis:doc",
1113
+ "mkdocs-to-salesforce:doc:hardis"
1118
1114
  ]
1119
1115
  },
1120
- "hardis:lint:metadatastatus": {
1116
+ "hardis:doc:override-prompts": {
1121
1117
  "aliases": [],
1122
1118
  "args": {},
1123
- "description": "Check if elements are inactive in the project:\n\n- Approval Processes\n- Assignment Rules\n- Auto Response Rules\n- Escalation Rules\n- Flows\n- Forecasting Types\n- Record Types\n- Validation Rules\n- Workflow Rules\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/detect-inactive-metadata.gif)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n",
1119
+ "description": "Create local override files for AI prompt templates and variables\n\nThis command creates a folder config/prompt-templates/ and copies all the default AI prompt templates and variables as .txt files that can be customized.\n\nThe templates are used by sfdx-hardis for:\n- Generating documentation with AI\n- Solving deployment errors\n- Describing Salesforce metadata\n\nThe variables contain common instruction patterns that are reused across multiple templates, such as:\n- Role definitions (business analyst, developer, etc.)\n- Formatting requirements for markdown output\n- Security caution instructions\n- Output format specifications\n\nYou can customize these prompts and variables to match your organization's specific needs and terminology.\n\nAfter running this command, you can modify any of the .txt files in config/prompt-templates/ to override the default prompts and variables.\n\n**Important**: Once created, existing template and variable files will never be overwritten with newer versions from sfdx-hardis updates, unless you explicitly use the --overwrite flag. This ensures your customizations are preserved.\n\nAvailable templates:\n- PROMPT_SOLVE_DEPLOYMENT_ERROR\n- PROMPT_DESCRIBE_FLOW\n- PROMPT_DESCRIBE_FLOW_DIFF\n- PROMPT_DESCRIBE_OBJECT\n- PROMPT_COMPLETE_OBJECT_ATTRIBUTES_MD\n- PROMPT_DESCRIBE_APEX\n- PROMPT_DESCRIBE_PAGE\n- PROMPT_DESCRIBE_PACKAGE\n- PROMPT_DESCRIBE_PROFILE\n- PROMPT_DESCRIBE_PERMISSION_SET\n- PROMPT_DESCRIBE_PERMISSION_SET_GROUP\n- PROMPT_DESCRIBE_ASSIGNMENT_RULES\n- PROMPT_DESCRIBE_APPROVAL_PROCESS\n- PROMPT_DESCRIBE_LWC\n- PROMPT_DESCRIBE_AUTORESPONSE_RULES\n- PROMPT_DESCRIBE_ESCALATION_RULES\n- PROMPT_DESCRIBE_ROLES\n\nAvailable variables:\n- VARIABLE_OUTPUT_FORMAT_MARKDOWN_DOC\n- VARIABLE_FORMATTING_REQUIREMENTS\n- VARIABLE_ADDITIONAL_INSTRUCTIONS\n\nMore info on [AI Prompts documentation](https://sfdx-hardis.cloudity.com/salesforce-ai-prompts/)\n",
1124
1120
  "examples": [
1125
- "$ sf hardis:lint:metadatastatus"
1121
+ "$ sf hardis:doc:override-prompts",
1122
+ "$ sf hardis:doc:override-prompts --overwrite"
1126
1123
  ],
1127
1124
  "flags": {
1128
1125
  "json": {
@@ -1140,6 +1137,12 @@
1140
1137
  "multiple": false,
1141
1138
  "type": "option"
1142
1139
  },
1140
+ "overwrite": {
1141
+ "description": "Overwrite existing template files if they already exist",
1142
+ "name": "overwrite",
1143
+ "allowNo": false,
1144
+ "type": "boolean"
1145
+ },
1143
1146
  "debug": {
1144
1147
  "char": "d",
1145
1148
  "description": "Activate debug mode (more logs)",
@@ -1147,14 +1150,6 @@
1147
1150
  "allowNo": false,
1148
1151
  "type": "boolean"
1149
1152
  },
1150
- "outputfile": {
1151
- "char": "f",
1152
- "description": "Force the path and name of output report file. Must end with .csv",
1153
- "name": "outputfile",
1154
- "hasDynamicHelp": false,
1155
- "multiple": false,
1156
- "type": "option"
1157
- },
1158
1153
  "websocket": {
1159
1154
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1160
1155
  "name": "websocket",
@@ -1165,59 +1160,45 @@
1165
1160
  "skipauth": {
1166
1161
  "description": "Skip authentication check when a default username is required",
1167
1162
  "name": "skipauth",
1168
- "allowNo": false,
1169
- "type": "boolean"
1170
- },
1171
- "target-org": {
1172
- "aliases": [
1173
- "targetusername",
1174
- "u"
1175
- ],
1176
- "char": "o",
1177
- "deprecateAliases": true,
1178
- "name": "target-org",
1179
- "noCacheDefault": true,
1180
- "summary": "Username or alias of the target org.",
1181
- "hasDynamicHelp": true,
1182
- "multiple": false,
1183
- "type": "option"
1163
+ "allowNo": false,
1164
+ "type": "boolean"
1184
1165
  }
1185
1166
  },
1186
- "hasDynamicHelp": true,
1167
+ "hasDynamicHelp": false,
1187
1168
  "hiddenAliases": [],
1188
- "id": "hardis:lint:metadatastatus",
1169
+ "id": "hardis:doc:override-prompts",
1189
1170
  "pluginAlias": "sfdx-hardis",
1190
1171
  "pluginName": "sfdx-hardis",
1191
1172
  "pluginType": "core",
1192
1173
  "strict": true,
1193
1174
  "enableJsonFlag": true,
1194
- "title": "check inactive metadatas",
1195
- "supportsDevhubUsername": false,
1196
- "requiresProject": true,
1175
+ "title": "Override AI Prompt Templates",
1176
+ "requiresProject": false,
1197
1177
  "isESM": true,
1198
1178
  "relativePath": [
1199
1179
  "lib",
1200
1180
  "commands",
1201
1181
  "hardis",
1202
- "lint",
1203
- "metadatastatus.js"
1182
+ "doc",
1183
+ "override-prompts.js"
1204
1184
  ],
1205
1185
  "aliasPermutations": [],
1206
1186
  "permutations": [
1207
- "hardis:lint:metadatastatus",
1208
- "lint:hardis:metadatastatus",
1209
- "lint:metadatastatus:hardis",
1210
- "hardis:metadatastatus:lint",
1211
- "metadatastatus:hardis:lint",
1212
- "metadatastatus:lint:hardis"
1187
+ "hardis:doc:override-prompts",
1188
+ "doc:hardis:override-prompts",
1189
+ "doc:override-prompts:hardis",
1190
+ "hardis:override-prompts:doc",
1191
+ "override-prompts:hardis:doc",
1192
+ "override-prompts:doc:hardis"
1213
1193
  ]
1214
1194
  },
1215
- "hardis:lint:missingattributes": {
1195
+ "hardis:doc:packagexml2markdown": {
1216
1196
  "aliases": [],
1217
1197
  "args": {},
1218
- "description": "Check if elements(custom fields) aren't description",
1198
+ "description": "Generates a markdown documentation from a package.xml file",
1219
1199
  "examples": [
1220
- "$ sf hardis:lint:missingattributes"
1200
+ "$ sf hardis:doc:packagexml2markdown",
1201
+ "$ sf hardis:doc:packagexml2markdown --inputfile manifest/package-all.xml"
1221
1202
  ],
1222
1203
  "flags": {
1223
1204
  "json": {
@@ -1235,21 +1216,29 @@
1235
1216
  "multiple": false,
1236
1217
  "type": "option"
1237
1218
  },
1238
- "debug": {
1239
- "char": "d",
1240
- "description": "Activate debug mode (more logs)",
1241
- "name": "debug",
1242
- "allowNo": false,
1243
- "type": "boolean"
1219
+ "inputfile": {
1220
+ "char": "x",
1221
+ "description": "Path to package.xml file. If not specified, the command will look in manifest folder",
1222
+ "name": "inputfile",
1223
+ "hasDynamicHelp": false,
1224
+ "multiple": false,
1225
+ "type": "option"
1244
1226
  },
1245
1227
  "outputfile": {
1246
1228
  "char": "f",
1247
- "description": "Force the path and name of output report file. Must end with .csv",
1229
+ "description": "Force the path and name of output report file. Must end with .md",
1248
1230
  "name": "outputfile",
1249
1231
  "hasDynamicHelp": false,
1250
1232
  "multiple": false,
1251
1233
  "type": "option"
1252
1234
  },
1235
+ "debug": {
1236
+ "char": "d",
1237
+ "description": "Activate debug mode (more logs)",
1238
+ "name": "debug",
1239
+ "allowNo": false,
1240
+ "type": "boolean"
1241
+ },
1253
1242
  "websocket": {
1254
1243
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1255
1244
  "name": "websocket",
@@ -1280,39 +1269,40 @@
1280
1269
  },
1281
1270
  "hasDynamicHelp": true,
1282
1271
  "hiddenAliases": [],
1283
- "id": "hardis:lint:missingattributes",
1272
+ "id": "hardis:doc:packagexml2markdown",
1284
1273
  "pluginAlias": "sfdx-hardis",
1285
1274
  "pluginName": "sfdx-hardis",
1286
1275
  "pluginType": "core",
1287
1276
  "strict": true,
1288
1277
  "enableJsonFlag": true,
1289
- "title": "check missing description on custom fields",
1290
- "supportsDevhubUsername": false,
1291
- "requiresProject": true,
1278
+ "title": "PackageXml to Markdown",
1279
+ "requiresProject": false,
1292
1280
  "isESM": true,
1293
1281
  "relativePath": [
1294
1282
  "lib",
1295
1283
  "commands",
1296
1284
  "hardis",
1297
- "lint",
1298
- "missingattributes.js"
1285
+ "doc",
1286
+ "packagexml2markdown.js"
1299
1287
  ],
1300
1288
  "aliasPermutations": [],
1301
1289
  "permutations": [
1302
- "hardis:lint:missingattributes",
1303
- "lint:hardis:missingattributes",
1304
- "lint:missingattributes:hardis",
1305
- "hardis:missingattributes:lint",
1306
- "missingattributes:hardis:lint",
1307
- "missingattributes:lint:hardis"
1290
+ "hardis:doc:packagexml2markdown",
1291
+ "doc:hardis:packagexml2markdown",
1292
+ "doc:packagexml2markdown:hardis",
1293
+ "hardis:packagexml2markdown:doc",
1294
+ "packagexml2markdown:hardis:doc",
1295
+ "packagexml2markdown:doc:hardis"
1308
1296
  ]
1309
1297
  },
1310
- "hardis:lint:unusedmetadatas": {
1298
+ "hardis:doc:project2markdown": {
1311
1299
  "aliases": [],
1312
1300
  "args": {},
1313
- "description": "Check if elements (custom labels and custom permissions) are used in the project\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-metadata/) and can output Grafana, Slack and MsTeams Notifications.\n ",
1301
+ "description": "Generates a markdown documentation from a SFDX project\n\n- Objects (with fields, validation rules, relationships and dependencies)\n- Automations\n - Approval Processes\n - Assignment Rules\n - AutoResponse Rules\n - Escalation Rules\n - Flows\n- Authorizations\n - Profiles\n - Permission Set Groups\n - Permission Sets\n- Code\n - Apex\n - Lightning Web Components\n- Lightning Pages\n- Packages\n- SFDX-Hardis Config\n- Branches & Orgs\n- Manifests\n\nCan work on any sfdx project, no need for it to be a sfdx-hardis flavored one.\n\nGenerates markdown files will be written in **docs** folder (except README.md where a link to doc index is added)\n\n- You can customize the pages following [mkdocs-material setup documentation](https://squidfunk.github.io/mkdocs-material/setup/)\n- You can manually add new markdown files in the \"docs\" folder to extend this documentation and add references to them in \"mkdocs.yml\"\n- You can also add images in folder \"docs/assets\" and embed them in markdown files.\n\nTo read Flow documentations if your markdown reader doesn't handle MermaidJS syntax, this command could require @mermaid-js/mermaid-cli\n\n- Run `npm install @mermaid-js/mermaid-cli --global` if puppeteer works in your environment\n- It can also be run as a docker image\n\nBoth modes will be tried by default, but you can also force one of them by defining environment variable `MERMAID_MODES=docker` or `MERMAID_MODES=cli`\n\n_sfdx-hardis docker image is alpine-based and does not succeed to run mermaid/puppeteer: if you can help, please submit a PR !_\n\nIf Flow history doc always display a single state, you probably need to update your workflow configuration:\n\n- on Gitlab: Env variable [`GIT_FETCH_EXTRA_FLAGS: --depth 10000`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.gitlab-ci.yml#L11)\n- on GitHub: [`fetch-depth: 0`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.github/workflows/org-monitoring.yml#L58)\n- on Azure: [`fetchDepth: \"0\"`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/azure-pipelines.yml#L39)\n- on Bitbucket: [`step: clone: depth: full`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/bitbucket-pipelines.yml#L18)\n\n![Screenshot flow doc](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-flow-doc.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-project-doc.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-project-doc-2.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-object-diagram.jpg)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-project-doc-profile.gif)\n\n![Screenshot project documentation](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-doc-apex.png)\n\nIf it is a sfdx-hardis CI/CD project, a diagram of the branches and orgs strategy will be generated.\n\n![](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/screenshot-doc-branches-strategy.jpg)\n\nIf [AI integration](https://sfdx-hardis.cloudity.com/salesforce-ai-setup/) is configured, documentation will contain a summary of the Flow.\n\n- Use variable PROMPTS_LANGUAGE (ex: PROMPTS_LANGUAGE=fr) to force language for LLM calls (default:en)\n\nIf you have a complex strategy, you might need to input property **mergeTargets** in branch-scoped sfdx-hardis.yml file to have a correct diagram.\n\nDefine DO_NOT_OVERWRITE_INDEX_MD=true to avoid overwriting the index.md file in docs folder, useful if you want to keep your own index.md file.\n\n## Doc HTML Pages\n\nTo read the documentation as HTML pages, run the following code (you need [**Python**](https://www.python.org/downloads/) on your computer)\n\n```python\npip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || python -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || py -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists\nmkdocs serve -v || python -m mkdocs serve -v || py -m mkdocs serve -v\n```\n\nTo just generate HTML pages that you can host anywhere, run `mkdocs build -v || python -m mkdocs build -v || py -m mkdocs build -v`\n\n",
1314
1302
  "examples": [
1315
- "$ sf hardis:lint:unusedmetadatas"
1303
+ "$ sf hardis:doc:project2markdown",
1304
+ "$ sf hardis:doc:project2markdown --with-history",
1305
+ "$ sf hardis:doc:project2markdown --with-history --pdf"
1316
1306
  ],
1317
1307
  "flags": {
1318
1308
  "json": {
@@ -1330,6 +1320,24 @@
1330
1320
  "multiple": false,
1331
1321
  "type": "option"
1332
1322
  },
1323
+ "diff-only": {
1324
+ "description": "Generate documentation only for changed files (used for monitoring)",
1325
+ "name": "diff-only",
1326
+ "allowNo": false,
1327
+ "type": "boolean"
1328
+ },
1329
+ "with-history": {
1330
+ "description": "Generate a markdown file with the history diff of the Flow",
1331
+ "name": "with-history",
1332
+ "allowNo": false,
1333
+ "type": "boolean"
1334
+ },
1335
+ "pdf": {
1336
+ "description": "Also generate the documentation in PDF format",
1337
+ "name": "pdf",
1338
+ "allowNo": false,
1339
+ "type": "boolean"
1340
+ },
1333
1341
  "debug": {
1334
1342
  "char": "d",
1335
1343
  "description": "Activate debug mode (more logs)",
@@ -1337,14 +1345,6 @@
1337
1345
  "allowNo": false,
1338
1346
  "type": "boolean"
1339
1347
  },
1340
- "outputfile": {
1341
- "char": "f",
1342
- "description": "Force the path and name of output report file. Must end with .csv",
1343
- "name": "outputfile",
1344
- "hasDynamicHelp": false,
1345
- "multiple": false,
1346
- "type": "option"
1347
- },
1348
1348
  "websocket": {
1349
1349
  "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
1350
1350
  "name": "websocket",
@@ -1375,31 +1375,31 @@
1375
1375
  },
1376
1376
  "hasDynamicHelp": true,
1377
1377
  "hiddenAliases": [],
1378
- "id": "hardis:lint:unusedmetadatas",
1378
+ "id": "hardis:doc:project2markdown",
1379
1379
  "pluginAlias": "sfdx-hardis",
1380
1380
  "pluginName": "sfdx-hardis",
1381
1381
  "pluginType": "core",
1382
1382
  "strict": true,
1383
1383
  "enableJsonFlag": true,
1384
- "title": "check unused labels and custom permissions",
1385
- "supportsDevhubUsername": false,
1384
+ "title": "SFDX Project to Markdown",
1385
+ "htmlInstructions": "## Doc HTML Pages\n\nTo read the documentation as HTML pages, run the following code (you need [**Python**](https://www.python.org/downloads/) on your computer)\n\n```python\npip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || python -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists || py -m pip install mkdocs-material mkdocs-exclude-search mdx_truly_sane_lists\nmkdocs serve -v || python -m mkdocs serve -v || py -m mkdocs serve -v\n```\n\nTo just generate HTML pages that you can host anywhere, run `mkdocs build -v || python -m mkdocs build -v || py -m mkdocs build -v`\n",
1386
1386
  "requiresProject": true,
1387
1387
  "isESM": true,
1388
1388
  "relativePath": [
1389
1389
  "lib",
1390
1390
  "commands",
1391
1391
  "hardis",
1392
- "lint",
1393
- "unusedmetadatas.js"
1392
+ "doc",
1393
+ "project2markdown.js"
1394
1394
  ],
1395
1395
  "aliasPermutations": [],
1396
1396
  "permutations": [
1397
- "hardis:lint:unusedmetadatas",
1398
- "lint:hardis:unusedmetadatas",
1399
- "lint:unusedmetadatas:hardis",
1400
- "hardis:unusedmetadatas:lint",
1401
- "unusedmetadatas:hardis:lint",
1402
- "unusedmetadatas:lint:hardis"
1397
+ "hardis:doc:project2markdown",
1398
+ "doc:hardis:project2markdown",
1399
+ "doc:project2markdown:hardis",
1400
+ "hardis:project2markdown:doc",
1401
+ "project2markdown:hardis:doc",
1402
+ "project2markdown:doc:hardis"
1403
1403
  ]
1404
1404
  },
1405
1405
  "hardis:mdapi:deploy": {
@@ -4394,6 +4394,135 @@
4394
4394
  "ws:work:hardis"
4395
4395
  ]
4396
4396
  },
4397
+ "hardis:git:pull-requests:extract": {
4398
+ "aliases": [],
4399
+ "args": {},
4400
+ "description": "Extract pull requests with filtering criteria",
4401
+ "examples": [
4402
+ "$ sf hardis:git:pull-requests:extract",
4403
+ "$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
4404
+ ],
4405
+ "flags": {
4406
+ "json": {
4407
+ "description": "Format output as json.",
4408
+ "helpGroup": "GLOBAL",
4409
+ "name": "json",
4410
+ "allowNo": false,
4411
+ "type": "boolean"
4412
+ },
4413
+ "flags-dir": {
4414
+ "helpGroup": "GLOBAL",
4415
+ "name": "flags-dir",
4416
+ "summary": "Import flag values from a directory.",
4417
+ "hasDynamicHelp": false,
4418
+ "multiple": false,
4419
+ "type": "option"
4420
+ },
4421
+ "target-branch": {
4422
+ "char": "t",
4423
+ "description": "Target branch of PRs",
4424
+ "name": "target-branch",
4425
+ "hasDynamicHelp": false,
4426
+ "multiple": false,
4427
+ "type": "option"
4428
+ },
4429
+ "status": {
4430
+ "char": "x",
4431
+ "description": "Status of the PR",
4432
+ "name": "status",
4433
+ "hasDynamicHelp": false,
4434
+ "multiple": false,
4435
+ "options": [
4436
+ "open",
4437
+ "merged",
4438
+ "abandoned"
4439
+ ],
4440
+ "type": "option"
4441
+ },
4442
+ "min-date": {
4443
+ "char": "m",
4444
+ "description": "Minimum date for PR",
4445
+ "name": "min-date",
4446
+ "hasDynamicHelp": false,
4447
+ "multiple": false,
4448
+ "type": "option"
4449
+ },
4450
+ "outputfile": {
4451
+ "char": "f",
4452
+ "description": "Force the path and name of output report file. Must end with .csv",
4453
+ "name": "outputfile",
4454
+ "hasDynamicHelp": false,
4455
+ "multiple": false,
4456
+ "type": "option"
4457
+ },
4458
+ "debug": {
4459
+ "char": "d",
4460
+ "description": "Activate debug mode (more logs)",
4461
+ "name": "debug",
4462
+ "allowNo": false,
4463
+ "type": "boolean"
4464
+ },
4465
+ "websocket": {
4466
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
4467
+ "name": "websocket",
4468
+ "hasDynamicHelp": false,
4469
+ "multiple": false,
4470
+ "type": "option"
4471
+ },
4472
+ "skipauth": {
4473
+ "description": "Skip authentication check when a default username is required",
4474
+ "name": "skipauth",
4475
+ "allowNo": false,
4476
+ "type": "boolean"
4477
+ }
4478
+ },
4479
+ "hasDynamicHelp": false,
4480
+ "hiddenAliases": [],
4481
+ "id": "hardis:git:pull-requests:extract",
4482
+ "pluginAlias": "sfdx-hardis",
4483
+ "pluginName": "sfdx-hardis",
4484
+ "pluginType": "core",
4485
+ "strict": true,
4486
+ "enableJsonFlag": true,
4487
+ "title": "Extract pull requests",
4488
+ "requiresProject": true,
4489
+ "isESM": true,
4490
+ "relativePath": [
4491
+ "lib",
4492
+ "commands",
4493
+ "hardis",
4494
+ "git",
4495
+ "pull-requests",
4496
+ "extract.js"
4497
+ ],
4498
+ "aliasPermutations": [],
4499
+ "permutations": [
4500
+ "hardis:git:pull-requests:extract",
4501
+ "git:hardis:pull-requests:extract",
4502
+ "git:pull-requests:hardis:extract",
4503
+ "git:pull-requests:extract:hardis",
4504
+ "hardis:pull-requests:git:extract",
4505
+ "pull-requests:hardis:git:extract",
4506
+ "pull-requests:git:hardis:extract",
4507
+ "pull-requests:git:extract:hardis",
4508
+ "hardis:pull-requests:extract:git",
4509
+ "pull-requests:hardis:extract:git",
4510
+ "pull-requests:extract:hardis:git",
4511
+ "pull-requests:extract:git:hardis",
4512
+ "hardis:git:extract:pull-requests",
4513
+ "git:hardis:extract:pull-requests",
4514
+ "git:extract:hardis:pull-requests",
4515
+ "git:extract:pull-requests:hardis",
4516
+ "hardis:extract:git:pull-requests",
4517
+ "extract:hardis:git:pull-requests",
4518
+ "extract:git:hardis:pull-requests",
4519
+ "extract:git:pull-requests:hardis",
4520
+ "hardis:extract:pull-requests:git",
4521
+ "extract:hardis:pull-requests:git",
4522
+ "extract:pull-requests:hardis:git",
4523
+ "extract:pull-requests:git:hardis"
4524
+ ]
4525
+ },
4397
4526
  "hardis:doc:extract:permsetgroups": {
4398
4527
  "aliases": [],
4399
4528
  "args": {},
@@ -4584,135 +4713,6 @@
4584
4713
  "generate:plugin:doc:hardis"
4585
4714
  ]
4586
4715
  },
4587
- "hardis:git:pull-requests:extract": {
4588
- "aliases": [],
4589
- "args": {},
4590
- "description": "Extract pull requests with filtering criteria",
4591
- "examples": [
4592
- "$ sf hardis:git:pull-requests:extract",
4593
- "$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
4594
- ],
4595
- "flags": {
4596
- "json": {
4597
- "description": "Format output as json.",
4598
- "helpGroup": "GLOBAL",
4599
- "name": "json",
4600
- "allowNo": false,
4601
- "type": "boolean"
4602
- },
4603
- "flags-dir": {
4604
- "helpGroup": "GLOBAL",
4605
- "name": "flags-dir",
4606
- "summary": "Import flag values from a directory.",
4607
- "hasDynamicHelp": false,
4608
- "multiple": false,
4609
- "type": "option"
4610
- },
4611
- "target-branch": {
4612
- "char": "t",
4613
- "description": "Target branch of PRs",
4614
- "name": "target-branch",
4615
- "hasDynamicHelp": false,
4616
- "multiple": false,
4617
- "type": "option"
4618
- },
4619
- "status": {
4620
- "char": "x",
4621
- "description": "Status of the PR",
4622
- "name": "status",
4623
- "hasDynamicHelp": false,
4624
- "multiple": false,
4625
- "options": [
4626
- "open",
4627
- "merged",
4628
- "abandoned"
4629
- ],
4630
- "type": "option"
4631
- },
4632
- "min-date": {
4633
- "char": "m",
4634
- "description": "Minimum date for PR",
4635
- "name": "min-date",
4636
- "hasDynamicHelp": false,
4637
- "multiple": false,
4638
- "type": "option"
4639
- },
4640
- "outputfile": {
4641
- "char": "f",
4642
- "description": "Force the path and name of output report file. Must end with .csv",
4643
- "name": "outputfile",
4644
- "hasDynamicHelp": false,
4645
- "multiple": false,
4646
- "type": "option"
4647
- },
4648
- "debug": {
4649
- "char": "d",
4650
- "description": "Activate debug mode (more logs)",
4651
- "name": "debug",
4652
- "allowNo": false,
4653
- "type": "boolean"
4654
- },
4655
- "websocket": {
4656
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
4657
- "name": "websocket",
4658
- "hasDynamicHelp": false,
4659
- "multiple": false,
4660
- "type": "option"
4661
- },
4662
- "skipauth": {
4663
- "description": "Skip authentication check when a default username is required",
4664
- "name": "skipauth",
4665
- "allowNo": false,
4666
- "type": "boolean"
4667
- }
4668
- },
4669
- "hasDynamicHelp": false,
4670
- "hiddenAliases": [],
4671
- "id": "hardis:git:pull-requests:extract",
4672
- "pluginAlias": "sfdx-hardis",
4673
- "pluginName": "sfdx-hardis",
4674
- "pluginType": "core",
4675
- "strict": true,
4676
- "enableJsonFlag": true,
4677
- "title": "Extract pull requests",
4678
- "requiresProject": true,
4679
- "isESM": true,
4680
- "relativePath": [
4681
- "lib",
4682
- "commands",
4683
- "hardis",
4684
- "git",
4685
- "pull-requests",
4686
- "extract.js"
4687
- ],
4688
- "aliasPermutations": [],
4689
- "permutations": [
4690
- "hardis:git:pull-requests:extract",
4691
- "git:hardis:pull-requests:extract",
4692
- "git:pull-requests:hardis:extract",
4693
- "git:pull-requests:extract:hardis",
4694
- "hardis:pull-requests:git:extract",
4695
- "pull-requests:hardis:git:extract",
4696
- "pull-requests:git:hardis:extract",
4697
- "pull-requests:git:extract:hardis",
4698
- "hardis:pull-requests:extract:git",
4699
- "pull-requests:hardis:extract:git",
4700
- "pull-requests:extract:hardis:git",
4701
- "pull-requests:extract:git:hardis",
4702
- "hardis:git:extract:pull-requests",
4703
- "git:hardis:extract:pull-requests",
4704
- "git:extract:hardis:pull-requests",
4705
- "git:extract:pull-requests:hardis",
4706
- "hardis:extract:git:pull-requests",
4707
- "extract:hardis:git:pull-requests",
4708
- "extract:git:hardis:pull-requests",
4709
- "extract:git:pull-requests:hardis",
4710
- "hardis:extract:pull-requests:git",
4711
- "extract:hardis:pull-requests:git",
4712
- "extract:pull-requests:hardis:git",
4713
- "extract:pull-requests:git:hardis"
4714
- ]
4715
- },
4716
4716
  "hardis:org:community:update": {
4717
4717
  "aliases": [],
4718
4718
  "args": {},
@@ -8844,11 +8844,12 @@
8844
8844
  "hardis:project:audit:apiversion": {
8845
8845
  "aliases": [],
8846
8846
  "args": {},
8847
- "description": "This command detects metadatas whose apiVersion is lower than parameter --minimumapiversion\n\n It can also fix the apiVersions with the latest one, if parameter --fix is sent\n\n Example to handle [ApexClass / Trigger & ApexPage mandatory version upgrade](https://help.salesforce.com/s/articleView?id=sf.admin_locales_update_api.htm&type=5) :\n \n `sf hardis:project:audit:apiversion --metadatatype ApexClass,ApexTrigger,ApexPage --minimumapiversion 45.0 --fix`\n ",
8847
+ "description": "This command identifies metadata with an apiVersion lower than the value specified in the --minimumapiversion parameter.\n\n It can also update the apiVersion to a specific value:\n - When --fix parameter is provided (updates to minimumapiversion)\n - When --newapiversion is specified (updates to that version)\n\n Example to handle [ApexClass / Trigger & ApexPage mandatory version upgrade](https://help.salesforce.com/s/articleView?id=sf.admin_locales_update_api.htm&type=5) :\n \n `sf hardis:project:audit:apiversion --metadatatype ApexClass,ApexTrigger,ApexPage --minimumapiversion 45 --newapiversion 50`\n ",
8848
8848
  "examples": [
8849
8849
  "$ sf hardis:project:audit:apiversion",
8850
8850
  "$ sf hardis:project:audit:apiversion --metadatatype ApexClass,ApexTrigger,ApexPage --minimumapiversion 45",
8851
- "$ sf hardis:project:audit:apiversion --metadatatype ApexClass,ApexTrigger,ApexPage --minimumapiversion 45 --fix"
8851
+ "$ sf hardis:project:audit:apiversion --metadatatype ApexClass,ApexTrigger,ApexPage --minimumapiversion 45 --fix",
8852
+ "$ sf hardis:project:audit:apiversion --metadatatype ApexClass,ApexTrigger,ApexPage --minimumapiversion 45 --newapiversion 50"
8852
8853
  ],
8853
8854
  "flags": {
8854
8855
  "json": {
@@ -8910,10 +8911,18 @@
8910
8911
  "type": "option"
8911
8912
  },
8912
8913
  "fix": {
8913
- "description": "Fix ApiVersion on specified Metadata Types.",
8914
+ "description": "Automatically update API versions in files that are below the minimum version threshold to match the minimum version",
8914
8915
  "name": "fix",
8915
8916
  "allowNo": false,
8916
8917
  "type": "boolean"
8918
+ },
8919
+ "newapiversion": {
8920
+ "char": "n",
8921
+ "description": "Define an API version value to apply when updating files",
8922
+ "name": "newapiversion",
8923
+ "hasDynamicHelp": false,
8924
+ "multiple": false,
8925
+ "type": "option"
8917
8926
  }
8918
8927
  },
8919
8928
  "hasDynamicHelp": false,
@@ -9129,128 +9138,37 @@
9129
9138
  "aliasPermutations": [],
9130
9139
  "permutations": [
9131
9140
  "hardis:project:audit:duplicatefiles",
9132
- "project:hardis:audit:duplicatefiles",
9133
- "project:audit:hardis:duplicatefiles",
9134
- "project:audit:duplicatefiles:hardis",
9135
- "hardis:audit:project:duplicatefiles",
9136
- "audit:hardis:project:duplicatefiles",
9137
- "audit:project:hardis:duplicatefiles",
9138
- "audit:project:duplicatefiles:hardis",
9139
- "hardis:audit:duplicatefiles:project",
9140
- "audit:hardis:duplicatefiles:project",
9141
- "audit:duplicatefiles:hardis:project",
9142
- "audit:duplicatefiles:project:hardis",
9143
- "hardis:project:duplicatefiles:audit",
9144
- "project:hardis:duplicatefiles:audit",
9145
- "project:duplicatefiles:hardis:audit",
9146
- "project:duplicatefiles:audit:hardis",
9147
- "hardis:duplicatefiles:project:audit",
9148
- "duplicatefiles:hardis:project:audit",
9149
- "duplicatefiles:project:hardis:audit",
9150
- "duplicatefiles:project:audit:hardis",
9151
- "hardis:duplicatefiles:audit:project",
9152
- "duplicatefiles:hardis:audit:project",
9153
- "duplicatefiles:audit:hardis:project",
9154
- "duplicatefiles:audit:project:hardis"
9155
- ]
9156
- },
9157
- "hardis:project:audit:remotesites": {
9158
- "aliases": [],
9159
- "args": {},
9160
- "description": "Generate list of remote sites",
9161
- "examples": [
9162
- "$ sf hardis:project:audit:remotesites"
9163
- ],
9164
- "flags": {
9165
- "json": {
9166
- "description": "Format output as json.",
9167
- "helpGroup": "GLOBAL",
9168
- "name": "json",
9169
- "allowNo": false,
9170
- "type": "boolean"
9171
- },
9172
- "flags-dir": {
9173
- "helpGroup": "GLOBAL",
9174
- "name": "flags-dir",
9175
- "summary": "Import flag values from a directory.",
9176
- "hasDynamicHelp": false,
9177
- "multiple": false,
9178
- "type": "option"
9179
- },
9180
- "debug": {
9181
- "char": "d",
9182
- "description": "Activate debug mode (more logs)",
9183
- "name": "debug",
9184
- "allowNo": false,
9185
- "type": "boolean"
9186
- },
9187
- "websocket": {
9188
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
9189
- "name": "websocket",
9190
- "hasDynamicHelp": false,
9191
- "multiple": false,
9192
- "type": "option"
9193
- },
9194
- "skipauth": {
9195
- "description": "Skip authentication check when a default username is required",
9196
- "name": "skipauth",
9197
- "allowNo": false,
9198
- "type": "boolean"
9199
- }
9200
- },
9201
- "hasDynamicHelp": false,
9202
- "hiddenAliases": [],
9203
- "id": "hardis:project:audit:remotesites",
9204
- "pluginAlias": "sfdx-hardis",
9205
- "pluginName": "sfdx-hardis",
9206
- "pluginType": "core",
9207
- "strict": true,
9208
- "enableJsonFlag": true,
9209
- "title": "Audit Remote Sites",
9210
- "requiresProject": true,
9211
- "isESM": true,
9212
- "relativePath": [
9213
- "lib",
9214
- "commands",
9215
- "hardis",
9216
- "project",
9217
- "audit",
9218
- "remotesites.js"
9219
- ],
9220
- "aliasPermutations": [],
9221
- "permutations": [
9222
- "hardis:project:audit:remotesites",
9223
- "project:hardis:audit:remotesites",
9224
- "project:audit:hardis:remotesites",
9225
- "project:audit:remotesites:hardis",
9226
- "hardis:audit:project:remotesites",
9227
- "audit:hardis:project:remotesites",
9228
- "audit:project:hardis:remotesites",
9229
- "audit:project:remotesites:hardis",
9230
- "hardis:audit:remotesites:project",
9231
- "audit:hardis:remotesites:project",
9232
- "audit:remotesites:hardis:project",
9233
- "audit:remotesites:project:hardis",
9234
- "hardis:project:remotesites:audit",
9235
- "project:hardis:remotesites:audit",
9236
- "project:remotesites:hardis:audit",
9237
- "project:remotesites:audit:hardis",
9238
- "hardis:remotesites:project:audit",
9239
- "remotesites:hardis:project:audit",
9240
- "remotesites:project:hardis:audit",
9241
- "remotesites:project:audit:hardis",
9242
- "hardis:remotesites:audit:project",
9243
- "remotesites:hardis:audit:project",
9244
- "remotesites:audit:hardis:project",
9245
- "remotesites:audit:project:hardis"
9141
+ "project:hardis:audit:duplicatefiles",
9142
+ "project:audit:hardis:duplicatefiles",
9143
+ "project:audit:duplicatefiles:hardis",
9144
+ "hardis:audit:project:duplicatefiles",
9145
+ "audit:hardis:project:duplicatefiles",
9146
+ "audit:project:hardis:duplicatefiles",
9147
+ "audit:project:duplicatefiles:hardis",
9148
+ "hardis:audit:duplicatefiles:project",
9149
+ "audit:hardis:duplicatefiles:project",
9150
+ "audit:duplicatefiles:hardis:project",
9151
+ "audit:duplicatefiles:project:hardis",
9152
+ "hardis:project:duplicatefiles:audit",
9153
+ "project:hardis:duplicatefiles:audit",
9154
+ "project:duplicatefiles:hardis:audit",
9155
+ "project:duplicatefiles:audit:hardis",
9156
+ "hardis:duplicatefiles:project:audit",
9157
+ "duplicatefiles:hardis:project:audit",
9158
+ "duplicatefiles:project:hardis:audit",
9159
+ "duplicatefiles:project:audit:hardis",
9160
+ "hardis:duplicatefiles:audit:project",
9161
+ "duplicatefiles:hardis:audit:project",
9162
+ "duplicatefiles:audit:hardis:project",
9163
+ "duplicatefiles:audit:project:hardis"
9246
9164
  ]
9247
9165
  },
9248
- "hardis:project:configure:auth": {
9166
+ "hardis:project:audit:remotesites": {
9249
9167
  "aliases": [],
9250
9168
  "args": {},
9251
- "description": "Configure authentication from git branch to target org",
9169
+ "description": "Generate list of remote sites",
9252
9170
  "examples": [
9253
- "$ sf hardis:project:configure:auth"
9171
+ "$ sf hardis:project:audit:remotesites"
9254
9172
  ],
9255
9173
  "flags": {
9256
9174
  "json": {
@@ -9268,13 +9186,6 @@
9268
9186
  "multiple": false,
9269
9187
  "type": "option"
9270
9188
  },
9271
- "devhub": {
9272
- "char": "b",
9273
- "description": "Configure project DevHub",
9274
- "name": "devhub",
9275
- "allowNo": false,
9276
- "type": "boolean"
9277
- },
9278
9189
  "debug": {
9279
9190
  "char": "d",
9280
9191
  "description": "Activate debug mode (more logs)",
@@ -9294,84 +9205,53 @@
9294
9205
  "name": "skipauth",
9295
9206
  "allowNo": false,
9296
9207
  "type": "boolean"
9297
- },
9298
- "target-org": {
9299
- "aliases": [
9300
- "targetusername",
9301
- "u"
9302
- ],
9303
- "char": "o",
9304
- "deprecateAliases": true,
9305
- "name": "target-org",
9306
- "noCacheDefault": true,
9307
- "summary": "Username or alias of the target org.",
9308
- "hasDynamicHelp": true,
9309
- "multiple": false,
9310
- "type": "option"
9311
- },
9312
- "target-dev-hub": {
9313
- "aliases": [
9314
- "targetdevhubusername"
9315
- ],
9316
- "char": "v",
9317
- "deprecateAliases": true,
9318
- "name": "target-dev-hub",
9319
- "noCacheDefault": true,
9320
- "required": false,
9321
- "summary": "Username or alias of the Dev Hub org.",
9322
- "hasDynamicHelp": true,
9323
- "multiple": false,
9324
- "type": "option"
9325
9208
  }
9326
9209
  },
9327
- "hasDynamicHelp": true,
9210
+ "hasDynamicHelp": false,
9328
9211
  "hiddenAliases": [],
9329
- "id": "hardis:project:configure:auth",
9212
+ "id": "hardis:project:audit:remotesites",
9330
9213
  "pluginAlias": "sfdx-hardis",
9331
9214
  "pluginName": "sfdx-hardis",
9332
9215
  "pluginType": "core",
9333
9216
  "strict": true,
9334
9217
  "enableJsonFlag": true,
9335
- "title": "Configure authentication",
9336
- "requiresProject": false,
9337
- "requiresDependencies": [
9338
- "openssl"
9339
- ],
9218
+ "title": "Audit Remote Sites",
9219
+ "requiresProject": true,
9340
9220
  "isESM": true,
9341
9221
  "relativePath": [
9342
9222
  "lib",
9343
9223
  "commands",
9344
9224
  "hardis",
9345
9225
  "project",
9346
- "configure",
9347
- "auth.js"
9226
+ "audit",
9227
+ "remotesites.js"
9348
9228
  ],
9349
9229
  "aliasPermutations": [],
9350
9230
  "permutations": [
9351
- "hardis:project:configure:auth",
9352
- "project:hardis:configure:auth",
9353
- "project:configure:hardis:auth",
9354
- "project:configure:auth:hardis",
9355
- "hardis:configure:project:auth",
9356
- "configure:hardis:project:auth",
9357
- "configure:project:hardis:auth",
9358
- "configure:project:auth:hardis",
9359
- "hardis:configure:auth:project",
9360
- "configure:hardis:auth:project",
9361
- "configure:auth:hardis:project",
9362
- "configure:auth:project:hardis",
9363
- "hardis:project:auth:configure",
9364
- "project:hardis:auth:configure",
9365
- "project:auth:hardis:configure",
9366
- "project:auth:configure:hardis",
9367
- "hardis:auth:project:configure",
9368
- "auth:hardis:project:configure",
9369
- "auth:project:hardis:configure",
9370
- "auth:project:configure:hardis",
9371
- "hardis:auth:configure:project",
9372
- "auth:hardis:configure:project",
9373
- "auth:configure:hardis:project",
9374
- "auth:configure:project:hardis"
9231
+ "hardis:project:audit:remotesites",
9232
+ "project:hardis:audit:remotesites",
9233
+ "project:audit:hardis:remotesites",
9234
+ "project:audit:remotesites:hardis",
9235
+ "hardis:audit:project:remotesites",
9236
+ "audit:hardis:project:remotesites",
9237
+ "audit:project:hardis:remotesites",
9238
+ "audit:project:remotesites:hardis",
9239
+ "hardis:audit:remotesites:project",
9240
+ "audit:hardis:remotesites:project",
9241
+ "audit:remotesites:hardis:project",
9242
+ "audit:remotesites:project:hardis",
9243
+ "hardis:project:remotesites:audit",
9244
+ "project:hardis:remotesites:audit",
9245
+ "project:remotesites:hardis:audit",
9246
+ "project:remotesites:audit:hardis",
9247
+ "hardis:remotesites:project:audit",
9248
+ "remotesites:hardis:project:audit",
9249
+ "remotesites:project:hardis:audit",
9250
+ "remotesites:project:audit:hardis",
9251
+ "hardis:remotesites:audit:project",
9252
+ "remotesites:hardis:audit:project",
9253
+ "remotesites:audit:hardis:project",
9254
+ "remotesites:audit:project:hardis"
9375
9255
  ]
9376
9256
  },
9377
9257
  "hardis:project:clean:emptyitems": {
@@ -10859,6 +10739,135 @@
10859
10739
  "xml:clean:project:hardis"
10860
10740
  ]
10861
10741
  },
10742
+ "hardis:project:configure:auth": {
10743
+ "aliases": [],
10744
+ "args": {},
10745
+ "description": "Configure authentication from git branch to target org",
10746
+ "examples": [
10747
+ "$ sf hardis:project:configure:auth"
10748
+ ],
10749
+ "flags": {
10750
+ "json": {
10751
+ "description": "Format output as json.",
10752
+ "helpGroup": "GLOBAL",
10753
+ "name": "json",
10754
+ "allowNo": false,
10755
+ "type": "boolean"
10756
+ },
10757
+ "flags-dir": {
10758
+ "helpGroup": "GLOBAL",
10759
+ "name": "flags-dir",
10760
+ "summary": "Import flag values from a directory.",
10761
+ "hasDynamicHelp": false,
10762
+ "multiple": false,
10763
+ "type": "option"
10764
+ },
10765
+ "devhub": {
10766
+ "char": "b",
10767
+ "description": "Configure project DevHub",
10768
+ "name": "devhub",
10769
+ "allowNo": false,
10770
+ "type": "boolean"
10771
+ },
10772
+ "debug": {
10773
+ "char": "d",
10774
+ "description": "Activate debug mode (more logs)",
10775
+ "name": "debug",
10776
+ "allowNo": false,
10777
+ "type": "boolean"
10778
+ },
10779
+ "websocket": {
10780
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
10781
+ "name": "websocket",
10782
+ "hasDynamicHelp": false,
10783
+ "multiple": false,
10784
+ "type": "option"
10785
+ },
10786
+ "skipauth": {
10787
+ "description": "Skip authentication check when a default username is required",
10788
+ "name": "skipauth",
10789
+ "allowNo": false,
10790
+ "type": "boolean"
10791
+ },
10792
+ "target-org": {
10793
+ "aliases": [
10794
+ "targetusername",
10795
+ "u"
10796
+ ],
10797
+ "char": "o",
10798
+ "deprecateAliases": true,
10799
+ "name": "target-org",
10800
+ "noCacheDefault": true,
10801
+ "summary": "Username or alias of the target org.",
10802
+ "hasDynamicHelp": true,
10803
+ "multiple": false,
10804
+ "type": "option"
10805
+ },
10806
+ "target-dev-hub": {
10807
+ "aliases": [
10808
+ "targetdevhubusername"
10809
+ ],
10810
+ "char": "v",
10811
+ "deprecateAliases": true,
10812
+ "name": "target-dev-hub",
10813
+ "noCacheDefault": true,
10814
+ "required": false,
10815
+ "summary": "Username or alias of the Dev Hub org.",
10816
+ "hasDynamicHelp": true,
10817
+ "multiple": false,
10818
+ "type": "option"
10819
+ }
10820
+ },
10821
+ "hasDynamicHelp": true,
10822
+ "hiddenAliases": [],
10823
+ "id": "hardis:project:configure:auth",
10824
+ "pluginAlias": "sfdx-hardis",
10825
+ "pluginName": "sfdx-hardis",
10826
+ "pluginType": "core",
10827
+ "strict": true,
10828
+ "enableJsonFlag": true,
10829
+ "title": "Configure authentication",
10830
+ "requiresProject": false,
10831
+ "requiresDependencies": [
10832
+ "openssl"
10833
+ ],
10834
+ "isESM": true,
10835
+ "relativePath": [
10836
+ "lib",
10837
+ "commands",
10838
+ "hardis",
10839
+ "project",
10840
+ "configure",
10841
+ "auth.js"
10842
+ ],
10843
+ "aliasPermutations": [],
10844
+ "permutations": [
10845
+ "hardis:project:configure:auth",
10846
+ "project:hardis:configure:auth",
10847
+ "project:configure:hardis:auth",
10848
+ "project:configure:auth:hardis",
10849
+ "hardis:configure:project:auth",
10850
+ "configure:hardis:project:auth",
10851
+ "configure:project:hardis:auth",
10852
+ "configure:project:auth:hardis",
10853
+ "hardis:configure:auth:project",
10854
+ "configure:hardis:auth:project",
10855
+ "configure:auth:hardis:project",
10856
+ "configure:auth:project:hardis",
10857
+ "hardis:project:auth:configure",
10858
+ "project:hardis:auth:configure",
10859
+ "project:auth:hardis:configure",
10860
+ "project:auth:configure:hardis",
10861
+ "hardis:auth:project:configure",
10862
+ "auth:hardis:project:configure",
10863
+ "auth:project:hardis:configure",
10864
+ "auth:project:configure:hardis",
10865
+ "hardis:auth:configure:project",
10866
+ "auth:hardis:configure:project",
10867
+ "auth:configure:hardis:project",
10868
+ "auth:configure:project:hardis"
10869
+ ]
10870
+ },
10862
10871
  "hardis:project:convert:profilestopermsets": {
10863
10872
  "aliases": [],
10864
10873
  "args": {},
@@ -14805,5 +14814,5 @@
14805
14814
  ]
14806
14815
  }
14807
14816
  },
14808
- "version": "5.43.2"
14817
+ "version": "5.43.3"
14809
14818
  }