sfdx-hardis 6.12.10 → 6.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2692,12 +2692,12 @@
2692
2692
  "mergexml:package:hardis"
2693
2693
  ]
2694
2694
  },
2695
- "hardis:project:create": {
2695
+ "hardis:packagexml:append": {
2696
2696
  "aliases": [],
2697
2697
  "args": {},
2698
- "description": "Create a new SFDX Project",
2698
+ "description": "\n## Command Behavior\n\n**Appends the content of one or more Salesforce `package.xml` files into a single target `package.xml` file.**\n\nThis command is useful for consolidating metadata definitions from various sources into a single manifest. For instance, you might have separate `package.xml` files for different features or metadata types, and this command allows you to combine them into one comprehensive file for deployment or retrieval.\n\nKey functionalities:\n\n- **Multiple Input Files:** Takes a comma-separated list of `package.xml` file paths as input.\n- **Single Output File:** Merges the content of all input files into a specified output `package.xml` file.\n- **Metadata Consolidation:** Combines the `<types>` and `<members>` elements from all input files, ensuring that all unique metadata components are included in the resulting file.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **File Parsing:** It reads and parses the XML content of each input `package.xml` file.\n- **Content Merging:** It iterates through the parsed XML structures, merging the `types` and `members` arrays. If a metadata type exists in multiple input files, its members are combined (duplicates are typically handled by the underlying XML utility).\n- **XML Building:** After consolidating the metadata, it rebuilds the XML structure for the output `package.xml` file.\n- **File Writing:** The newly constructed XML content is then written to the specified output file.\n- **`appendPackageXmlFilesContent` Utility:** The core logic for this operation is encapsulated within the `appendPackageXmlFilesContent` utility function, which handles the parsing, merging, and writing of the `package.xml` files.\n</details>\n",
2699
2699
  "examples": [
2700
- "$ sf hardis:project:create"
2700
+ "$ sf hardis packagexml append -p package1.xml,package2.xml -o package3.xml"
2701
2701
  ],
2702
2702
  "flags": {
2703
2703
  "json": {
@@ -2715,62 +2715,70 @@
2715
2715
  "multiple": false,
2716
2716
  "type": "option"
2717
2717
  },
2718
+ "packagexmls": {
2719
+ "char": "p",
2720
+ "description": "package.xml files path (separated by commas)",
2721
+ "name": "packagexmls",
2722
+ "required": true,
2723
+ "hasDynamicHelp": false,
2724
+ "multiple": false,
2725
+ "type": "option"
2726
+ },
2727
+ "outputfile": {
2728
+ "char": "f",
2729
+ "description": "package.xml output file",
2730
+ "name": "outputfile",
2731
+ "required": true,
2732
+ "hasDynamicHelp": false,
2733
+ "multiple": false,
2734
+ "type": "option"
2735
+ },
2718
2736
  "debug": {
2719
- "char": "d",
2720
- "description": "Activate debug mode (more logs)",
2737
+ "description": "debug",
2721
2738
  "name": "debug",
2722
2739
  "allowNo": false,
2723
2740
  "type": "boolean"
2724
2741
  },
2725
2742
  "websocket": {
2726
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
2743
+ "description": "websocket",
2727
2744
  "name": "websocket",
2728
2745
  "hasDynamicHelp": false,
2729
2746
  "multiple": false,
2730
2747
  "type": "option"
2731
- },
2732
- "skipauth": {
2733
- "description": "Skip authentication check when a default username is required",
2734
- "name": "skipauth",
2735
- "allowNo": false,
2736
- "type": "boolean"
2737
2748
  }
2738
2749
  },
2739
2750
  "hasDynamicHelp": false,
2740
2751
  "hiddenAliases": [],
2741
- "id": "hardis:project:create",
2752
+ "id": "hardis:packagexml:append",
2742
2753
  "pluginAlias": "sfdx-hardis",
2743
2754
  "pluginName": "sfdx-hardis",
2744
2755
  "pluginType": "core",
2745
2756
  "strict": true,
2746
2757
  "enableJsonFlag": true,
2747
- "title": "Login",
2748
- "requiresProject": false,
2749
2758
  "isESM": true,
2750
2759
  "relativePath": [
2751
2760
  "lib",
2752
2761
  "commands",
2753
2762
  "hardis",
2754
- "project",
2755
- "create.js"
2763
+ "packagexml",
2764
+ "append.js"
2756
2765
  ],
2757
2766
  "aliasPermutations": [],
2758
2767
  "permutations": [
2759
- "hardis:project:create",
2760
- "project:hardis:create",
2761
- "project:create:hardis",
2762
- "hardis:create:project",
2763
- "create:hardis:project",
2764
- "create:project:hardis"
2768
+ "hardis:packagexml:append",
2769
+ "packagexml:hardis:append",
2770
+ "packagexml:append:hardis",
2771
+ "hardis:append:packagexml",
2772
+ "append:hardis:packagexml",
2773
+ "append:packagexml:hardis"
2765
2774
  ]
2766
2775
  },
2767
- "hardis:project:lint": {
2776
+ "hardis:packagexml:remove": {
2768
2777
  "aliases": [],
2769
2778
  "args": {},
2770
- "description": "## Command Behavior\n\n**Applies syntactic analysis (linting) to your repository sources using Mega-Linter, ensuring code quality and adherence to coding standards.**\n\nThis command integrates Mega-Linter, a comprehensive linter orchestrator, into your Salesforce DX project. It helps identify and fix code style violations, potential bugs, and other issues across various file types relevant to Salesforce development.\n\nKey functionalities:\n\n- **Automated Linting:** Runs a suite of linters configured for Salesforce projects.\n- **Fixing Issues (`--fix` flag):** Automatically attempts to fix detected linting issues, saving manual effort.\n- **Configuration Management:** If `.mega-linter.yml` is not found, it guides you through the initial setup of Mega-Linter, prompting for the Salesforce flavor.\n- **CI/CD Integration:** Designed to be used in CI/CD pipelines to enforce code quality gates.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Mega-Linter Integration:** It leverages the `mega-linter-runner` library to execute Mega-Linter.\n- **Configuration Check:** Before running, it checks for the presence of `.mega-linter.yml`. If not found and not in a CI environment, it initiates an interactive setup process using `MegaLinterRunner().run({ install: true })`.\n- **Linter Execution:** It calls `MegaLinterRunner().run(megaLinterOptions)` with the `salesforce` flavor and the `fix` flag (if provided).\n- **Exit Code Handling:** The `process.exitCode` is set based on the Mega-Linter's exit status, allowing CI/CD pipelines to react to linting failures.\n- **User Feedback:** Provides clear messages about the success or failure of the linting process.\n</details>\n",
2779
+ "description": "\n## Command Behavior\n\n**Removes metadata components from a `package.xml` file that are also present in another `package.xml` file (e.g., a `destructiveChanges.xml`).**\n\nThis command is useful for refining your `package.xml` manifests by excluding components that are being deleted or are otherwise irrelevant for a specific deployment or retrieval. For example, you can use it to create a `package.xml` that only contains additions and modifications, by removing items listed in a `destructiveChanges.xml`.\n\nKey functionalities:\n\n- **Source `package.xml`:** The main `package.xml` file from which components will be removed (specified by `--packagexml`). Defaults to `package.xml`.\n- **Filter `package.xml`:** The `package.xml` file containing the components to be removed from the source (specified by `--removepackagexml`). Defaults to `destructiveChanges.xml`.\n- **Output File:** The path to the new `package.xml` file that will contain the filtered content (specified by `--outputfile`).\n- **Removed Only Output:** The `--removedonly` flag allows you to generate a `package.xml` that contains *only* the items that were removed from the source `package.xml`.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **File Parsing:** It reads and parses the XML content of both the source `package.xml` and the filter `package.xml`.\n- **Content Comparison and Filtering:** It compares the metadata types and members defined in both files. Components found in the filter `package.xml` are excluded from the output.\n- **XML Building:** After filtering, it rebuilds the XML structure for the new `package.xml` file.\n- **File Writing:** The newly constructed XML content is then written to the specified output file.\n- **`removePackageXmlFilesContent` Utility:** The core logic for this operation is encapsulated within the `removePackageXmlFilesContent` utility function, which handles the parsing, filtering, and writing of the `package.xml` files.\n</details>\n",
2771
2780
  "examples": [
2772
- "$ sf hardis:project:lint",
2773
- "$ sf hardis:project:lint --fix"
2781
+ "$ sf hardis packagexml:remove -p package.xml -r destructiveChanges.xml -o my-reduced-package.xml"
2774
2782
  ],
2775
2783
  "flags": {
2776
2784
  "json": {
@@ -2788,82 +2796,85 @@
2788
2796
  "multiple": false,
2789
2797
  "type": "option"
2790
2798
  },
2791
- "fix": {
2792
- "char": "f",
2793
- "description": "Apply linters fixes",
2794
- "name": "fix",
2795
- "allowNo": false,
2796
- "type": "boolean"
2799
+ "packagexml": {
2800
+ "char": "p",
2801
+ "description": "package.xml file to reduce",
2802
+ "name": "packagexml",
2803
+ "hasDynamicHelp": false,
2804
+ "multiple": false,
2805
+ "type": "option"
2797
2806
  },
2798
- "debug": {
2799
- "char": "d",
2800
- "description": "Activate debug mode (more logs)",
2801
- "name": "debug",
2807
+ "removepackagexml": {
2808
+ "char": "r",
2809
+ "description": "package.xml file to use to filter input package.xml",
2810
+ "name": "removepackagexml",
2811
+ "hasDynamicHelp": false,
2812
+ "multiple": false,
2813
+ "type": "option"
2814
+ },
2815
+ "removedonly": {
2816
+ "char": "z",
2817
+ "description": "Use this flag to generate a package.xml with only removed items",
2818
+ "name": "removedonly",
2802
2819
  "allowNo": false,
2803
2820
  "type": "boolean"
2804
2821
  },
2805
- "websocket": {
2806
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
2807
- "name": "websocket",
2822
+ "outputfile": {
2823
+ "char": "f",
2824
+ "description": "package.xml output file",
2825
+ "name": "outputfile",
2826
+ "required": true,
2808
2827
  "hasDynamicHelp": false,
2809
2828
  "multiple": false,
2810
2829
  "type": "option"
2811
2830
  },
2812
- "skipauth": {
2813
- "description": "Skip authentication check when a default username is required",
2814
- "name": "skipauth",
2831
+ "debug": {
2832
+ "description": "debug",
2833
+ "name": "debug",
2815
2834
  "allowNo": false,
2816
2835
  "type": "boolean"
2817
2836
  },
2818
- "target-org": {
2819
- "aliases": [
2820
- "targetusername",
2821
- "u"
2822
- ],
2823
- "char": "o",
2824
- "deprecateAliases": true,
2825
- "name": "target-org",
2826
- "noCacheDefault": true,
2827
- "summary": "Username or alias of the target org.",
2828
- "hasDynamicHelp": true,
2837
+ "websocket": {
2838
+ "description": "websocket",
2839
+ "name": "websocket",
2840
+ "hasDynamicHelp": false,
2829
2841
  "multiple": false,
2830
2842
  "type": "option"
2831
2843
  }
2832
2844
  },
2833
- "hasDynamicHelp": true,
2845
+ "hasDynamicHelp": false,
2834
2846
  "hiddenAliases": [],
2835
- "id": "hardis:project:lint",
2847
+ "id": "hardis:packagexml:remove",
2836
2848
  "pluginAlias": "sfdx-hardis",
2837
2849
  "pluginName": "sfdx-hardis",
2838
2850
  "pluginType": "core",
2839
2851
  "strict": true,
2840
2852
  "enableJsonFlag": true,
2841
- "title": "Lint",
2842
2853
  "requiresProject": false,
2843
2854
  "isESM": true,
2844
2855
  "relativePath": [
2845
2856
  "lib",
2846
2857
  "commands",
2847
2858
  "hardis",
2848
- "project",
2849
- "lint.js"
2859
+ "packagexml",
2860
+ "remove.js"
2850
2861
  ],
2851
2862
  "aliasPermutations": [],
2852
2863
  "permutations": [
2853
- "hardis:project:lint",
2854
- "project:hardis:lint",
2855
- "project:lint:hardis",
2856
- "hardis:lint:project",
2857
- "lint:hardis:project",
2858
- "lint:project:hardis"
2864
+ "hardis:packagexml:remove",
2865
+ "packagexml:hardis:remove",
2866
+ "packagexml:remove:hardis",
2867
+ "hardis:remove:packagexml",
2868
+ "remove:hardis:packagexml",
2869
+ "remove:packagexml:hardis"
2859
2870
  ]
2860
2871
  },
2861
- "hardis:packagexml:append": {
2872
+ "hardis:project:create": {
2862
2873
  "aliases": [],
2863
2874
  "args": {},
2864
- "description": "\n## Command Behavior\n\n**Appends the content of one or more Salesforce `package.xml` files into a single target `package.xml` file.**\n\nThis command is useful for consolidating metadata definitions from various sources into a single manifest. For instance, you might have separate `package.xml` files for different features or metadata types, and this command allows you to combine them into one comprehensive file for deployment or retrieval.\n\nKey functionalities:\n\n- **Multiple Input Files:** Takes a comma-separated list of `package.xml` file paths as input.\n- **Single Output File:** Merges the content of all input files into a specified output `package.xml` file.\n- **Metadata Consolidation:** Combines the `<types>` and `<members>` elements from all input files, ensuring that all unique metadata components are included in the resulting file.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **File Parsing:** It reads and parses the XML content of each input `package.xml` file.\n- **Content Merging:** It iterates through the parsed XML structures, merging the `types` and `members` arrays. If a metadata type exists in multiple input files, its members are combined (duplicates are typically handled by the underlying XML utility).\n- **XML Building:** After consolidating the metadata, it rebuilds the XML structure for the output `package.xml` file.\n- **File Writing:** The newly constructed XML content is then written to the specified output file.\n- **`appendPackageXmlFilesContent` Utility:** The core logic for this operation is encapsulated within the `appendPackageXmlFilesContent` utility function, which handles the parsing, merging, and writing of the `package.xml` files.\n</details>\n",
2875
+ "description": "Create a new SFDX Project",
2865
2876
  "examples": [
2866
- "$ sf hardis packagexml append -p package1.xml,package2.xml -o package3.xml"
2877
+ "$ sf hardis:project:create"
2867
2878
  ],
2868
2879
  "flags": {
2869
2880
  "json": {
@@ -2881,70 +2892,62 @@
2881
2892
  "multiple": false,
2882
2893
  "type": "option"
2883
2894
  },
2884
- "packagexmls": {
2885
- "char": "p",
2886
- "description": "package.xml files path (separated by commas)",
2887
- "name": "packagexmls",
2888
- "required": true,
2889
- "hasDynamicHelp": false,
2890
- "multiple": false,
2891
- "type": "option"
2892
- },
2893
- "outputfile": {
2894
- "char": "f",
2895
- "description": "package.xml output file",
2896
- "name": "outputfile",
2897
- "required": true,
2898
- "hasDynamicHelp": false,
2899
- "multiple": false,
2900
- "type": "option"
2901
- },
2902
2895
  "debug": {
2903
- "description": "debug",
2896
+ "char": "d",
2897
+ "description": "Activate debug mode (more logs)",
2904
2898
  "name": "debug",
2905
2899
  "allowNo": false,
2906
2900
  "type": "boolean"
2907
2901
  },
2908
2902
  "websocket": {
2909
- "description": "websocket",
2903
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
2910
2904
  "name": "websocket",
2911
2905
  "hasDynamicHelp": false,
2912
2906
  "multiple": false,
2913
2907
  "type": "option"
2908
+ },
2909
+ "skipauth": {
2910
+ "description": "Skip authentication check when a default username is required",
2911
+ "name": "skipauth",
2912
+ "allowNo": false,
2913
+ "type": "boolean"
2914
2914
  }
2915
2915
  },
2916
2916
  "hasDynamicHelp": false,
2917
2917
  "hiddenAliases": [],
2918
- "id": "hardis:packagexml:append",
2918
+ "id": "hardis:project:create",
2919
2919
  "pluginAlias": "sfdx-hardis",
2920
2920
  "pluginName": "sfdx-hardis",
2921
2921
  "pluginType": "core",
2922
2922
  "strict": true,
2923
2923
  "enableJsonFlag": true,
2924
+ "title": "Login",
2925
+ "requiresProject": false,
2924
2926
  "isESM": true,
2925
2927
  "relativePath": [
2926
2928
  "lib",
2927
2929
  "commands",
2928
2930
  "hardis",
2929
- "packagexml",
2930
- "append.js"
2931
+ "project",
2932
+ "create.js"
2931
2933
  ],
2932
2934
  "aliasPermutations": [],
2933
2935
  "permutations": [
2934
- "hardis:packagexml:append",
2935
- "packagexml:hardis:append",
2936
- "packagexml:append:hardis",
2937
- "hardis:append:packagexml",
2938
- "append:hardis:packagexml",
2939
- "append:packagexml:hardis"
2936
+ "hardis:project:create",
2937
+ "project:hardis:create",
2938
+ "project:create:hardis",
2939
+ "hardis:create:project",
2940
+ "create:hardis:project",
2941
+ "create:project:hardis"
2940
2942
  ]
2941
2943
  },
2942
- "hardis:packagexml:remove": {
2944
+ "hardis:project:lint": {
2943
2945
  "aliases": [],
2944
2946
  "args": {},
2945
- "description": "\n## Command Behavior\n\n**Removes metadata components from a `package.xml` file that are also present in another `package.xml` file (e.g., a `destructiveChanges.xml`).**\n\nThis command is useful for refining your `package.xml` manifests by excluding components that are being deleted or are otherwise irrelevant for a specific deployment or retrieval. For example, you can use it to create a `package.xml` that only contains additions and modifications, by removing items listed in a `destructiveChanges.xml`.\n\nKey functionalities:\n\n- **Source `package.xml`:** The main `package.xml` file from which components will be removed (specified by `--packagexml`). Defaults to `package.xml`.\n- **Filter `package.xml`:** The `package.xml` file containing the components to be removed from the source (specified by `--removepackagexml`). Defaults to `destructiveChanges.xml`.\n- **Output File:** The path to the new `package.xml` file that will contain the filtered content (specified by `--outputfile`).\n- **Removed Only Output:** The `--removedonly` flag allows you to generate a `package.xml` that contains *only* the items that were removed from the source `package.xml`.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **File Parsing:** It reads and parses the XML content of both the source `package.xml` and the filter `package.xml`.\n- **Content Comparison and Filtering:** It compares the metadata types and members defined in both files. Components found in the filter `package.xml` are excluded from the output.\n- **XML Building:** After filtering, it rebuilds the XML structure for the new `package.xml` file.\n- **File Writing:** The newly constructed XML content is then written to the specified output file.\n- **`removePackageXmlFilesContent` Utility:** The core logic for this operation is encapsulated within the `removePackageXmlFilesContent` utility function, which handles the parsing, filtering, and writing of the `package.xml` files.\n</details>\n",
2947
+ "description": "## Command Behavior\n\n**Applies syntactic analysis (linting) to your repository sources using Mega-Linter, ensuring code quality and adherence to coding standards.**\n\nThis command integrates Mega-Linter, a comprehensive linter orchestrator, into your Salesforce DX project. It helps identify and fix code style violations, potential bugs, and other issues across various file types relevant to Salesforce development.\n\nKey functionalities:\n\n- **Automated Linting:** Runs a suite of linters configured for Salesforce projects.\n- **Fixing Issues (`--fix` flag):** Automatically attempts to fix detected linting issues, saving manual effort.\n- **Configuration Management:** If `.mega-linter.yml` is not found, it guides you through the initial setup of Mega-Linter, prompting for the Salesforce flavor.\n- **CI/CD Integration:** Designed to be used in CI/CD pipelines to enforce code quality gates.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Mega-Linter Integration:** It leverages the `mega-linter-runner` library to execute Mega-Linter.\n- **Configuration Check:** Before running, it checks for the presence of `.mega-linter.yml`. If not found and not in a CI environment, it initiates an interactive setup process using `MegaLinterRunner().run({ install: true })`.\n- **Linter Execution:** It calls `MegaLinterRunner().run(megaLinterOptions)` with the `salesforce` flavor and the `fix` flag (if provided).\n- **Exit Code Handling:** The `process.exitCode` is set based on the Mega-Linter's exit status, allowing CI/CD pipelines to react to linting failures.\n- **User Feedback:** Provides clear messages about the success or failure of the linting process.\n</details>\n",
2946
2948
  "examples": [
2947
- "$ sf hardis packagexml:remove -p package.xml -r destructiveChanges.xml -o my-reduced-package.xml"
2949
+ "$ sf hardis:project:lint",
2950
+ "$ sf hardis:project:lint --fix"
2948
2951
  ],
2949
2952
  "flags": {
2950
2953
  "json": {
@@ -2962,77 +2965,74 @@
2962
2965
  "multiple": false,
2963
2966
  "type": "option"
2964
2967
  },
2965
- "packagexml": {
2966
- "char": "p",
2967
- "description": "package.xml file to reduce",
2968
- "name": "packagexml",
2969
- "hasDynamicHelp": false,
2970
- "multiple": false,
2971
- "type": "option"
2972
- },
2973
- "removepackagexml": {
2974
- "char": "r",
2975
- "description": "package.xml file to use to filter input package.xml",
2976
- "name": "removepackagexml",
2977
- "hasDynamicHelp": false,
2978
- "multiple": false,
2979
- "type": "option"
2980
- },
2981
- "removedonly": {
2982
- "char": "z",
2983
- "description": "Use this flag to generate a package.xml with only removed items",
2984
- "name": "removedonly",
2968
+ "fix": {
2969
+ "char": "f",
2970
+ "description": "Apply linters fixes",
2971
+ "name": "fix",
2985
2972
  "allowNo": false,
2986
2973
  "type": "boolean"
2987
2974
  },
2988
- "outputfile": {
2989
- "char": "f",
2990
- "description": "package.xml output file",
2991
- "name": "outputfile",
2992
- "required": true,
2993
- "hasDynamicHelp": false,
2994
- "multiple": false,
2995
- "type": "option"
2996
- },
2997
2975
  "debug": {
2998
- "description": "debug",
2976
+ "char": "d",
2977
+ "description": "Activate debug mode (more logs)",
2999
2978
  "name": "debug",
3000
2979
  "allowNo": false,
3001
2980
  "type": "boolean"
3002
2981
  },
3003
2982
  "websocket": {
3004
- "description": "websocket",
2983
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3005
2984
  "name": "websocket",
3006
2985
  "hasDynamicHelp": false,
3007
2986
  "multiple": false,
3008
2987
  "type": "option"
2988
+ },
2989
+ "skipauth": {
2990
+ "description": "Skip authentication check when a default username is required",
2991
+ "name": "skipauth",
2992
+ "allowNo": false,
2993
+ "type": "boolean"
2994
+ },
2995
+ "target-org": {
2996
+ "aliases": [
2997
+ "targetusername",
2998
+ "u"
2999
+ ],
3000
+ "char": "o",
3001
+ "deprecateAliases": true,
3002
+ "name": "target-org",
3003
+ "noCacheDefault": true,
3004
+ "summary": "Username or alias of the target org.",
3005
+ "hasDynamicHelp": true,
3006
+ "multiple": false,
3007
+ "type": "option"
3009
3008
  }
3010
3009
  },
3011
- "hasDynamicHelp": false,
3010
+ "hasDynamicHelp": true,
3012
3011
  "hiddenAliases": [],
3013
- "id": "hardis:packagexml:remove",
3012
+ "id": "hardis:project:lint",
3014
3013
  "pluginAlias": "sfdx-hardis",
3015
3014
  "pluginName": "sfdx-hardis",
3016
3015
  "pluginType": "core",
3017
3016
  "strict": true,
3018
3017
  "enableJsonFlag": true,
3018
+ "title": "Lint",
3019
3019
  "requiresProject": false,
3020
3020
  "isESM": true,
3021
3021
  "relativePath": [
3022
3022
  "lib",
3023
3023
  "commands",
3024
3024
  "hardis",
3025
- "packagexml",
3026
- "remove.js"
3025
+ "project",
3026
+ "lint.js"
3027
3027
  ],
3028
3028
  "aliasPermutations": [],
3029
3029
  "permutations": [
3030
- "hardis:packagexml:remove",
3031
- "packagexml:hardis:remove",
3032
- "packagexml:remove:hardis",
3033
- "hardis:remove:packagexml",
3034
- "remove:hardis:packagexml",
3035
- "remove:packagexml:hardis"
3030
+ "hardis:project:lint",
3031
+ "project:hardis:lint",
3032
+ "project:lint:hardis",
3033
+ "hardis:lint:project",
3034
+ "lint:hardis:project",
3035
+ "lint:project:hardis"
3036
3036
  ]
3037
3037
  },
3038
3038
  "hardis:scratch:create": {
@@ -8093,18 +8093,239 @@
8093
8093
  "allowNo": false,
8094
8094
  "type": "boolean"
8095
8095
  },
8096
- "allowpurgefailure": {
8097
- "char": "f",
8098
- "description": "Allows purges to fail without exiting with 1. Use --no-allowpurgefailure to disable",
8099
- "name": "allowpurgefailure",
8100
- "allowNo": true,
8101
- "type": "boolean"
8102
- },
8103
- "instanceurl": {
8104
- "char": "r",
8105
- "description": "URL of org instance",
8106
- "name": "instanceurl",
8107
- "default": "https://login.salesforce.com",
8096
+ "allowpurgefailure": {
8097
+ "char": "f",
8098
+ "description": "Allows purges to fail without exiting with 1. Use --no-allowpurgefailure to disable",
8099
+ "name": "allowpurgefailure",
8100
+ "allowNo": true,
8101
+ "type": "boolean"
8102
+ },
8103
+ "instanceurl": {
8104
+ "char": "r",
8105
+ "description": "URL of org instance",
8106
+ "name": "instanceurl",
8107
+ "default": "https://login.salesforce.com",
8108
+ "hasDynamicHelp": false,
8109
+ "multiple": false,
8110
+ "type": "option"
8111
+ },
8112
+ "debug": {
8113
+ "char": "d",
8114
+ "description": "Activate debug mode (more logs)",
8115
+ "name": "debug",
8116
+ "allowNo": false,
8117
+ "type": "boolean"
8118
+ },
8119
+ "websocket": {
8120
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8121
+ "name": "websocket",
8122
+ "hasDynamicHelp": false,
8123
+ "multiple": false,
8124
+ "type": "option"
8125
+ },
8126
+ "skipauth": {
8127
+ "description": "Skip authentication check when a default username is required",
8128
+ "name": "skipauth",
8129
+ "allowNo": false,
8130
+ "type": "boolean"
8131
+ },
8132
+ "target-org": {
8133
+ "aliases": [
8134
+ "targetusername",
8135
+ "u"
8136
+ ],
8137
+ "char": "o",
8138
+ "deprecateAliases": true,
8139
+ "name": "target-org",
8140
+ "noCacheDefault": true,
8141
+ "required": true,
8142
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8143
+ "hasDynamicHelp": true,
8144
+ "multiple": false,
8145
+ "type": "option"
8146
+ }
8147
+ },
8148
+ "hasDynamicHelp": true,
8149
+ "hiddenAliases": [],
8150
+ "id": "hardis:org:purge:flow",
8151
+ "pluginAlias": "sfdx-hardis",
8152
+ "pluginName": "sfdx-hardis",
8153
+ "pluginType": "core",
8154
+ "strict": true,
8155
+ "enableJsonFlag": true,
8156
+ "title": "Purge Flow versions",
8157
+ "requiresProject": false,
8158
+ "isESM": true,
8159
+ "relativePath": [
8160
+ "lib",
8161
+ "commands",
8162
+ "hardis",
8163
+ "org",
8164
+ "purge",
8165
+ "flow.js"
8166
+ ],
8167
+ "aliasPermutations": [],
8168
+ "permutations": [
8169
+ "hardis:org:purge:flow",
8170
+ "org:hardis:purge:flow",
8171
+ "org:purge:hardis:flow",
8172
+ "org:purge:flow:hardis",
8173
+ "hardis:purge:org:flow",
8174
+ "purge:hardis:org:flow",
8175
+ "purge:org:hardis:flow",
8176
+ "purge:org:flow:hardis",
8177
+ "hardis:purge:flow:org",
8178
+ "purge:hardis:flow:org",
8179
+ "purge:flow:hardis:org",
8180
+ "purge:flow:org:hardis",
8181
+ "hardis:org:flow:purge",
8182
+ "org:hardis:flow:purge",
8183
+ "org:flow:hardis:purge",
8184
+ "org:flow:purge:hardis",
8185
+ "hardis:flow:org:purge",
8186
+ "flow:hardis:org:purge",
8187
+ "flow:org:hardis:purge",
8188
+ "flow:org:purge:hardis",
8189
+ "hardis:flow:purge:org",
8190
+ "flow:hardis:purge:org",
8191
+ "flow:purge:hardis:org",
8192
+ "flow:purge:org:hardis"
8193
+ ]
8194
+ },
8195
+ "hardis:org:purge:profile": {
8196
+ "aliases": [],
8197
+ "args": {},
8198
+ "description": "\n## Command Behavior\n\n**Removes or \"mutes\" Permission Sets attributes from selected Salesforce Profile metadata files and redeploys the cleaned profiles to the target org.**\n\nThis command is intended to safely remove PS attributes from Profiles after a migration from Profile-based to PS-based permission management. It:\n- Builds or reuses a full org manifest to determine metadata present in the org.\n- Filters the manifest to remove selected managed package namespaces and keep only relevant metadata types required for profile processing.\n- Retrieves the necessary metadata (profiles, objects, fields, classes) into the local project.\n- Iterates over selected profile files and mutes configured attributes (for example: classAccesses.enabled, fieldPermissions.readable/editable, objectPermissions.* and userPermissions.enabled).\n- Writes the modified profile XML files back to the repository\n- Deploys the updated profiles to the target org.\n\nThe command checks for uncommitted changes and will not run if the working tree has modifications, and it allows reusing a previously generated full org manifest to speed up repeated runs.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Manifest generation:** Uses 'buildOrgManifest' to create a full org 'package.xml'. If an existing manifest file is available the user can choose to reuse it.\n- **Namespace filtering:** Queries installed packages using 'MetadataUtils.listInstalledPackages' to propose namespaces to remove from the manifest.\n- **Metadata filtering:** Keeps only metadata types required to safely mute profiles (Profile plus the package types configured in the command).\n- **Profile processing:** Parses profile XML files, iterates nodes ('classAccesses', 'fieldPermissions', 'objectPermissions', 'userPermissions') and sets attributes to configured mute values, skipping configured excluded names/files.\n- **Retrieval & Deployment:** Uses the Salesforce CLI ('sf project retrieve' / 'sf project deploy') via 'execCommand' to retrieve metadata and deploy the updated profiles.\n- **Exit behavior:** Returns an object with 'orgId' and an 'outputString'. Errors are logged to the console and do not throw uncaught exceptions within the command.\n</details>\n",
8199
+ "examples": [
8200
+ "sf hardis:org:purge:profile",
8201
+ "sf hardis:org:purge:profile --target-org my-org@example.com"
8202
+ ],
8203
+ "flags": {
8204
+ "json": {
8205
+ "description": "Format output as json.",
8206
+ "helpGroup": "GLOBAL",
8207
+ "name": "json",
8208
+ "allowNo": false,
8209
+ "type": "boolean"
8210
+ },
8211
+ "flags-dir": {
8212
+ "helpGroup": "GLOBAL",
8213
+ "name": "flags-dir",
8214
+ "summary": "Import flag values from a directory.",
8215
+ "hasDynamicHelp": false,
8216
+ "multiple": false,
8217
+ "type": "option"
8218
+ },
8219
+ "outputfile": {
8220
+ "char": "f",
8221
+ "description": "Force the path and name of output report file. Must end with .csv",
8222
+ "name": "outputfile",
8223
+ "hasDynamicHelp": false,
8224
+ "multiple": false,
8225
+ "type": "option"
8226
+ },
8227
+ "debug": {
8228
+ "char": "d",
8229
+ "description": "Activate debug mode (more logs)",
8230
+ "name": "debug",
8231
+ "allowNo": false,
8232
+ "type": "boolean"
8233
+ },
8234
+ "websocket": {
8235
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8236
+ "name": "websocket",
8237
+ "hasDynamicHelp": false,
8238
+ "multiple": false,
8239
+ "type": "option"
8240
+ },
8241
+ "skipauth": {
8242
+ "description": "Skip authentication check when a default username is required",
8243
+ "name": "skipauth",
8244
+ "allowNo": false,
8245
+ "type": "boolean"
8246
+ },
8247
+ "target-org": {
8248
+ "aliases": [
8249
+ "targetusername",
8250
+ "u"
8251
+ ],
8252
+ "char": "o",
8253
+ "deprecateAliases": true,
8254
+ "name": "target-org",
8255
+ "noCacheDefault": true,
8256
+ "required": true,
8257
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8258
+ "hasDynamicHelp": true,
8259
+ "multiple": false,
8260
+ "type": "option"
8261
+ }
8262
+ },
8263
+ "hasDynamicHelp": true,
8264
+ "hiddenAliases": [],
8265
+ "id": "hardis:org:purge:profile",
8266
+ "pluginAlias": "sfdx-hardis",
8267
+ "pluginName": "sfdx-hardis",
8268
+ "pluginType": "core",
8269
+ "strict": true,
8270
+ "enableJsonFlag": true,
8271
+ "title": "Remove PS attributes from Profile",
8272
+ "isESM": true,
8273
+ "relativePath": [
8274
+ "lib",
8275
+ "commands",
8276
+ "hardis",
8277
+ "org",
8278
+ "purge",
8279
+ "profile.js"
8280
+ ],
8281
+ "aliasPermutations": [],
8282
+ "permutations": [
8283
+ "hardis:org:purge:profile",
8284
+ "org:hardis:purge:profile",
8285
+ "org:purge:hardis:profile",
8286
+ "org:purge:profile:hardis",
8287
+ "hardis:purge:org:profile",
8288
+ "purge:hardis:org:profile",
8289
+ "purge:org:hardis:profile",
8290
+ "purge:org:profile:hardis",
8291
+ "hardis:purge:profile:org",
8292
+ "purge:hardis:profile:org",
8293
+ "purge:profile:hardis:org",
8294
+ "purge:profile:org:hardis",
8295
+ "hardis:org:profile:purge",
8296
+ "org:hardis:profile:purge",
8297
+ "org:profile:hardis:purge",
8298
+ "org:profile:purge:hardis",
8299
+ "hardis:profile:org:purge",
8300
+ "profile:hardis:org:purge",
8301
+ "profile:org:hardis:purge",
8302
+ "profile:org:purge:hardis",
8303
+ "hardis:profile:purge:org",
8304
+ "profile:hardis:purge:org",
8305
+ "profile:purge:hardis:org",
8306
+ "profile:purge:org:hardis"
8307
+ ]
8308
+ },
8309
+ "hardis:org:retrieve:packageconfig": {
8310
+ "aliases": [],
8311
+ "args": {},
8312
+ "description": "\n**Retrieves the installed package configuration from a Salesforce org and optionally updates the local project configuration.**\n\nThis command is useful for maintaining an accurate record of installed packages within your Salesforce project, which is crucial for managing dependencies and ensuring consistent deployments across environments.\n\nKey functionalities:\n\n- **Package Listing:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a list of all installed packages.\n- **Configuration Update:** Offers the option to update your local project's configuration with the retrieved list of installed packages. This can be beneficial for automating package installations during environment setup or CI/CD processes.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Org Connection:** It establishes a connection to the target Salesforce org using the provided or prompted username.\n- **Metadata Retrieval:** It utilizes `MetadataUtils.listInstalledPackages` to query the Salesforce org and obtain details about the installed packages.\n- **Interactive Prompt:** It uses the `prompts` library to ask the user whether they want to update their local project configuration with the retrieved package list.\n- **Configuration Management:** If the user confirms, it calls `managePackageConfig` to update the project's configuration file (likely `.sfdx-hardis.yml`) with the new package information.\n- **User Feedback:** Provides clear messages to the user about the success of the package retrieval and configuration update.\n</details>\n",
8313
+ "examples": [
8314
+ "$ sf hardis:org:retrieve:packageconfig",
8315
+ "sf hardis:org:retrieve:packageconfig -u myOrg"
8316
+ ],
8317
+ "flags": {
8318
+ "json": {
8319
+ "description": "Format output as json.",
8320
+ "helpGroup": "GLOBAL",
8321
+ "name": "json",
8322
+ "allowNo": false,
8323
+ "type": "boolean"
8324
+ },
8325
+ "flags-dir": {
8326
+ "helpGroup": "GLOBAL",
8327
+ "name": "flags-dir",
8328
+ "summary": "Import flag values from a directory.",
8108
8329
  "hasDynamicHelp": false,
8109
8330
  "multiple": false,
8110
8331
  "type": "option"
@@ -8147,13 +8368,13 @@
8147
8368
  },
8148
8369
  "hasDynamicHelp": true,
8149
8370
  "hiddenAliases": [],
8150
- "id": "hardis:org:purge:flow",
8371
+ "id": "hardis:org:retrieve:packageconfig",
8151
8372
  "pluginAlias": "sfdx-hardis",
8152
8373
  "pluginName": "sfdx-hardis",
8153
8374
  "pluginType": "core",
8154
8375
  "strict": true,
8155
8376
  "enableJsonFlag": true,
8156
- "title": "Purge Flow versions",
8377
+ "title": "Retrieve package configuration from an org",
8157
8378
  "requiresProject": false,
8158
8379
  "isESM": true,
8159
8380
  "relativePath": [
@@ -8161,35 +8382,35 @@
8161
8382
  "commands",
8162
8383
  "hardis",
8163
8384
  "org",
8164
- "purge",
8165
- "flow.js"
8385
+ "retrieve",
8386
+ "packageconfig.js"
8166
8387
  ],
8167
8388
  "aliasPermutations": [],
8168
8389
  "permutations": [
8169
- "hardis:org:purge:flow",
8170
- "org:hardis:purge:flow",
8171
- "org:purge:hardis:flow",
8172
- "org:purge:flow:hardis",
8173
- "hardis:purge:org:flow",
8174
- "purge:hardis:org:flow",
8175
- "purge:org:hardis:flow",
8176
- "purge:org:flow:hardis",
8177
- "hardis:purge:flow:org",
8178
- "purge:hardis:flow:org",
8179
- "purge:flow:hardis:org",
8180
- "purge:flow:org:hardis",
8181
- "hardis:org:flow:purge",
8182
- "org:hardis:flow:purge",
8183
- "org:flow:hardis:purge",
8184
- "org:flow:purge:hardis",
8185
- "hardis:flow:org:purge",
8186
- "flow:hardis:org:purge",
8187
- "flow:org:hardis:purge",
8188
- "flow:org:purge:hardis",
8189
- "hardis:flow:purge:org",
8190
- "flow:hardis:purge:org",
8191
- "flow:purge:hardis:org",
8192
- "flow:purge:org:hardis"
8390
+ "hardis:org:retrieve:packageconfig",
8391
+ "org:hardis:retrieve:packageconfig",
8392
+ "org:retrieve:hardis:packageconfig",
8393
+ "org:retrieve:packageconfig:hardis",
8394
+ "hardis:retrieve:org:packageconfig",
8395
+ "retrieve:hardis:org:packageconfig",
8396
+ "retrieve:org:hardis:packageconfig",
8397
+ "retrieve:org:packageconfig:hardis",
8398
+ "hardis:retrieve:packageconfig:org",
8399
+ "retrieve:hardis:packageconfig:org",
8400
+ "retrieve:packageconfig:hardis:org",
8401
+ "retrieve:packageconfig:org:hardis",
8402
+ "hardis:org:packageconfig:retrieve",
8403
+ "org:hardis:packageconfig:retrieve",
8404
+ "org:packageconfig:hardis:retrieve",
8405
+ "org:packageconfig:retrieve:hardis",
8406
+ "hardis:packageconfig:org:retrieve",
8407
+ "packageconfig:hardis:org:retrieve",
8408
+ "packageconfig:org:hardis:retrieve",
8409
+ "packageconfig:org:retrieve:hardis",
8410
+ "hardis:packageconfig:retrieve:org",
8411
+ "packageconfig:hardis:retrieve:org",
8412
+ "packageconfig:retrieve:hardis:org",
8413
+ "packageconfig:retrieve:org:hardis"
8193
8414
  ]
8194
8415
  },
8195
8416
  "hardis:org:refresh:after-refresh": {
@@ -8431,113 +8652,6 @@
8431
8652
  "before-refresh:refresh:org:hardis"
8432
8653
  ]
8433
8654
  },
8434
- "hardis:org:retrieve:packageconfig": {
8435
- "aliases": [],
8436
- "args": {},
8437
- "description": "\n**Retrieves the installed package configuration from a Salesforce org and optionally updates the local project configuration.**\n\nThis command is useful for maintaining an accurate record of installed packages within your Salesforce project, which is crucial for managing dependencies and ensuring consistent deployments across environments.\n\nKey functionalities:\n\n- **Package Listing:** Connects to a specified Salesforce org (or prompts for one if not provided) and retrieves a list of all installed packages.\n- **Configuration Update:** Offers the option to update your local project's configuration with the retrieved list of installed packages. This can be beneficial for automating package installations during environment setup or CI/CD processes.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\nThe command's technical implementation involves:\n\n- **Org Connection:** It establishes a connection to the target Salesforce org using the provided or prompted username.\n- **Metadata Retrieval:** It utilizes `MetadataUtils.listInstalledPackages` to query the Salesforce org and obtain details about the installed packages.\n- **Interactive Prompt:** It uses the `prompts` library to ask the user whether they want to update their local project configuration with the retrieved package list.\n- **Configuration Management:** If the user confirms, it calls `managePackageConfig` to update the project's configuration file (likely `.sfdx-hardis.yml`) with the new package information.\n- **User Feedback:** Provides clear messages to the user about the success of the package retrieval and configuration update.\n</details>\n",
8438
- "examples": [
8439
- "$ sf hardis:org:retrieve:packageconfig",
8440
- "sf hardis:org:retrieve:packageconfig -u myOrg"
8441
- ],
8442
- "flags": {
8443
- "json": {
8444
- "description": "Format output as json.",
8445
- "helpGroup": "GLOBAL",
8446
- "name": "json",
8447
- "allowNo": false,
8448
- "type": "boolean"
8449
- },
8450
- "flags-dir": {
8451
- "helpGroup": "GLOBAL",
8452
- "name": "flags-dir",
8453
- "summary": "Import flag values from a directory.",
8454
- "hasDynamicHelp": false,
8455
- "multiple": false,
8456
- "type": "option"
8457
- },
8458
- "debug": {
8459
- "char": "d",
8460
- "description": "Activate debug mode (more logs)",
8461
- "name": "debug",
8462
- "allowNo": false,
8463
- "type": "boolean"
8464
- },
8465
- "websocket": {
8466
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
8467
- "name": "websocket",
8468
- "hasDynamicHelp": false,
8469
- "multiple": false,
8470
- "type": "option"
8471
- },
8472
- "skipauth": {
8473
- "description": "Skip authentication check when a default username is required",
8474
- "name": "skipauth",
8475
- "allowNo": false,
8476
- "type": "boolean"
8477
- },
8478
- "target-org": {
8479
- "aliases": [
8480
- "targetusername",
8481
- "u"
8482
- ],
8483
- "char": "o",
8484
- "deprecateAliases": true,
8485
- "name": "target-org",
8486
- "noCacheDefault": true,
8487
- "required": true,
8488
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
8489
- "hasDynamicHelp": true,
8490
- "multiple": false,
8491
- "type": "option"
8492
- }
8493
- },
8494
- "hasDynamicHelp": true,
8495
- "hiddenAliases": [],
8496
- "id": "hardis:org:retrieve:packageconfig",
8497
- "pluginAlias": "sfdx-hardis",
8498
- "pluginName": "sfdx-hardis",
8499
- "pluginType": "core",
8500
- "strict": true,
8501
- "enableJsonFlag": true,
8502
- "title": "Retrieve package configuration from an org",
8503
- "requiresProject": false,
8504
- "isESM": true,
8505
- "relativePath": [
8506
- "lib",
8507
- "commands",
8508
- "hardis",
8509
- "org",
8510
- "retrieve",
8511
- "packageconfig.js"
8512
- ],
8513
- "aliasPermutations": [],
8514
- "permutations": [
8515
- "hardis:org:retrieve:packageconfig",
8516
- "org:hardis:retrieve:packageconfig",
8517
- "org:retrieve:hardis:packageconfig",
8518
- "org:retrieve:packageconfig:hardis",
8519
- "hardis:retrieve:org:packageconfig",
8520
- "retrieve:hardis:org:packageconfig",
8521
- "retrieve:org:hardis:packageconfig",
8522
- "retrieve:org:packageconfig:hardis",
8523
- "hardis:retrieve:packageconfig:org",
8524
- "retrieve:hardis:packageconfig:org",
8525
- "retrieve:packageconfig:hardis:org",
8526
- "retrieve:packageconfig:org:hardis",
8527
- "hardis:org:packageconfig:retrieve",
8528
- "org:hardis:packageconfig:retrieve",
8529
- "org:packageconfig:hardis:retrieve",
8530
- "org:packageconfig:retrieve:hardis",
8531
- "hardis:packageconfig:org:retrieve",
8532
- "packageconfig:hardis:org:retrieve",
8533
- "packageconfig:org:hardis:retrieve",
8534
- "packageconfig:org:retrieve:hardis",
8535
- "hardis:packageconfig:retrieve:org",
8536
- "packageconfig:hardis:retrieve:org",
8537
- "packageconfig:retrieve:hardis:org",
8538
- "packageconfig:retrieve:org:hardis"
8539
- ]
8540
- },
8541
8655
  "hardis:org:test:apex": {
8542
8656
  "aliases": [],
8543
8657
  "args": {},
@@ -10787,6 +10901,107 @@
10787
10901
  "orgmissingitems:clean:project:hardis"
10788
10902
  ]
10789
10903
  },
10904
+ "hardis:project:clean:profiles-extract": {
10905
+ "aliases": [],
10906
+ "args": {},
10907
+ "description": "\n## Command Behavior\n\n**Guides administrators through extracting Salesforce profiles, personas, and related metadata into structured CSV/XLSX deliverables.**\n\nThe command inventories SObjects that contain data, lets the user pick the ones to document, and then produces persona-centric spreadsheets that cover users, personas, relationships, record types, apps, permissions, tabs, fields, and permission sets. The output consolidates everything into both CSV files and a single Excel workbook, making it easy to audit access models or prepare remediation plans.\n\nKey capabilities:\n\n- **Interactive object discovery:** Lists queryable objects with records and allows multi-selection.\n- **Persona modeling:** Lets users define the number of personas and generates cross-object matrices that leverage Excel formulas for faster updates.\n- **Comprehensive metadata export:** Captures users, record types, apps, permissions, tabs, fields, and permission sets with persona/profile visibility indicators.\n- **Profile field access coverage:** Retrieves FieldPermissions to surface read/edit status per profile and field.\n- **Consolidated reporting:** Produces standalone CSVs plus an aggregated XLSX stored in the report directory.\n\n<details markdown=\"1\">\n<summary>Technical explanations</summary>\n\n- **Salesforce connectivity:** Uses the requested target org connection from `Flags.requiredOrg` to fetch metadata and records.\n- **Bulk/REST queries:** Relies on `bulkQuery` and standard SOQL to evaluate record counts and pull FieldPermissions, Users, RecordTypes, Applications, Tabs, and PermissionSets.\n- **Describe calls:** Invokes `describeGlobal` and `describeSObject` to enumerate objects and field-level metadata, including picklists and formulas.\n- **Prompt-driven input:** Utilizes the shared `prompts` utility to collect object selections and persona counts, ensuring consistent CLI UX.\n- **Reporting pipeline:** Writes intermediate CSV files via `generateCsvFile`, stores them under the report directory from `getReportDirectory`, and finally merges them using `createXlsxFromCsvFiles`.\n- **Logging & diagnostics:** Uses `uxLog` with chalk coloring for progress, warnings, and debug output, integrating with the project-wide logging style.\n\n</details>\n",
10908
+ "examples": [
10909
+ "$ sf hardis:project:clean:profiles-extract",
10910
+ "$ sf hardis:project:clean:profiles-extract --target-org my-org"
10911
+ ],
10912
+ "flags": {
10913
+ "json": {
10914
+ "description": "Format output as json.",
10915
+ "helpGroup": "GLOBAL",
10916
+ "name": "json",
10917
+ "allowNo": false,
10918
+ "type": "boolean"
10919
+ },
10920
+ "flags-dir": {
10921
+ "helpGroup": "GLOBAL",
10922
+ "name": "flags-dir",
10923
+ "summary": "Import flag values from a directory.",
10924
+ "hasDynamicHelp": false,
10925
+ "multiple": false,
10926
+ "type": "option"
10927
+ },
10928
+ "target-org": {
10929
+ "char": "o",
10930
+ "description": "The target Salesforce org to fetch SObjects from.",
10931
+ "name": "target-org",
10932
+ "noCacheDefault": true,
10933
+ "required": true,
10934
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
10935
+ "hasDynamicHelp": true,
10936
+ "multiple": false,
10937
+ "type": "option"
10938
+ },
10939
+ "debug": {
10940
+ "char": "d",
10941
+ "description": "Activate debug mode (more logs)",
10942
+ "name": "debug",
10943
+ "allowNo": false,
10944
+ "type": "boolean"
10945
+ },
10946
+ "websocket": {
10947
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
10948
+ "name": "websocket",
10949
+ "hasDynamicHelp": false,
10950
+ "multiple": false,
10951
+ "type": "option"
10952
+ },
10953
+ "skipauth": {
10954
+ "description": "Skip authentication check when a default username is required",
10955
+ "name": "skipauth",
10956
+ "allowNo": false,
10957
+ "type": "boolean"
10958
+ }
10959
+ },
10960
+ "hasDynamicHelp": true,
10961
+ "hiddenAliases": [],
10962
+ "id": "hardis:project:clean:profiles-extract",
10963
+ "pluginAlias": "sfdx-hardis",
10964
+ "pluginName": "sfdx-hardis",
10965
+ "pluginType": "core",
10966
+ "strict": true,
10967
+ "enableJsonFlag": true,
10968
+ "isESM": true,
10969
+ "relativePath": [
10970
+ "lib",
10971
+ "commands",
10972
+ "hardis",
10973
+ "project",
10974
+ "clean",
10975
+ "profiles-extract.js"
10976
+ ],
10977
+ "aliasPermutations": [],
10978
+ "permutations": [
10979
+ "hardis:project:clean:profiles-extract",
10980
+ "project:hardis:clean:profiles-extract",
10981
+ "project:clean:hardis:profiles-extract",
10982
+ "project:clean:profiles-extract:hardis",
10983
+ "hardis:clean:project:profiles-extract",
10984
+ "clean:hardis:project:profiles-extract",
10985
+ "clean:project:hardis:profiles-extract",
10986
+ "clean:project:profiles-extract:hardis",
10987
+ "hardis:clean:profiles-extract:project",
10988
+ "clean:hardis:profiles-extract:project",
10989
+ "clean:profiles-extract:hardis:project",
10990
+ "clean:profiles-extract:project:hardis",
10991
+ "hardis:project:profiles-extract:clean",
10992
+ "project:hardis:profiles-extract:clean",
10993
+ "project:profiles-extract:hardis:clean",
10994
+ "project:profiles-extract:clean:hardis",
10995
+ "hardis:profiles-extract:project:clean",
10996
+ "profiles-extract:hardis:project:clean",
10997
+ "profiles-extract:project:hardis:clean",
10998
+ "profiles-extract:project:clean:hardis",
10999
+ "hardis:profiles-extract:clean:project",
11000
+ "profiles-extract:hardis:clean:project",
11001
+ "profiles-extract:clean:hardis:project",
11002
+ "profiles-extract:clean:project:hardis"
11003
+ ]
11004
+ },
10790
11005
  "hardis:project:clean:references": {
10791
11006
  "aliases": [],
10792
11007
  "args": {},
@@ -15504,5 +15719,5 @@
15504
15719
  ]
15505
15720
  }
15506
15721
  },
15507
- "version": "6.12.10"
15722
+ "version": "6.13.0"
15508
15723
  }