sfdx-hardis 6.1.3 → 6.1.4

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.
@@ -7611,274 +7611,6 @@
7611
7611
  "limits:monitor:org:hardis"
7612
7612
  ]
7613
7613
  },
7614
- "hardis:org:purge:apexlog": {
7615
- "aliases": [],
7616
- "args": {},
7617
- "description": "\n**Purges Apex debug logs from a Salesforce org.**\n\nThis command provides a quick and efficient way to clear out accumulated Apex debug logs from your Salesforce environment. This is particularly useful for:\n\n- **Storage Management:** Freeing up valuable data storage space in your Salesforce org.\n- **Performance Optimization:** Reducing the overhead associated with large volumes of debug logs.\n- **Troubleshooting:** Ensuring that new debug logs are generated cleanly without interference from old, irrelevant logs.\n\nKey functionalities:\n\n- **Log Identification:** Queries the `ApexLog` object to identify all existing debug logs.\n- **Confirmation Prompt:** Before deletion, it prompts for user confirmation, displaying the number of Apex logs that will be deleted.\n- **Bulk Deletion:** Uses the Salesforce Bulk API to efficiently delete a large number of Apex logs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Query:** It executes a SOQL query (`SELECT Id FROM ApexLog LIMIT 50000`) to retrieve the IDs of Apex logs to be deleted. The limit is set to 50,000 to handle large volumes of logs.\n- **CSV Export:** The retrieved log IDs are temporarily exported to a CSV file (`ApexLogsToDelete_*.csv`) in the `./tmp` directory.\n- **User Confirmation:** It uses the `prompts` library to ask for user confirmation before proceeding with the deletion, displaying the count of logs to be purged.\n- **Bulk API Deletion:** It then uses the Salesforce CLI's `sf data delete bulk` command, pointing to the generated CSV file, to perform the mass deletion of Apex logs.\n- **File System Operations:** It uses `fs-extra` to create the temporary directory and manage the CSV file.\n- **Error Handling:** Includes error handling for the query and deletion operations.\n</details>\n",
7618
- "examples": [
7619
- "$ sf hardis:org:purge:apexlog",
7620
- "$ sf hardis:org:purge:apexlog --target-org nicolas.vuillamy@gmail.com"
7621
- ],
7622
- "flags": {
7623
- "json": {
7624
- "description": "Format output as json.",
7625
- "helpGroup": "GLOBAL",
7626
- "name": "json",
7627
- "allowNo": false,
7628
- "type": "boolean"
7629
- },
7630
- "flags-dir": {
7631
- "helpGroup": "GLOBAL",
7632
- "name": "flags-dir",
7633
- "summary": "Import flag values from a directory.",
7634
- "hasDynamicHelp": false,
7635
- "multiple": false,
7636
- "type": "option"
7637
- },
7638
- "prompt": {
7639
- "char": "z",
7640
- "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7641
- "name": "prompt",
7642
- "allowNo": true,
7643
- "type": "boolean"
7644
- },
7645
- "debug": {
7646
- "char": "d",
7647
- "description": "Activate debug mode (more logs)",
7648
- "name": "debug",
7649
- "allowNo": false,
7650
- "type": "boolean"
7651
- },
7652
- "websocket": {
7653
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7654
- "name": "websocket",
7655
- "hasDynamicHelp": false,
7656
- "multiple": false,
7657
- "type": "option"
7658
- },
7659
- "skipauth": {
7660
- "description": "Skip authentication check when a default username is required",
7661
- "name": "skipauth",
7662
- "allowNo": false,
7663
- "type": "boolean"
7664
- },
7665
- "target-org": {
7666
- "aliases": [
7667
- "targetusername",
7668
- "u"
7669
- ],
7670
- "char": "o",
7671
- "deprecateAliases": true,
7672
- "name": "target-org",
7673
- "noCacheDefault": true,
7674
- "required": true,
7675
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7676
- "hasDynamicHelp": true,
7677
- "multiple": false,
7678
- "type": "option"
7679
- }
7680
- },
7681
- "hasDynamicHelp": true,
7682
- "hiddenAliases": [],
7683
- "id": "hardis:org:purge:apexlog",
7684
- "pluginAlias": "sfdx-hardis",
7685
- "pluginName": "sfdx-hardis",
7686
- "pluginType": "core",
7687
- "strict": true,
7688
- "enableJsonFlag": true,
7689
- "title": "Purge Apex Logs",
7690
- "requiresProject": false,
7691
- "isESM": true,
7692
- "relativePath": [
7693
- "lib",
7694
- "commands",
7695
- "hardis",
7696
- "org",
7697
- "purge",
7698
- "apexlog.js"
7699
- ],
7700
- "aliasPermutations": [],
7701
- "permutations": [
7702
- "hardis:org:purge:apexlog",
7703
- "org:hardis:purge:apexlog",
7704
- "org:purge:hardis:apexlog",
7705
- "org:purge:apexlog:hardis",
7706
- "hardis:purge:org:apexlog",
7707
- "purge:hardis:org:apexlog",
7708
- "purge:org:hardis:apexlog",
7709
- "purge:org:apexlog:hardis",
7710
- "hardis:purge:apexlog:org",
7711
- "purge:hardis:apexlog:org",
7712
- "purge:apexlog:hardis:org",
7713
- "purge:apexlog:org:hardis",
7714
- "hardis:org:apexlog:purge",
7715
- "org:hardis:apexlog:purge",
7716
- "org:apexlog:hardis:purge",
7717
- "org:apexlog:purge:hardis",
7718
- "hardis:apexlog:org:purge",
7719
- "apexlog:hardis:org:purge",
7720
- "apexlog:org:hardis:purge",
7721
- "apexlog:org:purge:hardis",
7722
- "hardis:apexlog:purge:org",
7723
- "apexlog:hardis:purge:org",
7724
- "apexlog:purge:hardis:org",
7725
- "apexlog:purge:org:hardis"
7726
- ]
7727
- },
7728
- "hardis:org:purge:flow": {
7729
- "aliases": [],
7730
- "args": {},
7731
- "description": "\n**Purges old or unwanted Flow versions from a Salesforce org, with an option to delete related Flow Interviews.**\n\nThis command helps maintain a clean and performant Salesforce org by removing obsolete Flow versions. Over time, multiple versions of Flows can accumulate, consuming storage and potentially impacting performance. This tool provides a controlled way to clean up these versions.\n\nKey functionalities:\n\n- **Targeted Flow Selection:** Allows you to filter Flow versions to delete by name (`--name`) and status (`--status`, e.g., `Obsolete`, `Draft`, `Inactive`).\n- **Flow Interview Deletion:** If a Flow version cannot be deleted due to active Flow Interviews, the `--delete-flow-interviews` flag (or interactive prompt) allows you to delete these interviews first, then retry the Flow version deletion.\n- **Confirmation Prompt:** In interactive mode, it prompts for confirmation before proceeding with the deletion of Flow versions and Flow Interviews.\n- **Partial Success Handling:** The `--allowpurgefailure` flag (default `true`) allows the command to continue even if some deletions fail, reporting the errors.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Queries (Tooling API):** It queries the `Flow` object (using the Tooling API) to list Flow versions based on the provided filters (name, status, manageable state).\n- **Bulk Deletion (Tooling API):** It uses `bulkDeleteTooling` to perform mass deletions of Flow versions. If deletion fails due to active interviews, it extracts the interview IDs.\n- **Flow Interview Management:** If `delete-flow-interviews` is enabled, it queries `FlowInterview` objects, performs bulk deletion of the identified interviews using `bulkDelete`, and then retries the Flow version deletion.\n- **Interactive Prompts:** Uses the `prompts` library to interact with the user for selecting Flows, statuses, and confirming deletion actions.\n- **Error Reporting:** Logs detailed error messages for failed deletions, including the specific reasons.\n- **Command-Line Execution:** Uses `execSfdxJson` to execute Salesforce CLI commands for querying Flow data.\n</details>\n",
7732
- "examples": [
7733
- "$ sf hardis:org:purge:flow",
7734
- "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --no-prompt --delete-flow-interviews",
7735
- "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --status \"Obsolete,Draft,InvalidDraft\" --name TestFlow"
7736
- ],
7737
- "flags": {
7738
- "json": {
7739
- "description": "Format output as json.",
7740
- "helpGroup": "GLOBAL",
7741
- "name": "json",
7742
- "allowNo": false,
7743
- "type": "boolean"
7744
- },
7745
- "flags-dir": {
7746
- "helpGroup": "GLOBAL",
7747
- "name": "flags-dir",
7748
- "summary": "Import flag values from a directory.",
7749
- "hasDynamicHelp": false,
7750
- "multiple": false,
7751
- "type": "option"
7752
- },
7753
- "prompt": {
7754
- "char": "z",
7755
- "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7756
- "name": "prompt",
7757
- "allowNo": true,
7758
- "type": "boolean"
7759
- },
7760
- "name": {
7761
- "char": "n",
7762
- "description": "Filter according to Name criteria",
7763
- "name": "name",
7764
- "hasDynamicHelp": false,
7765
- "multiple": false,
7766
- "type": "option"
7767
- },
7768
- "status": {
7769
- "char": "s",
7770
- "description": "Filter according to Status criteria",
7771
- "name": "status",
7772
- "hasDynamicHelp": false,
7773
- "multiple": false,
7774
- "type": "option"
7775
- },
7776
- "delete-flow-interviews": {
7777
- "char": "w",
7778
- "description": "If the presence of Flow interviews prevent to delete flows versions, delete them before retrying to delete flow versions",
7779
- "name": "delete-flow-interviews",
7780
- "allowNo": false,
7781
- "type": "boolean"
7782
- },
7783
- "allowpurgefailure": {
7784
- "char": "f",
7785
- "description": "Allows purges to fail without exiting with 1. Use --no-allowpurgefailure to disable",
7786
- "name": "allowpurgefailure",
7787
- "allowNo": true,
7788
- "type": "boolean"
7789
- },
7790
- "instanceurl": {
7791
- "char": "r",
7792
- "description": "URL of org instance",
7793
- "name": "instanceurl",
7794
- "default": "https://login.salesforce.com",
7795
- "hasDynamicHelp": false,
7796
- "multiple": false,
7797
- "type": "option"
7798
- },
7799
- "debug": {
7800
- "char": "d",
7801
- "description": "Activate debug mode (more logs)",
7802
- "name": "debug",
7803
- "allowNo": false,
7804
- "type": "boolean"
7805
- },
7806
- "websocket": {
7807
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7808
- "name": "websocket",
7809
- "hasDynamicHelp": false,
7810
- "multiple": false,
7811
- "type": "option"
7812
- },
7813
- "skipauth": {
7814
- "description": "Skip authentication check when a default username is required",
7815
- "name": "skipauth",
7816
- "allowNo": false,
7817
- "type": "boolean"
7818
- },
7819
- "target-org": {
7820
- "aliases": [
7821
- "targetusername",
7822
- "u"
7823
- ],
7824
- "char": "o",
7825
- "deprecateAliases": true,
7826
- "name": "target-org",
7827
- "noCacheDefault": true,
7828
- "required": true,
7829
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7830
- "hasDynamicHelp": true,
7831
- "multiple": false,
7832
- "type": "option"
7833
- }
7834
- },
7835
- "hasDynamicHelp": true,
7836
- "hiddenAliases": [],
7837
- "id": "hardis:org:purge:flow",
7838
- "pluginAlias": "sfdx-hardis",
7839
- "pluginName": "sfdx-hardis",
7840
- "pluginType": "core",
7841
- "strict": true,
7842
- "enableJsonFlag": true,
7843
- "title": "Purge Flow versions",
7844
- "requiresProject": false,
7845
- "isESM": true,
7846
- "relativePath": [
7847
- "lib",
7848
- "commands",
7849
- "hardis",
7850
- "org",
7851
- "purge",
7852
- "flow.js"
7853
- ],
7854
- "aliasPermutations": [],
7855
- "permutations": [
7856
- "hardis:org:purge:flow",
7857
- "org:hardis:purge:flow",
7858
- "org:purge:hardis:flow",
7859
- "org:purge:flow:hardis",
7860
- "hardis:purge:org:flow",
7861
- "purge:hardis:org:flow",
7862
- "purge:org:hardis:flow",
7863
- "purge:org:flow:hardis",
7864
- "hardis:purge:flow:org",
7865
- "purge:hardis:flow:org",
7866
- "purge:flow:hardis:org",
7867
- "purge:flow:org:hardis",
7868
- "hardis:org:flow:purge",
7869
- "org:hardis:flow:purge",
7870
- "org:flow:hardis:purge",
7871
- "org:flow:purge:hardis",
7872
- "hardis:flow:org:purge",
7873
- "flow:hardis:org:purge",
7874
- "flow:org:hardis:purge",
7875
- "flow:org:purge:hardis",
7876
- "hardis:flow:purge:org",
7877
- "flow:hardis:purge:org",
7878
- "flow:purge:hardis:org",
7879
- "flow:purge:org:hardis"
7880
- ]
7881
- },
7882
7614
  "hardis:org:refresh:after-refresh": {
7883
7615
  "aliases": [],
7884
7616
  "args": {},
@@ -8134,10 +7866,278 @@
8134
7866
  "allowNo": false,
8135
7867
  "type": "boolean"
8136
7868
  },
8137
- "flags-dir": {
8138
- "helpGroup": "GLOBAL",
8139
- "name": "flags-dir",
8140
- "summary": "Import flag values from a directory.",
7869
+ "flags-dir": {
7870
+ "helpGroup": "GLOBAL",
7871
+ "name": "flags-dir",
7872
+ "summary": "Import flag values from a directory.",
7873
+ "hasDynamicHelp": false,
7874
+ "multiple": false,
7875
+ "type": "option"
7876
+ },
7877
+ "debug": {
7878
+ "char": "d",
7879
+ "description": "Activate debug mode (more logs)",
7880
+ "name": "debug",
7881
+ "allowNo": false,
7882
+ "type": "boolean"
7883
+ },
7884
+ "websocket": {
7885
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
7886
+ "name": "websocket",
7887
+ "hasDynamicHelp": false,
7888
+ "multiple": false,
7889
+ "type": "option"
7890
+ },
7891
+ "skipauth": {
7892
+ "description": "Skip authentication check when a default username is required",
7893
+ "name": "skipauth",
7894
+ "allowNo": false,
7895
+ "type": "boolean"
7896
+ },
7897
+ "target-org": {
7898
+ "aliases": [
7899
+ "targetusername",
7900
+ "u"
7901
+ ],
7902
+ "char": "o",
7903
+ "deprecateAliases": true,
7904
+ "name": "target-org",
7905
+ "noCacheDefault": true,
7906
+ "required": true,
7907
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
7908
+ "hasDynamicHelp": true,
7909
+ "multiple": false,
7910
+ "type": "option"
7911
+ }
7912
+ },
7913
+ "hasDynamicHelp": true,
7914
+ "hiddenAliases": [],
7915
+ "id": "hardis:org:retrieve:packageconfig",
7916
+ "pluginAlias": "sfdx-hardis",
7917
+ "pluginName": "sfdx-hardis",
7918
+ "pluginType": "core",
7919
+ "strict": true,
7920
+ "enableJsonFlag": true,
7921
+ "title": "Retrieve package configuration from an org",
7922
+ "requiresProject": false,
7923
+ "isESM": true,
7924
+ "relativePath": [
7925
+ "lib",
7926
+ "commands",
7927
+ "hardis",
7928
+ "org",
7929
+ "retrieve",
7930
+ "packageconfig.js"
7931
+ ],
7932
+ "aliasPermutations": [],
7933
+ "permutations": [
7934
+ "hardis:org:retrieve:packageconfig",
7935
+ "org:hardis:retrieve:packageconfig",
7936
+ "org:retrieve:hardis:packageconfig",
7937
+ "org:retrieve:packageconfig:hardis",
7938
+ "hardis:retrieve:org:packageconfig",
7939
+ "retrieve:hardis:org:packageconfig",
7940
+ "retrieve:org:hardis:packageconfig",
7941
+ "retrieve:org:packageconfig:hardis",
7942
+ "hardis:retrieve:packageconfig:org",
7943
+ "retrieve:hardis:packageconfig:org",
7944
+ "retrieve:packageconfig:hardis:org",
7945
+ "retrieve:packageconfig:org:hardis",
7946
+ "hardis:org:packageconfig:retrieve",
7947
+ "org:hardis:packageconfig:retrieve",
7948
+ "org:packageconfig:hardis:retrieve",
7949
+ "org:packageconfig:retrieve:hardis",
7950
+ "hardis:packageconfig:org:retrieve",
7951
+ "packageconfig:hardis:org:retrieve",
7952
+ "packageconfig:org:hardis:retrieve",
7953
+ "packageconfig:org:retrieve:hardis",
7954
+ "hardis:packageconfig:retrieve:org",
7955
+ "packageconfig:hardis:retrieve:org",
7956
+ "packageconfig:retrieve:hardis:org",
7957
+ "packageconfig:retrieve:org:hardis"
7958
+ ]
7959
+ },
7960
+ "hardis:org:purge:apexlog": {
7961
+ "aliases": [],
7962
+ "args": {},
7963
+ "description": "\n**Purges Apex debug logs from a Salesforce org.**\n\nThis command provides a quick and efficient way to clear out accumulated Apex debug logs from your Salesforce environment. This is particularly useful for:\n\n- **Storage Management:** Freeing up valuable data storage space in your Salesforce org.\n- **Performance Optimization:** Reducing the overhead associated with large volumes of debug logs.\n- **Troubleshooting:** Ensuring that new debug logs are generated cleanly without interference from old, irrelevant logs.\n\nKey functionalities:\n\n- **Log Identification:** Queries the `ApexLog` object to identify all existing debug logs.\n- **Confirmation Prompt:** Before deletion, it prompts for user confirmation, displaying the number of Apex logs that will be deleted.\n- **Bulk Deletion:** Uses the Salesforce Bulk API to efficiently delete a large number of Apex logs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Query:** It executes a SOQL query (`SELECT Id FROM ApexLog LIMIT 50000`) to retrieve the IDs of Apex logs to be deleted. The limit is set to 50,000 to handle large volumes of logs.\n- **CSV Export:** The retrieved log IDs are temporarily exported to a CSV file (`ApexLogsToDelete_*.csv`) in the `./tmp` directory.\n- **User Confirmation:** It uses the `prompts` library to ask for user confirmation before proceeding with the deletion, displaying the count of logs to be purged.\n- **Bulk API Deletion:** It then uses the Salesforce CLI's `sf data delete bulk` command, pointing to the generated CSV file, to perform the mass deletion of Apex logs.\n- **File System Operations:** It uses `fs-extra` to create the temporary directory and manage the CSV file.\n- **Error Handling:** Includes error handling for the query and deletion operations.\n</details>\n",
7964
+ "examples": [
7965
+ "$ sf hardis:org:purge:apexlog",
7966
+ "$ sf hardis:org:purge:apexlog --target-org nicolas.vuillamy@gmail.com"
7967
+ ],
7968
+ "flags": {
7969
+ "json": {
7970
+ "description": "Format output as json.",
7971
+ "helpGroup": "GLOBAL",
7972
+ "name": "json",
7973
+ "allowNo": false,
7974
+ "type": "boolean"
7975
+ },
7976
+ "flags-dir": {
7977
+ "helpGroup": "GLOBAL",
7978
+ "name": "flags-dir",
7979
+ "summary": "Import flag values from a directory.",
7980
+ "hasDynamicHelp": false,
7981
+ "multiple": false,
7982
+ "type": "option"
7983
+ },
7984
+ "prompt": {
7985
+ "char": "z",
7986
+ "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
7987
+ "name": "prompt",
7988
+ "allowNo": true,
7989
+ "type": "boolean"
7990
+ },
7991
+ "debug": {
7992
+ "char": "d",
7993
+ "description": "Activate debug mode (more logs)",
7994
+ "name": "debug",
7995
+ "allowNo": false,
7996
+ "type": "boolean"
7997
+ },
7998
+ "websocket": {
7999
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8000
+ "name": "websocket",
8001
+ "hasDynamicHelp": false,
8002
+ "multiple": false,
8003
+ "type": "option"
8004
+ },
8005
+ "skipauth": {
8006
+ "description": "Skip authentication check when a default username is required",
8007
+ "name": "skipauth",
8008
+ "allowNo": false,
8009
+ "type": "boolean"
8010
+ },
8011
+ "target-org": {
8012
+ "aliases": [
8013
+ "targetusername",
8014
+ "u"
8015
+ ],
8016
+ "char": "o",
8017
+ "deprecateAliases": true,
8018
+ "name": "target-org",
8019
+ "noCacheDefault": true,
8020
+ "required": true,
8021
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8022
+ "hasDynamicHelp": true,
8023
+ "multiple": false,
8024
+ "type": "option"
8025
+ }
8026
+ },
8027
+ "hasDynamicHelp": true,
8028
+ "hiddenAliases": [],
8029
+ "id": "hardis:org:purge:apexlog",
8030
+ "pluginAlias": "sfdx-hardis",
8031
+ "pluginName": "sfdx-hardis",
8032
+ "pluginType": "core",
8033
+ "strict": true,
8034
+ "enableJsonFlag": true,
8035
+ "title": "Purge Apex Logs",
8036
+ "requiresProject": false,
8037
+ "isESM": true,
8038
+ "relativePath": [
8039
+ "lib",
8040
+ "commands",
8041
+ "hardis",
8042
+ "org",
8043
+ "purge",
8044
+ "apexlog.js"
8045
+ ],
8046
+ "aliasPermutations": [],
8047
+ "permutations": [
8048
+ "hardis:org:purge:apexlog",
8049
+ "org:hardis:purge:apexlog",
8050
+ "org:purge:hardis:apexlog",
8051
+ "org:purge:apexlog:hardis",
8052
+ "hardis:purge:org:apexlog",
8053
+ "purge:hardis:org:apexlog",
8054
+ "purge:org:hardis:apexlog",
8055
+ "purge:org:apexlog:hardis",
8056
+ "hardis:purge:apexlog:org",
8057
+ "purge:hardis:apexlog:org",
8058
+ "purge:apexlog:hardis:org",
8059
+ "purge:apexlog:org:hardis",
8060
+ "hardis:org:apexlog:purge",
8061
+ "org:hardis:apexlog:purge",
8062
+ "org:apexlog:hardis:purge",
8063
+ "org:apexlog:purge:hardis",
8064
+ "hardis:apexlog:org:purge",
8065
+ "apexlog:hardis:org:purge",
8066
+ "apexlog:org:hardis:purge",
8067
+ "apexlog:org:purge:hardis",
8068
+ "hardis:apexlog:purge:org",
8069
+ "apexlog:hardis:purge:org",
8070
+ "apexlog:purge:hardis:org",
8071
+ "apexlog:purge:org:hardis"
8072
+ ]
8073
+ },
8074
+ "hardis:org:purge:flow": {
8075
+ "aliases": [],
8076
+ "args": {},
8077
+ "description": "\n**Purges old or unwanted Flow versions from a Salesforce org, with an option to delete related Flow Interviews.**\n\nThis command helps maintain a clean and performant Salesforce org by removing obsolete Flow versions. Over time, multiple versions of Flows can accumulate, consuming storage and potentially impacting performance. This tool provides a controlled way to clean up these versions.\n\nKey functionalities:\n\n- **Targeted Flow Selection:** Allows you to filter Flow versions to delete by name (`--name`) and status (`--status`, e.g., `Obsolete`, `Draft`, `Inactive`).\n- **Flow Interview Deletion:** If a Flow version cannot be deleted due to active Flow Interviews, the `--delete-flow-interviews` flag (or interactive prompt) allows you to delete these interviews first, then retry the Flow version deletion.\n- **Confirmation Prompt:** In interactive mode, it prompts for confirmation before proceeding with the deletion of Flow versions and Flow Interviews.\n- **Partial Success Handling:** The `--allowpurgefailure` flag (default `true`) allows the command to continue even if some deletions fail, reporting the errors.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **SOQL Queries (Tooling API):** It queries the `Flow` object (using the Tooling API) to list Flow versions based on the provided filters (name, status, manageable state).\n- **Bulk Deletion (Tooling API):** It uses `bulkDeleteTooling` to perform mass deletions of Flow versions. If deletion fails due to active interviews, it extracts the interview IDs.\n- **Flow Interview Management:** If `delete-flow-interviews` is enabled, it queries `FlowInterview` objects, performs bulk deletion of the identified interviews using `bulkDelete`, and then retries the Flow version deletion.\n- **Interactive Prompts:** Uses the `prompts` library to interact with the user for selecting Flows, statuses, and confirming deletion actions.\n- **Error Reporting:** Logs detailed error messages for failed deletions, including the specific reasons.\n- **Command-Line Execution:** Uses `execSfdxJson` to execute Salesforce CLI commands for querying Flow data.\n</details>\n",
8078
+ "examples": [
8079
+ "$ sf hardis:org:purge:flow",
8080
+ "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --no-prompt --delete-flow-interviews",
8081
+ "$ sf hardis:org:purge:flow --target-org nicolas.vuillamy@gmail.com --status \"Obsolete,Draft,InvalidDraft\" --name TestFlow"
8082
+ ],
8083
+ "flags": {
8084
+ "json": {
8085
+ "description": "Format output as json.",
8086
+ "helpGroup": "GLOBAL",
8087
+ "name": "json",
8088
+ "allowNo": false,
8089
+ "type": "boolean"
8090
+ },
8091
+ "flags-dir": {
8092
+ "helpGroup": "GLOBAL",
8093
+ "name": "flags-dir",
8094
+ "summary": "Import flag values from a directory.",
8095
+ "hasDynamicHelp": false,
8096
+ "multiple": false,
8097
+ "type": "option"
8098
+ },
8099
+ "prompt": {
8100
+ "char": "z",
8101
+ "description": "Prompt for confirmation (true by default, use --no-prompt to skip)",
8102
+ "name": "prompt",
8103
+ "allowNo": true,
8104
+ "type": "boolean"
8105
+ },
8106
+ "name": {
8107
+ "char": "n",
8108
+ "description": "Filter according to Name criteria",
8109
+ "name": "name",
8110
+ "hasDynamicHelp": false,
8111
+ "multiple": false,
8112
+ "type": "option"
8113
+ },
8114
+ "status": {
8115
+ "char": "s",
8116
+ "description": "Filter according to Status criteria",
8117
+ "name": "status",
8118
+ "hasDynamicHelp": false,
8119
+ "multiple": false,
8120
+ "type": "option"
8121
+ },
8122
+ "delete-flow-interviews": {
8123
+ "char": "w",
8124
+ "description": "If the presence of Flow interviews prevent to delete flows versions, delete them before retrying to delete flow versions",
8125
+ "name": "delete-flow-interviews",
8126
+ "allowNo": false,
8127
+ "type": "boolean"
8128
+ },
8129
+ "allowpurgefailure": {
8130
+ "char": "f",
8131
+ "description": "Allows purges to fail without exiting with 1. Use --no-allowpurgefailure to disable",
8132
+ "name": "allowpurgefailure",
8133
+ "allowNo": true,
8134
+ "type": "boolean"
8135
+ },
8136
+ "instanceurl": {
8137
+ "char": "r",
8138
+ "description": "URL of org instance",
8139
+ "name": "instanceurl",
8140
+ "default": "https://login.salesforce.com",
8141
8141
  "hasDynamicHelp": false,
8142
8142
  "multiple": false,
8143
8143
  "type": "option"
@@ -8180,13 +8180,13 @@
8180
8180
  },
8181
8181
  "hasDynamicHelp": true,
8182
8182
  "hiddenAliases": [],
8183
- "id": "hardis:org:retrieve:packageconfig",
8183
+ "id": "hardis:org:purge:flow",
8184
8184
  "pluginAlias": "sfdx-hardis",
8185
8185
  "pluginName": "sfdx-hardis",
8186
8186
  "pluginType": "core",
8187
8187
  "strict": true,
8188
8188
  "enableJsonFlag": true,
8189
- "title": "Retrieve package configuration from an org",
8189
+ "title": "Purge Flow versions",
8190
8190
  "requiresProject": false,
8191
8191
  "isESM": true,
8192
8192
  "relativePath": [
@@ -8194,35 +8194,35 @@
8194
8194
  "commands",
8195
8195
  "hardis",
8196
8196
  "org",
8197
- "retrieve",
8198
- "packageconfig.js"
8197
+ "purge",
8198
+ "flow.js"
8199
8199
  ],
8200
8200
  "aliasPermutations": [],
8201
8201
  "permutations": [
8202
- "hardis:org:retrieve:packageconfig",
8203
- "org:hardis:retrieve:packageconfig",
8204
- "org:retrieve:hardis:packageconfig",
8205
- "org:retrieve:packageconfig:hardis",
8206
- "hardis:retrieve:org:packageconfig",
8207
- "retrieve:hardis:org:packageconfig",
8208
- "retrieve:org:hardis:packageconfig",
8209
- "retrieve:org:packageconfig:hardis",
8210
- "hardis:retrieve:packageconfig:org",
8211
- "retrieve:hardis:packageconfig:org",
8212
- "retrieve:packageconfig:hardis:org",
8213
- "retrieve:packageconfig:org:hardis",
8214
- "hardis:org:packageconfig:retrieve",
8215
- "org:hardis:packageconfig:retrieve",
8216
- "org:packageconfig:hardis:retrieve",
8217
- "org:packageconfig:retrieve:hardis",
8218
- "hardis:packageconfig:org:retrieve",
8219
- "packageconfig:hardis:org:retrieve",
8220
- "packageconfig:org:hardis:retrieve",
8221
- "packageconfig:org:retrieve:hardis",
8222
- "hardis:packageconfig:retrieve:org",
8223
- "packageconfig:hardis:retrieve:org",
8224
- "packageconfig:retrieve:hardis:org",
8225
- "packageconfig:retrieve:org:hardis"
8202
+ "hardis:org:purge:flow",
8203
+ "org:hardis:purge:flow",
8204
+ "org:purge:hardis:flow",
8205
+ "org:purge:flow:hardis",
8206
+ "hardis:purge:org:flow",
8207
+ "purge:hardis:org:flow",
8208
+ "purge:org:hardis:flow",
8209
+ "purge:org:flow:hardis",
8210
+ "hardis:purge:flow:org",
8211
+ "purge:hardis:flow:org",
8212
+ "purge:flow:hardis:org",
8213
+ "purge:flow:org:hardis",
8214
+ "hardis:org:flow:purge",
8215
+ "org:hardis:flow:purge",
8216
+ "org:flow:hardis:purge",
8217
+ "org:flow:purge:hardis",
8218
+ "hardis:flow:org:purge",
8219
+ "flow:hardis:org:purge",
8220
+ "flow:org:hardis:purge",
8221
+ "flow:org:purge:hardis",
8222
+ "hardis:flow:purge:org",
8223
+ "flow:hardis:purge:org",
8224
+ "flow:purge:hardis:org",
8225
+ "flow:purge:org:hardis"
8226
8226
  ]
8227
8227
  },
8228
8228
  "hardis:org:test:apex": {
@@ -9483,162 +9483,33 @@
9483
9483
  "project",
9484
9484
  "audit",
9485
9485
  "remotesites.js"
9486
- ],
9487
- "aliasPermutations": [],
9488
- "permutations": [
9489
- "hardis:project:audit:remotesites",
9490
- "project:hardis:audit:remotesites",
9491
- "project:audit:hardis:remotesites",
9492
- "project:audit:remotesites:hardis",
9493
- "hardis:audit:project:remotesites",
9494
- "audit:hardis:project:remotesites",
9495
- "audit:project:hardis:remotesites",
9496
- "audit:project:remotesites:hardis",
9497
- "hardis:audit:remotesites:project",
9498
- "audit:hardis:remotesites:project",
9499
- "audit:remotesites:hardis:project",
9500
- "audit:remotesites:project:hardis",
9501
- "hardis:project:remotesites:audit",
9502
- "project:hardis:remotesites:audit",
9503
- "project:remotesites:hardis:audit",
9504
- "project:remotesites:audit:hardis",
9505
- "hardis:remotesites:project:audit",
9506
- "remotesites:hardis:project:audit",
9507
- "remotesites:project:hardis:audit",
9508
- "remotesites:project:audit:hardis",
9509
- "hardis:remotesites:audit:project",
9510
- "remotesites:hardis:audit:project",
9511
- "remotesites:audit:hardis:project",
9512
- "remotesites:audit:project:hardis"
9513
- ]
9514
- },
9515
- "hardis:project:configure:auth": {
9516
- "aliases": [],
9517
- "args": {},
9518
- "description": "\n## Command Behavior\n\n**Configures authentication between a Git branch and a target Salesforce org for CI/CD deployments.**\n\nThis command facilitates the setup of automated CI/CD pipelines, enabling seamless deployments from specific Git branches to designated Salesforce orgs. It supports both standard Salesforce orgs and Dev Hub configurations, catering to various enterprise deployment workflows.\n\nKey functionalities include:\n\n- **Org Selection/Login:** Guides the user to select an existing Salesforce org or log in to a new one.\n- **Git Branch Association:** Allows associating a specific Git branch with the chosen Salesforce org.\n- **Merge Target Definition:** Enables defining target Git branches into which the configured branch can merge, ensuring controlled deployment flows.\n- **Salesforce Username Configuration:** Prompts for the Salesforce username to be used by the CI server for deployments.\n- **SSL Certificate Generation:** Automatically generates an SSL certificate for secure authentication.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's implementation involves several key technical aspects:\n\n- **SF CLI Integration:** Utilizes \n@salesforce/sf-plugins-core\n for command structure and flag parsing.\n- **Interactive Prompts:** Employs the \nprompts\n library for interactive user input, guiding the configuration process.\n- **Git Integration:** Interacts with Git to retrieve branch information using \n`git().branch([\"--list\", \"-r\"])`\n.\n- **Configuration Management:** Leverages internal utilities (`checkConfig`, `getConfig`, `setConfig`, `setInConfigFile`) to read from and write to project-specific configuration files (e.g., `.sfdx-hardis.<branchName>.yml`).\n- **Salesforce CLI Execution:** Executes Salesforce CLI commands programmatically via `execSfdxJson` for org interactions.\n- **SSL Certificate Generation:** Calls `generateSSLCertificate` to create necessary SSL certificates for JWT-based authentication.\n- **WebSocket Communication:** Uses `WebSocketClient` for potential communication with external tools or processes, such as restarting the command in VS Code.\n- **Dependency Check:** Ensures the presence of `openssl` on the system, which is required for SSL certificate generation.\n",
9519
- "examples": [
9520
- "$ sf hardis:project:configure:auth"
9521
- ],
9522
- "flags": {
9523
- "json": {
9524
- "description": "Format output as json.",
9525
- "helpGroup": "GLOBAL",
9526
- "name": "json",
9527
- "allowNo": false,
9528
- "type": "boolean"
9529
- },
9530
- "flags-dir": {
9531
- "helpGroup": "GLOBAL",
9532
- "name": "flags-dir",
9533
- "summary": "Import flag values from a directory.",
9534
- "hasDynamicHelp": false,
9535
- "multiple": false,
9536
- "type": "option"
9537
- },
9538
- "devhub": {
9539
- "char": "b",
9540
- "description": "Configure project DevHub",
9541
- "name": "devhub",
9542
- "allowNo": false,
9543
- "type": "boolean"
9544
- },
9545
- "debug": {
9546
- "char": "d",
9547
- "description": "Activate debug mode (more logs)",
9548
- "name": "debug",
9549
- "allowNo": false,
9550
- "type": "boolean"
9551
- },
9552
- "websocket": {
9553
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
9554
- "name": "websocket",
9555
- "hasDynamicHelp": false,
9556
- "multiple": false,
9557
- "type": "option"
9558
- },
9559
- "skipauth": {
9560
- "description": "Skip authentication check when a default username is required",
9561
- "name": "skipauth",
9562
- "allowNo": false,
9563
- "type": "boolean"
9564
- },
9565
- "target-org": {
9566
- "aliases": [
9567
- "targetusername",
9568
- "u"
9569
- ],
9570
- "char": "o",
9571
- "deprecateAliases": true,
9572
- "name": "target-org",
9573
- "noCacheDefault": true,
9574
- "summary": "Username or alias of the target org.",
9575
- "hasDynamicHelp": true,
9576
- "multiple": false,
9577
- "type": "option"
9578
- },
9579
- "target-dev-hub": {
9580
- "aliases": [
9581
- "targetdevhubusername"
9582
- ],
9583
- "char": "v",
9584
- "deprecateAliases": true,
9585
- "name": "target-dev-hub",
9586
- "noCacheDefault": true,
9587
- "required": false,
9588
- "summary": "Username or alias of the Dev Hub org.",
9589
- "hasDynamicHelp": true,
9590
- "multiple": false,
9591
- "type": "option"
9592
- }
9593
- },
9594
- "hasDynamicHelp": true,
9595
- "hiddenAliases": [],
9596
- "id": "hardis:project:configure:auth",
9597
- "pluginAlias": "sfdx-hardis",
9598
- "pluginName": "sfdx-hardis",
9599
- "pluginType": "core",
9600
- "strict": true,
9601
- "enableJsonFlag": true,
9602
- "title": "Configure authentication",
9603
- "requiresProject": false,
9604
- "requiresDependencies": [
9605
- "openssl"
9606
- ],
9607
- "isESM": true,
9608
- "relativePath": [
9609
- "lib",
9610
- "commands",
9611
- "hardis",
9612
- "project",
9613
- "configure",
9614
- "auth.js"
9615
- ],
9616
- "aliasPermutations": [],
9617
- "permutations": [
9618
- "hardis:project:configure:auth",
9619
- "project:hardis:configure:auth",
9620
- "project:configure:hardis:auth",
9621
- "project:configure:auth:hardis",
9622
- "hardis:configure:project:auth",
9623
- "configure:hardis:project:auth",
9624
- "configure:project:hardis:auth",
9625
- "configure:project:auth:hardis",
9626
- "hardis:configure:auth:project",
9627
- "configure:hardis:auth:project",
9628
- "configure:auth:hardis:project",
9629
- "configure:auth:project:hardis",
9630
- "hardis:project:auth:configure",
9631
- "project:hardis:auth:configure",
9632
- "project:auth:hardis:configure",
9633
- "project:auth:configure:hardis",
9634
- "hardis:auth:project:configure",
9635
- "auth:hardis:project:configure",
9636
- "auth:project:hardis:configure",
9637
- "auth:project:configure:hardis",
9638
- "hardis:auth:configure:project",
9639
- "auth:hardis:configure:project",
9640
- "auth:configure:hardis:project",
9641
- "auth:configure:project:hardis"
9486
+ ],
9487
+ "aliasPermutations": [],
9488
+ "permutations": [
9489
+ "hardis:project:audit:remotesites",
9490
+ "project:hardis:audit:remotesites",
9491
+ "project:audit:hardis:remotesites",
9492
+ "project:audit:remotesites:hardis",
9493
+ "hardis:audit:project:remotesites",
9494
+ "audit:hardis:project:remotesites",
9495
+ "audit:project:hardis:remotesites",
9496
+ "audit:project:remotesites:hardis",
9497
+ "hardis:audit:remotesites:project",
9498
+ "audit:hardis:remotesites:project",
9499
+ "audit:remotesites:hardis:project",
9500
+ "audit:remotesites:project:hardis",
9501
+ "hardis:project:remotesites:audit",
9502
+ "project:hardis:remotesites:audit",
9503
+ "project:remotesites:hardis:audit",
9504
+ "project:remotesites:audit:hardis",
9505
+ "hardis:remotesites:project:audit",
9506
+ "remotesites:hardis:project:audit",
9507
+ "remotesites:project:hardis:audit",
9508
+ "remotesites:project:audit:hardis",
9509
+ "hardis:remotesites:audit:project",
9510
+ "remotesites:hardis:audit:project",
9511
+ "remotesites:audit:hardis:project",
9512
+ "remotesites:audit:project:hardis"
9642
9513
  ]
9643
9514
  },
9644
9515
  "hardis:project:clean:emptyitems": {
@@ -11081,49 +10952,281 @@
11081
10952
  },
11082
10953
  "hasDynamicHelp": false,
11083
10954
  "hiddenAliases": [],
11084
- "id": "hardis:project:clean:xml",
10955
+ "id": "hardis:project:clean:xml",
10956
+ "pluginAlias": "sfdx-hardis",
10957
+ "pluginName": "sfdx-hardis",
10958
+ "pluginType": "core",
10959
+ "strict": true,
10960
+ "enableJsonFlag": true,
10961
+ "title": "Clean retrieved empty items in dx sources",
10962
+ "requiresProject": true,
10963
+ "isESM": true,
10964
+ "relativePath": [
10965
+ "lib",
10966
+ "commands",
10967
+ "hardis",
10968
+ "project",
10969
+ "clean",
10970
+ "xml.js"
10971
+ ],
10972
+ "aliasPermutations": [],
10973
+ "permutations": [
10974
+ "hardis:project:clean:xml",
10975
+ "project:hardis:clean:xml",
10976
+ "project:clean:hardis:xml",
10977
+ "project:clean:xml:hardis",
10978
+ "hardis:clean:project:xml",
10979
+ "clean:hardis:project:xml",
10980
+ "clean:project:hardis:xml",
10981
+ "clean:project:xml:hardis",
10982
+ "hardis:clean:xml:project",
10983
+ "clean:hardis:xml:project",
10984
+ "clean:xml:hardis:project",
10985
+ "clean:xml:project:hardis",
10986
+ "hardis:project:xml:clean",
10987
+ "project:hardis:xml:clean",
10988
+ "project:xml:hardis:clean",
10989
+ "project:xml:clean:hardis",
10990
+ "hardis:xml:project:clean",
10991
+ "xml:hardis:project:clean",
10992
+ "xml:project:hardis:clean",
10993
+ "xml:project:clean:hardis",
10994
+ "hardis:xml:clean:project",
10995
+ "xml:hardis:clean:project",
10996
+ "xml:clean:hardis:project",
10997
+ "xml:clean:project:hardis"
10998
+ ]
10999
+ },
11000
+ "hardis:project:convert:profilestopermsets": {
11001
+ "aliases": [],
11002
+ "args": {},
11003
+ "description": "\n## Command Behavior\n\n**Converts existing Salesforce Profiles into Permission Sets, facilitating a more granular and recommended security model.**\n\nThis command helps in migrating permissions from Profiles to Permission Sets, which is a best practice for managing user access in Salesforce. It creates a new Permission Set for each specified Profile, adopting a naming convention of `PS_PROFILENAME`.\n\nKey functionalities:\n\n- **Profile to Permission Set Conversion:** Automatically extracts permissions from a Profile and creates a corresponding Permission Set.\n- **Naming Convention:** New Permission Sets are named with a `PS_` prefix followed by the Profile name (e.g., `PS_Standard_User`).\n- **Exclusion Filter:** Allows you to exclude specific Profiles from the conversion process using the `--except` flag.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **External Plugin Integration:** It relies on the `shane-sfdx-plugins` (specifically the `sf shane:profile:convert` command) to perform the actual conversion.\n- **File System Scan:** It reads the contents of the `force-app/main/default/profiles` directory to identify all available Profile metadata files.\n- **Command Execution:** For each identified Profile (that is not excluded), it constructs and executes the `sf shane:profile:convert` command with the appropriate Profile name and desired Permission Set name.\n- **Error Handling:** Includes basic error handling for the external command execution.\n</details>\n",
11004
+ "examples": [
11005
+ "$ sf hardis:project:convert:profilestopermsets"
11006
+ ],
11007
+ "flags": {
11008
+ "json": {
11009
+ "description": "Format output as json.",
11010
+ "helpGroup": "GLOBAL",
11011
+ "name": "json",
11012
+ "allowNo": false,
11013
+ "type": "boolean"
11014
+ },
11015
+ "flags-dir": {
11016
+ "helpGroup": "GLOBAL",
11017
+ "name": "flags-dir",
11018
+ "summary": "Import flag values from a directory.",
11019
+ "hasDynamicHelp": false,
11020
+ "multiple": false,
11021
+ "type": "option"
11022
+ },
11023
+ "except": {
11024
+ "char": "e",
11025
+ "description": "List of filters",
11026
+ "name": "except",
11027
+ "default": [],
11028
+ "hasDynamicHelp": false,
11029
+ "multiple": true,
11030
+ "type": "option"
11031
+ },
11032
+ "debug": {
11033
+ "char": "d",
11034
+ "description": "Activate debug mode (more logs)",
11035
+ "name": "debug",
11036
+ "allowNo": false,
11037
+ "type": "boolean"
11038
+ },
11039
+ "websocket": {
11040
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
11041
+ "name": "websocket",
11042
+ "hasDynamicHelp": false,
11043
+ "multiple": false,
11044
+ "type": "option"
11045
+ },
11046
+ "skipauth": {
11047
+ "description": "Skip authentication check when a default username is required",
11048
+ "name": "skipauth",
11049
+ "allowNo": false,
11050
+ "type": "boolean"
11051
+ }
11052
+ },
11053
+ "hasDynamicHelp": false,
11054
+ "hiddenAliases": [],
11055
+ "id": "hardis:project:convert:profilestopermsets",
11056
+ "pluginAlias": "sfdx-hardis",
11057
+ "pluginName": "sfdx-hardis",
11058
+ "pluginType": "core",
11059
+ "strict": true,
11060
+ "enableJsonFlag": true,
11061
+ "title": "Convert Profiles into Permission Sets",
11062
+ "requiresProject": true,
11063
+ "requiresSfdxPlugins": [
11064
+ "shane-sfdx-plugins"
11065
+ ],
11066
+ "isESM": true,
11067
+ "relativePath": [
11068
+ "lib",
11069
+ "commands",
11070
+ "hardis",
11071
+ "project",
11072
+ "convert",
11073
+ "profilestopermsets.js"
11074
+ ],
11075
+ "aliasPermutations": [],
11076
+ "permutations": [
11077
+ "hardis:project:convert:profilestopermsets",
11078
+ "project:hardis:convert:profilestopermsets",
11079
+ "project:convert:hardis:profilestopermsets",
11080
+ "project:convert:profilestopermsets:hardis",
11081
+ "hardis:convert:project:profilestopermsets",
11082
+ "convert:hardis:project:profilestopermsets",
11083
+ "convert:project:hardis:profilestopermsets",
11084
+ "convert:project:profilestopermsets:hardis",
11085
+ "hardis:convert:profilestopermsets:project",
11086
+ "convert:hardis:profilestopermsets:project",
11087
+ "convert:profilestopermsets:hardis:project",
11088
+ "convert:profilestopermsets:project:hardis",
11089
+ "hardis:project:profilestopermsets:convert",
11090
+ "project:hardis:profilestopermsets:convert",
11091
+ "project:profilestopermsets:hardis:convert",
11092
+ "project:profilestopermsets:convert:hardis",
11093
+ "hardis:profilestopermsets:project:convert",
11094
+ "profilestopermsets:hardis:project:convert",
11095
+ "profilestopermsets:project:hardis:convert",
11096
+ "profilestopermsets:project:convert:hardis",
11097
+ "hardis:profilestopermsets:convert:project",
11098
+ "profilestopermsets:hardis:convert:project",
11099
+ "profilestopermsets:convert:hardis:project",
11100
+ "profilestopermsets:convert:project:hardis"
11101
+ ]
11102
+ },
11103
+ "hardis:project:configure:auth": {
11104
+ "aliases": [],
11105
+ "args": {},
11106
+ "description": "\n## Command Behavior\n\n**Configures authentication between a Git branch and a target Salesforce org for CI/CD deployments.**\n\nThis command facilitates the setup of automated CI/CD pipelines, enabling seamless deployments from specific Git branches to designated Salesforce orgs. It supports both standard Salesforce orgs and Dev Hub configurations, catering to various enterprise deployment workflows.\n\nKey functionalities include:\n\n- **Org Selection/Login:** Guides the user to select an existing Salesforce org or log in to a new one.\n- **Git Branch Association:** Allows associating a specific Git branch with the chosen Salesforce org.\n- **Merge Target Definition:** Enables defining target Git branches into which the configured branch can merge, ensuring controlled deployment flows.\n- **Salesforce Username Configuration:** Prompts for the Salesforce username to be used by the CI server for deployments.\n- **SSL Certificate Generation:** Automatically generates an SSL certificate for secure authentication.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's implementation involves several key technical aspects:\n\n- **SF CLI Integration:** Utilizes \n@salesforce/sf-plugins-core\n for command structure and flag parsing.\n- **Interactive Prompts:** Employs the \nprompts\n library for interactive user input, guiding the configuration process.\n- **Git Integration:** Interacts with Git to retrieve branch information using \n`git().branch([\"--list\", \"-r\"])`\n.\n- **Configuration Management:** Leverages internal utilities (`checkConfig`, `getConfig`, `setConfig`, `setInConfigFile`) to read from and write to project-specific configuration files (e.g., `.sfdx-hardis.<branchName>.yml`).\n- **Salesforce CLI Execution:** Executes Salesforce CLI commands programmatically via `execSfdxJson` for org interactions.\n- **SSL Certificate Generation:** Calls `generateSSLCertificate` to create necessary SSL certificates for JWT-based authentication.\n- **WebSocket Communication:** Uses `WebSocketClient` for potential communication with external tools or processes, such as restarting the command in VS Code.\n- **Dependency Check:** Ensures the presence of `openssl` on the system, which is required for SSL certificate generation.\n",
11107
+ "examples": [
11108
+ "$ sf hardis:project:configure:auth"
11109
+ ],
11110
+ "flags": {
11111
+ "json": {
11112
+ "description": "Format output as json.",
11113
+ "helpGroup": "GLOBAL",
11114
+ "name": "json",
11115
+ "allowNo": false,
11116
+ "type": "boolean"
11117
+ },
11118
+ "flags-dir": {
11119
+ "helpGroup": "GLOBAL",
11120
+ "name": "flags-dir",
11121
+ "summary": "Import flag values from a directory.",
11122
+ "hasDynamicHelp": false,
11123
+ "multiple": false,
11124
+ "type": "option"
11125
+ },
11126
+ "devhub": {
11127
+ "char": "b",
11128
+ "description": "Configure project DevHub",
11129
+ "name": "devhub",
11130
+ "allowNo": false,
11131
+ "type": "boolean"
11132
+ },
11133
+ "debug": {
11134
+ "char": "d",
11135
+ "description": "Activate debug mode (more logs)",
11136
+ "name": "debug",
11137
+ "allowNo": false,
11138
+ "type": "boolean"
11139
+ },
11140
+ "websocket": {
11141
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
11142
+ "name": "websocket",
11143
+ "hasDynamicHelp": false,
11144
+ "multiple": false,
11145
+ "type": "option"
11146
+ },
11147
+ "skipauth": {
11148
+ "description": "Skip authentication check when a default username is required",
11149
+ "name": "skipauth",
11150
+ "allowNo": false,
11151
+ "type": "boolean"
11152
+ },
11153
+ "target-org": {
11154
+ "aliases": [
11155
+ "targetusername",
11156
+ "u"
11157
+ ],
11158
+ "char": "o",
11159
+ "deprecateAliases": true,
11160
+ "name": "target-org",
11161
+ "noCacheDefault": true,
11162
+ "summary": "Username or alias of the target org.",
11163
+ "hasDynamicHelp": true,
11164
+ "multiple": false,
11165
+ "type": "option"
11166
+ },
11167
+ "target-dev-hub": {
11168
+ "aliases": [
11169
+ "targetdevhubusername"
11170
+ ],
11171
+ "char": "v",
11172
+ "deprecateAliases": true,
11173
+ "name": "target-dev-hub",
11174
+ "noCacheDefault": true,
11175
+ "required": false,
11176
+ "summary": "Username or alias of the Dev Hub org.",
11177
+ "hasDynamicHelp": true,
11178
+ "multiple": false,
11179
+ "type": "option"
11180
+ }
11181
+ },
11182
+ "hasDynamicHelp": true,
11183
+ "hiddenAliases": [],
11184
+ "id": "hardis:project:configure:auth",
11085
11185
  "pluginAlias": "sfdx-hardis",
11086
11186
  "pluginName": "sfdx-hardis",
11087
11187
  "pluginType": "core",
11088
11188
  "strict": true,
11089
11189
  "enableJsonFlag": true,
11090
- "title": "Clean retrieved empty items in dx sources",
11091
- "requiresProject": true,
11190
+ "title": "Configure authentication",
11191
+ "requiresProject": false,
11192
+ "requiresDependencies": [
11193
+ "openssl"
11194
+ ],
11092
11195
  "isESM": true,
11093
11196
  "relativePath": [
11094
11197
  "lib",
11095
11198
  "commands",
11096
11199
  "hardis",
11097
11200
  "project",
11098
- "clean",
11099
- "xml.js"
11201
+ "configure",
11202
+ "auth.js"
11100
11203
  ],
11101
11204
  "aliasPermutations": [],
11102
11205
  "permutations": [
11103
- "hardis:project:clean:xml",
11104
- "project:hardis:clean:xml",
11105
- "project:clean:hardis:xml",
11106
- "project:clean:xml:hardis",
11107
- "hardis:clean:project:xml",
11108
- "clean:hardis:project:xml",
11109
- "clean:project:hardis:xml",
11110
- "clean:project:xml:hardis",
11111
- "hardis:clean:xml:project",
11112
- "clean:hardis:xml:project",
11113
- "clean:xml:hardis:project",
11114
- "clean:xml:project:hardis",
11115
- "hardis:project:xml:clean",
11116
- "project:hardis:xml:clean",
11117
- "project:xml:hardis:clean",
11118
- "project:xml:clean:hardis",
11119
- "hardis:xml:project:clean",
11120
- "xml:hardis:project:clean",
11121
- "xml:project:hardis:clean",
11122
- "xml:project:clean:hardis",
11123
- "hardis:xml:clean:project",
11124
- "xml:hardis:clean:project",
11125
- "xml:clean:hardis:project",
11126
- "xml:clean:project:hardis"
11206
+ "hardis:project:configure:auth",
11207
+ "project:hardis:configure:auth",
11208
+ "project:configure:hardis:auth",
11209
+ "project:configure:auth:hardis",
11210
+ "hardis:configure:project:auth",
11211
+ "configure:hardis:project:auth",
11212
+ "configure:project:hardis:auth",
11213
+ "configure:project:auth:hardis",
11214
+ "hardis:configure:auth:project",
11215
+ "configure:hardis:auth:project",
11216
+ "configure:auth:hardis:project",
11217
+ "configure:auth:project:hardis",
11218
+ "hardis:project:auth:configure",
11219
+ "project:hardis:auth:configure",
11220
+ "project:auth:hardis:configure",
11221
+ "project:auth:configure:hardis",
11222
+ "hardis:auth:project:configure",
11223
+ "auth:hardis:project:configure",
11224
+ "auth:project:hardis:configure",
11225
+ "auth:project:configure:hardis",
11226
+ "hardis:auth:configure:project",
11227
+ "auth:hardis:configure:project",
11228
+ "auth:configure:hardis:project",
11229
+ "auth:configure:project:hardis"
11127
11230
  ]
11128
11231
  },
11129
11232
  "hardis:project:deploy:notify": {
@@ -12301,6 +12404,221 @@
12301
12404
  "validate:deploy:project:hardis"
12302
12405
  ]
12303
12406
  },
12407
+ "hardis:project:fix:profiletabs": {
12408
+ "aliases": [],
12409
+ "args": {},
12410
+ "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",
12411
+ "examples": [
12412
+ "$ sf hardis:project:fix:profiletabs"
12413
+ ],
12414
+ "flags": {
12415
+ "json": {
12416
+ "description": "Format output as json.",
12417
+ "helpGroup": "GLOBAL",
12418
+ "name": "json",
12419
+ "allowNo": false,
12420
+ "type": "boolean"
12421
+ },
12422
+ "flags-dir": {
12423
+ "helpGroup": "GLOBAL",
12424
+ "name": "flags-dir",
12425
+ "summary": "Import flag values from a directory.",
12426
+ "hasDynamicHelp": false,
12427
+ "multiple": false,
12428
+ "type": "option"
12429
+ },
12430
+ "path": {
12431
+ "char": "p",
12432
+ "description": "Root folder",
12433
+ "name": "path",
12434
+ "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12435
+ "hasDynamicHelp": false,
12436
+ "multiple": false,
12437
+ "type": "option"
12438
+ },
12439
+ "debug": {
12440
+ "char": "d",
12441
+ "description": "Activate debug mode (more logs)",
12442
+ "name": "debug",
12443
+ "allowNo": false,
12444
+ "type": "boolean"
12445
+ },
12446
+ "websocket": {
12447
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12448
+ "name": "websocket",
12449
+ "hasDynamicHelp": false,
12450
+ "multiple": false,
12451
+ "type": "option"
12452
+ },
12453
+ "skipauth": {
12454
+ "description": "Skip authentication check when a default username is required",
12455
+ "name": "skipauth",
12456
+ "allowNo": false,
12457
+ "type": "boolean"
12458
+ },
12459
+ "target-org": {
12460
+ "aliases": [
12461
+ "targetusername",
12462
+ "u"
12463
+ ],
12464
+ "char": "o",
12465
+ "deprecateAliases": true,
12466
+ "name": "target-org",
12467
+ "noCacheDefault": true,
12468
+ "required": true,
12469
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
12470
+ "hasDynamicHelp": true,
12471
+ "multiple": false,
12472
+ "type": "option"
12473
+ }
12474
+ },
12475
+ "hasDynamicHelp": true,
12476
+ "hiddenAliases": [],
12477
+ "id": "hardis:project:fix:profiletabs",
12478
+ "pluginAlias": "sfdx-hardis",
12479
+ "pluginName": "sfdx-hardis",
12480
+ "pluginType": "core",
12481
+ "strict": true,
12482
+ "enableJsonFlag": true,
12483
+ "title": "Fix profiles to add tabs that are not retrieved by SF CLI",
12484
+ "requiresProject": true,
12485
+ "isESM": true,
12486
+ "relativePath": [
12487
+ "lib",
12488
+ "commands",
12489
+ "hardis",
12490
+ "project",
12491
+ "fix",
12492
+ "profiletabs.js"
12493
+ ],
12494
+ "aliasPermutations": [],
12495
+ "permutations": [
12496
+ "hardis:project:fix:profiletabs",
12497
+ "project:hardis:fix:profiletabs",
12498
+ "project:fix:hardis:profiletabs",
12499
+ "project:fix:profiletabs:hardis",
12500
+ "hardis:fix:project:profiletabs",
12501
+ "fix:hardis:project:profiletabs",
12502
+ "fix:project:hardis:profiletabs",
12503
+ "fix:project:profiletabs:hardis",
12504
+ "hardis:fix:profiletabs:project",
12505
+ "fix:hardis:profiletabs:project",
12506
+ "fix:profiletabs:hardis:project",
12507
+ "fix:profiletabs:project:hardis",
12508
+ "hardis:project:profiletabs:fix",
12509
+ "project:hardis:profiletabs:fix",
12510
+ "project:profiletabs:hardis:fix",
12511
+ "project:profiletabs:fix:hardis",
12512
+ "hardis:profiletabs:project:fix",
12513
+ "profiletabs:hardis:project:fix",
12514
+ "profiletabs:project:hardis:fix",
12515
+ "profiletabs:project:fix:hardis",
12516
+ "hardis:profiletabs:fix:project",
12517
+ "profiletabs:hardis:fix:project",
12518
+ "profiletabs:fix:hardis:project",
12519
+ "profiletabs:fix:project:hardis"
12520
+ ]
12521
+ },
12522
+ "hardis:project:fix:v53flexipages": {
12523
+ "aliases": [],
12524
+ "args": {},
12525
+ "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",
12526
+ "examples": [
12527
+ "$ sf hardis:project:fix:v53flexipages"
12528
+ ],
12529
+ "flags": {
12530
+ "json": {
12531
+ "description": "Format output as json.",
12532
+ "helpGroup": "GLOBAL",
12533
+ "name": "json",
12534
+ "allowNo": false,
12535
+ "type": "boolean"
12536
+ },
12537
+ "flags-dir": {
12538
+ "helpGroup": "GLOBAL",
12539
+ "name": "flags-dir",
12540
+ "summary": "Import flag values from a directory.",
12541
+ "hasDynamicHelp": false,
12542
+ "multiple": false,
12543
+ "type": "option"
12544
+ },
12545
+ "path": {
12546
+ "char": "p",
12547
+ "description": "Root folder",
12548
+ "name": "path",
12549
+ "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12550
+ "hasDynamicHelp": false,
12551
+ "multiple": false,
12552
+ "type": "option"
12553
+ },
12554
+ "debug": {
12555
+ "char": "d",
12556
+ "description": "Activate debug mode (more logs)",
12557
+ "name": "debug",
12558
+ "allowNo": false,
12559
+ "type": "boolean"
12560
+ },
12561
+ "websocket": {
12562
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12563
+ "name": "websocket",
12564
+ "hasDynamicHelp": false,
12565
+ "multiple": false,
12566
+ "type": "option"
12567
+ },
12568
+ "skipauth": {
12569
+ "description": "Skip authentication check when a default username is required",
12570
+ "name": "skipauth",
12571
+ "allowNo": false,
12572
+ "type": "boolean"
12573
+ }
12574
+ },
12575
+ "hasDynamicHelp": false,
12576
+ "hiddenAliases": [],
12577
+ "id": "hardis:project:fix:v53flexipages",
12578
+ "pluginAlias": "sfdx-hardis",
12579
+ "pluginName": "sfdx-hardis",
12580
+ "pluginType": "core",
12581
+ "strict": true,
12582
+ "enableJsonFlag": true,
12583
+ "title": "Fix flexipages for v53",
12584
+ "requiresProject": true,
12585
+ "isESM": true,
12586
+ "relativePath": [
12587
+ "lib",
12588
+ "commands",
12589
+ "hardis",
12590
+ "project",
12591
+ "fix",
12592
+ "v53flexipages.js"
12593
+ ],
12594
+ "aliasPermutations": [],
12595
+ "permutations": [
12596
+ "hardis:project:fix:v53flexipages",
12597
+ "project:hardis:fix:v53flexipages",
12598
+ "project:fix:hardis:v53flexipages",
12599
+ "project:fix:v53flexipages:hardis",
12600
+ "hardis:fix:project:v53flexipages",
12601
+ "fix:hardis:project:v53flexipages",
12602
+ "fix:project:hardis:v53flexipages",
12603
+ "fix:project:v53flexipages:hardis",
12604
+ "hardis:fix:v53flexipages:project",
12605
+ "fix:hardis:v53flexipages:project",
12606
+ "fix:v53flexipages:hardis:project",
12607
+ "fix:v53flexipages:project:hardis",
12608
+ "hardis:project:v53flexipages:fix",
12609
+ "project:hardis:v53flexipages:fix",
12610
+ "project:v53flexipages:hardis:fix",
12611
+ "project:v53flexipages:fix:hardis",
12612
+ "hardis:v53flexipages:project:fix",
12613
+ "v53flexipages:hardis:project:fix",
12614
+ "v53flexipages:project:hardis:fix",
12615
+ "v53flexipages:project:fix:hardis",
12616
+ "hardis:v53flexipages:fix:project",
12617
+ "v53flexipages:hardis:fix:project",
12618
+ "v53flexipages:fix:hardis:project",
12619
+ "v53flexipages:fix:project:hardis"
12620
+ ]
12621
+ },
12304
12622
  "hardis:project:generate:bypass": {
12305
12623
  "aliases": [],
12306
12624
  "args": {},
@@ -12524,255 +12842,28 @@
12524
12842
  "type": "boolean"
12525
12843
  },
12526
12844
  "websocket": {
12527
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12528
- "name": "websocket",
12529
- "hasDynamicHelp": false,
12530
- "multiple": false,
12531
- "type": "option"
12532
- },
12533
- "skipauth": {
12534
- "description": "Skip authentication check when a default username is required",
12535
- "name": "skipauth",
12536
- "allowNo": false,
12537
- "type": "boolean"
12538
- }
12539
- },
12540
- "hasDynamicHelp": false,
12541
- "hiddenAliases": [],
12542
- "id": "hardis:project:generate:flow-git-diff",
12543
- "pluginAlias": "sfdx-hardis",
12544
- "pluginName": "sfdx-hardis",
12545
- "pluginType": "core",
12546
- "strict": true,
12547
- "enableJsonFlag": true,
12548
- "title": "Generate Flow Visual Gif Diff",
12549
- "requiresProject": true,
12550
- "isESM": true,
12551
- "relativePath": [
12552
- "lib",
12553
- "commands",
12554
- "hardis",
12555
- "project",
12556
- "generate",
12557
- "flow-git-diff.js"
12558
- ],
12559
- "aliasPermutations": [],
12560
- "permutations": [
12561
- "hardis:project:generate:flow-git-diff",
12562
- "project:hardis:generate:flow-git-diff",
12563
- "project:generate:hardis:flow-git-diff",
12564
- "project:generate:flow-git-diff:hardis",
12565
- "hardis:generate:project:flow-git-diff",
12566
- "generate:hardis:project:flow-git-diff",
12567
- "generate:project:hardis:flow-git-diff",
12568
- "generate:project:flow-git-diff:hardis",
12569
- "hardis:generate:flow-git-diff:project",
12570
- "generate:hardis:flow-git-diff:project",
12571
- "generate:flow-git-diff:hardis:project",
12572
- "generate:flow-git-diff:project:hardis",
12573
- "hardis:project:flow-git-diff:generate",
12574
- "project:hardis:flow-git-diff:generate",
12575
- "project:flow-git-diff:hardis:generate",
12576
- "project:flow-git-diff:generate:hardis",
12577
- "hardis:flow-git-diff:project:generate",
12578
- "flow-git-diff:hardis:project:generate",
12579
- "flow-git-diff:project:hardis:generate",
12580
- "flow-git-diff:project:generate:hardis",
12581
- "hardis:flow-git-diff:generate:project",
12582
- "flow-git-diff:hardis:generate:project",
12583
- "flow-git-diff:generate:hardis:project",
12584
- "flow-git-diff:generate:project:hardis"
12585
- ]
12586
- },
12587
- "hardis:project:generate:gitdelta": {
12588
- "aliases": [],
12589
- "args": {},
12590
- "description": "\n## Command Behavior\n\n**Generates a `package.xml` and `destructiveChanges.xml` representing the metadata differences between two Git commits.**\n\nThis command is a powerful tool for managing Salesforce metadata deployments by focusing only on the changes between specific points in your version control history. It leverages `sfdx-git-delta` to accurately identify added, modified, and deleted metadata components.\n\nKey functionalities:\n\n- **Commit-Based Comparison:** Allows you to specify a starting commit (`--fromcommit`) and an ending commit (`--tocommit`) to define the scope of the delta. If not provided, interactive prompts will guide you through selecting commits from your Git history.\n- **Branch Selection:** You can specify a Git branch (`--branch`) to work with. If not provided, it will prompt you to select one.\n- **`package.xml` Generation:** Creates a `package.xml` file that lists all metadata components that have been added or modified between the specified commits.\n- **`destructiveChanges.xml` Generation:** Creates a `destructiveChanges.xml` file that lists all metadata components that have been deleted between the specified commits.\n- **Temporary File Output:** The generated `package.xml` and `destructiveChanges.xml` files are placed in a temporary directory.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Git Integration:** Uses `simple-git` (`git()`) to interact with the Git repository, including fetching branches (`git().fetch()`), checking out branches (`git().checkoutBranch()`), and listing commit history (`git().log()`).\n- **Interactive Prompts:** Leverages the `prompts` library to guide the user through selecting a Git branch and specific commits for delta generation if they are not provided as command-line arguments.\n- **`sfdx-git-delta` Integration:** The core of the delta generation is handled by the `callSfdxGitDelta` utility function, which wraps the `sfdx-git-delta` tool. This tool performs the actual Git comparison and generates the `package.xml` and `destructiveChanges.xml` files.\n- **Temporary Directory Management:** Uses `createTempDir` to create a temporary directory for storing the generated XML files, ensuring a clean working environment.\n- **File System Operations:** Uses `fs-extra` to manage temporary files and directories.\n- **User Feedback:** Provides clear messages to the user about the generated files and their locations.\n</details>\n",
12591
- "examples": [
12592
- "$ sf hardis:project:generate:gitdelta"
12593
- ],
12594
- "flags": {
12595
- "json": {
12596
- "description": "Format output as json.",
12597
- "helpGroup": "GLOBAL",
12598
- "name": "json",
12599
- "allowNo": false,
12600
- "type": "boolean"
12601
- },
12602
- "flags-dir": {
12603
- "helpGroup": "GLOBAL",
12604
- "name": "flags-dir",
12605
- "summary": "Import flag values from a directory.",
12606
- "hasDynamicHelp": false,
12607
- "multiple": false,
12608
- "type": "option"
12609
- },
12610
- "branch": {
12611
- "description": "Git branch to use to generate delta",
12612
- "name": "branch",
12613
- "hasDynamicHelp": false,
12614
- "multiple": false,
12615
- "type": "option"
12616
- },
12617
- "fromcommit": {
12618
- "description": "Hash of commit to start from",
12619
- "name": "fromcommit",
12620
- "hasDynamicHelp": false,
12621
- "multiple": false,
12622
- "type": "option"
12623
- },
12624
- "tocommit": {
12625
- "description": "Hash of commit to stop at",
12626
- "name": "tocommit",
12627
- "hasDynamicHelp": false,
12628
- "multiple": false,
12629
- "type": "option"
12630
- },
12631
- "debug": {
12632
- "char": "d",
12633
- "description": "Activate debug mode (more logs)",
12634
- "name": "debug",
12635
- "allowNo": false,
12636
- "type": "boolean"
12637
- },
12638
- "websocket": {
12639
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12640
- "name": "websocket",
12641
- "hasDynamicHelp": false,
12642
- "multiple": false,
12643
- "type": "option"
12644
- },
12645
- "skipauth": {
12646
- "description": "Skip authentication check when a default username is required",
12647
- "name": "skipauth",
12648
- "allowNo": false,
12649
- "type": "boolean"
12650
- }
12651
- },
12652
- "hasDynamicHelp": false,
12653
- "hiddenAliases": [],
12654
- "id": "hardis:project:generate:gitdelta",
12655
- "pluginAlias": "sfdx-hardis",
12656
- "pluginName": "sfdx-hardis",
12657
- "pluginType": "core",
12658
- "strict": true,
12659
- "enableJsonFlag": true,
12660
- "title": "Generate Git Delta",
12661
- "requiresProject": false,
12662
- "isESM": true,
12663
- "relativePath": [
12664
- "lib",
12665
- "commands",
12666
- "hardis",
12667
- "project",
12668
- "generate",
12669
- "gitdelta.js"
12670
- ],
12671
- "aliasPermutations": [],
12672
- "permutations": [
12673
- "hardis:project:generate:gitdelta",
12674
- "project:hardis:generate:gitdelta",
12675
- "project:generate:hardis:gitdelta",
12676
- "project:generate:gitdelta:hardis",
12677
- "hardis:generate:project:gitdelta",
12678
- "generate:hardis:project:gitdelta",
12679
- "generate:project:hardis:gitdelta",
12680
- "generate:project:gitdelta:hardis",
12681
- "hardis:generate:gitdelta:project",
12682
- "generate:hardis:gitdelta:project",
12683
- "generate:gitdelta:hardis:project",
12684
- "generate:gitdelta:project:hardis",
12685
- "hardis:project:gitdelta:generate",
12686
- "project:hardis:gitdelta:generate",
12687
- "project:gitdelta:hardis:generate",
12688
- "project:gitdelta:generate:hardis",
12689
- "hardis:gitdelta:project:generate",
12690
- "gitdelta:hardis:project:generate",
12691
- "gitdelta:project:hardis:generate",
12692
- "gitdelta:project:generate:hardis",
12693
- "hardis:gitdelta:generate:project",
12694
- "gitdelta:hardis:generate:project",
12695
- "gitdelta:generate:hardis:project",
12696
- "gitdelta:generate:project:hardis"
12697
- ]
12698
- },
12699
- "hardis:project:fix:profiletabs": {
12700
- "aliases": [],
12701
- "args": {},
12702
- "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",
12703
- "examples": [
12704
- "$ sf hardis:project:fix:profiletabs"
12705
- ],
12706
- "flags": {
12707
- "json": {
12708
- "description": "Format output as json.",
12709
- "helpGroup": "GLOBAL",
12710
- "name": "json",
12711
- "allowNo": false,
12712
- "type": "boolean"
12713
- },
12714
- "flags-dir": {
12715
- "helpGroup": "GLOBAL",
12716
- "name": "flags-dir",
12717
- "summary": "Import flag values from a directory.",
12718
- "hasDynamicHelp": false,
12719
- "multiple": false,
12720
- "type": "option"
12721
- },
12722
- "path": {
12723
- "char": "p",
12724
- "description": "Root folder",
12725
- "name": "path",
12726
- "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12727
- "hasDynamicHelp": false,
12728
- "multiple": false,
12729
- "type": "option"
12730
- },
12731
- "debug": {
12732
- "char": "d",
12733
- "description": "Activate debug mode (more logs)",
12734
- "name": "debug",
12735
- "allowNo": false,
12736
- "type": "boolean"
12737
- },
12738
- "websocket": {
12739
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12740
- "name": "websocket",
12741
- "hasDynamicHelp": false,
12742
- "multiple": false,
12743
- "type": "option"
12744
- },
12745
- "skipauth": {
12746
- "description": "Skip authentication check when a default username is required",
12747
- "name": "skipauth",
12748
- "allowNo": false,
12749
- "type": "boolean"
12750
- },
12751
- "target-org": {
12752
- "aliases": [
12753
- "targetusername",
12754
- "u"
12755
- ],
12756
- "char": "o",
12757
- "deprecateAliases": true,
12758
- "name": "target-org",
12759
- "noCacheDefault": true,
12760
- "required": true,
12761
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
12762
- "hasDynamicHelp": true,
12845
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
12846
+ "name": "websocket",
12847
+ "hasDynamicHelp": false,
12763
12848
  "multiple": false,
12764
12849
  "type": "option"
12850
+ },
12851
+ "skipauth": {
12852
+ "description": "Skip authentication check when a default username is required",
12853
+ "name": "skipauth",
12854
+ "allowNo": false,
12855
+ "type": "boolean"
12765
12856
  }
12766
12857
  },
12767
- "hasDynamicHelp": true,
12858
+ "hasDynamicHelp": false,
12768
12859
  "hiddenAliases": [],
12769
- "id": "hardis:project:fix:profiletabs",
12860
+ "id": "hardis:project:generate:flow-git-diff",
12770
12861
  "pluginAlias": "sfdx-hardis",
12771
12862
  "pluginName": "sfdx-hardis",
12772
12863
  "pluginType": "core",
12773
12864
  "strict": true,
12774
12865
  "enableJsonFlag": true,
12775
- "title": "Fix profiles to add tabs that are not retrieved by SF CLI",
12866
+ "title": "Generate Flow Visual Gif Diff",
12776
12867
  "requiresProject": true,
12777
12868
  "isESM": true,
12778
12869
  "relativePath": [
@@ -12780,43 +12871,43 @@
12780
12871
  "commands",
12781
12872
  "hardis",
12782
12873
  "project",
12783
- "fix",
12784
- "profiletabs.js"
12874
+ "generate",
12875
+ "flow-git-diff.js"
12785
12876
  ],
12786
12877
  "aliasPermutations": [],
12787
12878
  "permutations": [
12788
- "hardis:project:fix:profiletabs",
12789
- "project:hardis:fix:profiletabs",
12790
- "project:fix:hardis:profiletabs",
12791
- "project:fix:profiletabs:hardis",
12792
- "hardis:fix:project:profiletabs",
12793
- "fix:hardis:project:profiletabs",
12794
- "fix:project:hardis:profiletabs",
12795
- "fix:project:profiletabs:hardis",
12796
- "hardis:fix:profiletabs:project",
12797
- "fix:hardis:profiletabs:project",
12798
- "fix:profiletabs:hardis:project",
12799
- "fix:profiletabs:project:hardis",
12800
- "hardis:project:profiletabs:fix",
12801
- "project:hardis:profiletabs:fix",
12802
- "project:profiletabs:hardis:fix",
12803
- "project:profiletabs:fix:hardis",
12804
- "hardis:profiletabs:project:fix",
12805
- "profiletabs:hardis:project:fix",
12806
- "profiletabs:project:hardis:fix",
12807
- "profiletabs:project:fix:hardis",
12808
- "hardis:profiletabs:fix:project",
12809
- "profiletabs:hardis:fix:project",
12810
- "profiletabs:fix:hardis:project",
12811
- "profiletabs:fix:project:hardis"
12879
+ "hardis:project:generate:flow-git-diff",
12880
+ "project:hardis:generate:flow-git-diff",
12881
+ "project:generate:hardis:flow-git-diff",
12882
+ "project:generate:flow-git-diff:hardis",
12883
+ "hardis:generate:project:flow-git-diff",
12884
+ "generate:hardis:project:flow-git-diff",
12885
+ "generate:project:hardis:flow-git-diff",
12886
+ "generate:project:flow-git-diff:hardis",
12887
+ "hardis:generate:flow-git-diff:project",
12888
+ "generate:hardis:flow-git-diff:project",
12889
+ "generate:flow-git-diff:hardis:project",
12890
+ "generate:flow-git-diff:project:hardis",
12891
+ "hardis:project:flow-git-diff:generate",
12892
+ "project:hardis:flow-git-diff:generate",
12893
+ "project:flow-git-diff:hardis:generate",
12894
+ "project:flow-git-diff:generate:hardis",
12895
+ "hardis:flow-git-diff:project:generate",
12896
+ "flow-git-diff:hardis:project:generate",
12897
+ "flow-git-diff:project:hardis:generate",
12898
+ "flow-git-diff:project:generate:hardis",
12899
+ "hardis:flow-git-diff:generate:project",
12900
+ "flow-git-diff:hardis:generate:project",
12901
+ "flow-git-diff:generate:hardis:project",
12902
+ "flow-git-diff:generate:project:hardis"
12812
12903
  ]
12813
12904
  },
12814
- "hardis:project:fix:v53flexipages": {
12905
+ "hardis:project:generate:gitdelta": {
12815
12906
  "aliases": [],
12816
12907
  "args": {},
12817
- "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",
12908
+ "description": "\n## Command Behavior\n\n**Generates a `package.xml` and `destructiveChanges.xml` representing the metadata differences between two Git commits.**\n\nThis command is a powerful tool for managing Salesforce metadata deployments by focusing only on the changes between specific points in your version control history. It leverages `sfdx-git-delta` to accurately identify added, modified, and deleted metadata components.\n\nKey functionalities:\n\n- **Commit-Based Comparison:** Allows you to specify a starting commit (`--fromcommit`) and an ending commit (`--tocommit`) to define the scope of the delta. If not provided, interactive prompts will guide you through selecting commits from your Git history.\n- **Branch Selection:** You can specify a Git branch (`--branch`) to work with. If not provided, it will prompt you to select one.\n- **`package.xml` Generation:** Creates a `package.xml` file that lists all metadata components that have been added or modified between the specified commits.\n- **`destructiveChanges.xml` Generation:** Creates a `destructiveChanges.xml` file that lists all metadata components that have been deleted between the specified commits.\n- **Temporary File Output:** The generated `package.xml` and `destructiveChanges.xml` files are placed in a temporary directory.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Git Integration:** Uses `simple-git` (`git()`) to interact with the Git repository, including fetching branches (`git().fetch()`), checking out branches (`git().checkoutBranch()`), and listing commit history (`git().log()`).\n- **Interactive Prompts:** Leverages the `prompts` library to guide the user through selecting a Git branch and specific commits for delta generation if they are not provided as command-line arguments.\n- **`sfdx-git-delta` Integration:** The core of the delta generation is handled by the `callSfdxGitDelta` utility function, which wraps the `sfdx-git-delta` tool. This tool performs the actual Git comparison and generates the `package.xml` and `destructiveChanges.xml` files.\n- **Temporary Directory Management:** Uses `createTempDir` to create a temporary directory for storing the generated XML files, ensuring a clean working environment.\n- **File System Operations:** Uses `fs-extra` to manage temporary files and directories.\n- **User Feedback:** Provides clear messages to the user about the generated files and their locations.\n</details>\n",
12818
12909
  "examples": [
12819
- "$ sf hardis:project:fix:v53flexipages"
12910
+ "$ sf hardis:project:generate:gitdelta"
12820
12911
  ],
12821
12912
  "flags": {
12822
12913
  "json": {
@@ -12834,11 +12925,23 @@
12834
12925
  "multiple": false,
12835
12926
  "type": "option"
12836
12927
  },
12837
- "path": {
12838
- "char": "p",
12839
- "description": "Root folder",
12840
- "name": "path",
12841
- "default": "/home/runner/work/sfdx-hardis/sfdx-hardis",
12928
+ "branch": {
12929
+ "description": "Git branch to use to generate delta",
12930
+ "name": "branch",
12931
+ "hasDynamicHelp": false,
12932
+ "multiple": false,
12933
+ "type": "option"
12934
+ },
12935
+ "fromcommit": {
12936
+ "description": "Hash of commit to start from",
12937
+ "name": "fromcommit",
12938
+ "hasDynamicHelp": false,
12939
+ "multiple": false,
12940
+ "type": "option"
12941
+ },
12942
+ "tocommit": {
12943
+ "description": "Hash of commit to stop at",
12944
+ "name": "tocommit",
12842
12945
  "hasDynamicHelp": false,
12843
12946
  "multiple": false,
12844
12947
  "type": "option"
@@ -12866,49 +12969,49 @@
12866
12969
  },
12867
12970
  "hasDynamicHelp": false,
12868
12971
  "hiddenAliases": [],
12869
- "id": "hardis:project:fix:v53flexipages",
12972
+ "id": "hardis:project:generate:gitdelta",
12870
12973
  "pluginAlias": "sfdx-hardis",
12871
12974
  "pluginName": "sfdx-hardis",
12872
12975
  "pluginType": "core",
12873
12976
  "strict": true,
12874
12977
  "enableJsonFlag": true,
12875
- "title": "Fix flexipages for v53",
12876
- "requiresProject": true,
12978
+ "title": "Generate Git Delta",
12979
+ "requiresProject": false,
12877
12980
  "isESM": true,
12878
12981
  "relativePath": [
12879
12982
  "lib",
12880
12983
  "commands",
12881
12984
  "hardis",
12882
12985
  "project",
12883
- "fix",
12884
- "v53flexipages.js"
12986
+ "generate",
12987
+ "gitdelta.js"
12885
12988
  ],
12886
12989
  "aliasPermutations": [],
12887
12990
  "permutations": [
12888
- "hardis:project:fix:v53flexipages",
12889
- "project:hardis:fix:v53flexipages",
12890
- "project:fix:hardis:v53flexipages",
12891
- "project:fix:v53flexipages:hardis",
12892
- "hardis:fix:project:v53flexipages",
12893
- "fix:hardis:project:v53flexipages",
12894
- "fix:project:hardis:v53flexipages",
12895
- "fix:project:v53flexipages:hardis",
12896
- "hardis:fix:v53flexipages:project",
12897
- "fix:hardis:v53flexipages:project",
12898
- "fix:v53flexipages:hardis:project",
12899
- "fix:v53flexipages:project:hardis",
12900
- "hardis:project:v53flexipages:fix",
12901
- "project:hardis:v53flexipages:fix",
12902
- "project:v53flexipages:hardis:fix",
12903
- "project:v53flexipages:fix:hardis",
12904
- "hardis:v53flexipages:project:fix",
12905
- "v53flexipages:hardis:project:fix",
12906
- "v53flexipages:project:hardis:fix",
12907
- "v53flexipages:project:fix:hardis",
12908
- "hardis:v53flexipages:fix:project",
12909
- "v53flexipages:hardis:fix:project",
12910
- "v53flexipages:fix:hardis:project",
12911
- "v53flexipages:fix:project:hardis"
12991
+ "hardis:project:generate:gitdelta",
12992
+ "project:hardis:generate:gitdelta",
12993
+ "project:generate:hardis:gitdelta",
12994
+ "project:generate:gitdelta:hardis",
12995
+ "hardis:generate:project:gitdelta",
12996
+ "generate:hardis:project:gitdelta",
12997
+ "generate:project:hardis:gitdelta",
12998
+ "generate:project:gitdelta:hardis",
12999
+ "hardis:generate:gitdelta:project",
13000
+ "generate:hardis:gitdelta:project",
13001
+ "generate:gitdelta:hardis:project",
13002
+ "generate:gitdelta:project:hardis",
13003
+ "hardis:project:gitdelta:generate",
13004
+ "project:hardis:gitdelta:generate",
13005
+ "project:gitdelta:hardis:generate",
13006
+ "project:gitdelta:generate:hardis",
13007
+ "hardis:gitdelta:project:generate",
13008
+ "gitdelta:hardis:project:generate",
13009
+ "gitdelta:project:hardis:generate",
13010
+ "gitdelta:project:generate:hardis",
13011
+ "hardis:gitdelta:generate:project",
13012
+ "gitdelta:hardis:generate:project",
13013
+ "gitdelta:generate:hardis:project",
13014
+ "gitdelta:generate:project:hardis"
12912
13015
  ]
12913
13016
  },
12914
13017
  "hardis:project:metadata:findduplicates": {
@@ -13024,109 +13127,6 @@
13024
13127
  "findduplicates:metadata:project:hardis"
13025
13128
  ]
13026
13129
  },
13027
- "hardis:project:convert:profilestopermsets": {
13028
- "aliases": [],
13029
- "args": {},
13030
- "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",
13031
- "examples": [
13032
- "$ sf hardis:project:convert:profilestopermsets"
13033
- ],
13034
- "flags": {
13035
- "json": {
13036
- "description": "Format output as json.",
13037
- "helpGroup": "GLOBAL",
13038
- "name": "json",
13039
- "allowNo": false,
13040
- "type": "boolean"
13041
- },
13042
- "flags-dir": {
13043
- "helpGroup": "GLOBAL",
13044
- "name": "flags-dir",
13045
- "summary": "Import flag values from a directory.",
13046
- "hasDynamicHelp": false,
13047
- "multiple": false,
13048
- "type": "option"
13049
- },
13050
- "except": {
13051
- "char": "e",
13052
- "description": "List of filters",
13053
- "name": "except",
13054
- "default": [],
13055
- "hasDynamicHelp": false,
13056
- "multiple": true,
13057
- "type": "option"
13058
- },
13059
- "debug": {
13060
- "char": "d",
13061
- "description": "Activate debug mode (more logs)",
13062
- "name": "debug",
13063
- "allowNo": false,
13064
- "type": "boolean"
13065
- },
13066
- "websocket": {
13067
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
13068
- "name": "websocket",
13069
- "hasDynamicHelp": false,
13070
- "multiple": false,
13071
- "type": "option"
13072
- },
13073
- "skipauth": {
13074
- "description": "Skip authentication check when a default username is required",
13075
- "name": "skipauth",
13076
- "allowNo": false,
13077
- "type": "boolean"
13078
- }
13079
- },
13080
- "hasDynamicHelp": false,
13081
- "hiddenAliases": [],
13082
- "id": "hardis:project:convert:profilestopermsets",
13083
- "pluginAlias": "sfdx-hardis",
13084
- "pluginName": "sfdx-hardis",
13085
- "pluginType": "core",
13086
- "strict": true,
13087
- "enableJsonFlag": true,
13088
- "title": "Convert Profiles into Permission Sets",
13089
- "requiresProject": true,
13090
- "requiresSfdxPlugins": [
13091
- "shane-sfdx-plugins"
13092
- ],
13093
- "isESM": true,
13094
- "relativePath": [
13095
- "lib",
13096
- "commands",
13097
- "hardis",
13098
- "project",
13099
- "convert",
13100
- "profilestopermsets.js"
13101
- ],
13102
- "aliasPermutations": [],
13103
- "permutations": [
13104
- "hardis:project:convert:profilestopermsets",
13105
- "project:hardis:convert:profilestopermsets",
13106
- "project:convert:hardis:profilestopermsets",
13107
- "project:convert:profilestopermsets:hardis",
13108
- "hardis:convert:project:profilestopermsets",
13109
- "convert:hardis:project:profilestopermsets",
13110
- "convert:project:hardis:profilestopermsets",
13111
- "convert:project:profilestopermsets:hardis",
13112
- "hardis:convert:profilestopermsets:project",
13113
- "convert:hardis:profilestopermsets:project",
13114
- "convert:profilestopermsets:hardis:project",
13115
- "convert:profilestopermsets:project:hardis",
13116
- "hardis:project:profilestopermsets:convert",
13117
- "project:hardis:profilestopermsets:convert",
13118
- "project:profilestopermsets:hardis:convert",
13119
- "project:profilestopermsets:convert:hardis",
13120
- "hardis:profilestopermsets:project:convert",
13121
- "profilestopermsets:hardis:project:convert",
13122
- "profilestopermsets:project:hardis:convert",
13123
- "profilestopermsets:project:convert:hardis",
13124
- "hardis:profilestopermsets:convert:project",
13125
- "profilestopermsets:hardis:convert:project",
13126
- "profilestopermsets:convert:hardis:project",
13127
- "profilestopermsets:convert:project:hardis"
13128
- ]
13129
- },
13130
13130
  "hardis:scratch:pool:create": {
13131
13131
  "aliases": [],
13132
13132
  "args": {},
@@ -15101,5 +15101,5 @@
15101
15101
  ]
15102
15102
  }
15103
15103
  },
15104
- "version": "6.1.3"
15104
+ "version": "6.1.4"
15105
15105
  }