sfdx-hardis 5.26.0 → 5.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,13 +57,12 @@
57
57
  "world:hello"
58
58
  ]
59
59
  },
60
- "hardis:auth:login": {
60
+ "hardis:cache:clear": {
61
61
  "aliases": [],
62
62
  "args": {},
63
- "description": "Login to salesforce org",
63
+ "description": "Clear cache generated by sfdx-hardis",
64
64
  "examples": [
65
- "$ sf hardis:auth:login",
66
- "CI=true sf hardis:auth:login"
65
+ "$ sf hardis:cache:clear"
67
66
  ],
68
67
  "flags": {
69
68
  "json": {
@@ -81,28 +80,6 @@
81
80
  "multiple": false,
82
81
  "type": "option"
83
82
  },
84
- "instanceurl": {
85
- "char": "r",
86
- "description": "URL of org instance",
87
- "name": "instanceurl",
88
- "hasDynamicHelp": false,
89
- "multiple": false,
90
- "type": "option"
91
- },
92
- "devhub": {
93
- "char": "h",
94
- "description": "Also connect associated DevHub",
95
- "name": "devhub",
96
- "allowNo": false,
97
- "type": "boolean"
98
- },
99
- "scratchorg": {
100
- "char": "s",
101
- "description": "Scratch org",
102
- "name": "scratchorg",
103
- "allowNo": false,
104
- "type": "boolean"
105
- },
106
83
  "debug": {
107
84
  "char": "d",
108
85
  "description": "Activate debug mode (more logs)",
@@ -126,38 +103,39 @@
126
103
  },
127
104
  "hasDynamicHelp": false,
128
105
  "hiddenAliases": [],
129
- "id": "hardis:auth:login",
106
+ "id": "hardis:cache:clear",
130
107
  "pluginAlias": "sfdx-hardis",
131
108
  "pluginName": "sfdx-hardis",
132
109
  "pluginType": "core",
133
110
  "strict": true,
134
111
  "enableJsonFlag": true,
135
- "title": "Login",
112
+ "title": "Clear sfdx-hardis cache",
136
113
  "requiresProject": false,
137
114
  "isESM": true,
138
115
  "relativePath": [
139
116
  "lib",
140
117
  "commands",
141
118
  "hardis",
142
- "auth",
143
- "login.js"
119
+ "cache",
120
+ "clear.js"
144
121
  ],
145
122
  "aliasPermutations": [],
146
123
  "permutations": [
147
- "hardis:auth:login",
148
- "auth:hardis:login",
149
- "auth:login:hardis",
150
- "hardis:login:auth",
151
- "login:hardis:auth",
152
- "login:auth:hardis"
124
+ "hardis:cache:clear",
125
+ "cache:hardis:clear",
126
+ "cache:clear:hardis",
127
+ "hardis:clear:cache",
128
+ "clear:hardis:cache",
129
+ "clear:cache:hardis"
153
130
  ]
154
131
  },
155
- "hardis:cache:clear": {
132
+ "hardis:auth:login": {
156
133
  "aliases": [],
157
134
  "args": {},
158
- "description": "Clear cache generated by sfdx-hardis",
135
+ "description": "Login to salesforce org",
159
136
  "examples": [
160
- "$ sf hardis:cache:clear"
137
+ "$ sf hardis:auth:login",
138
+ "CI=true sf hardis:auth:login"
161
139
  ],
162
140
  "flags": {
163
141
  "json": {
@@ -175,6 +153,28 @@
175
153
  "multiple": false,
176
154
  "type": "option"
177
155
  },
156
+ "instanceurl": {
157
+ "char": "r",
158
+ "description": "URL of org instance",
159
+ "name": "instanceurl",
160
+ "hasDynamicHelp": false,
161
+ "multiple": false,
162
+ "type": "option"
163
+ },
164
+ "devhub": {
165
+ "char": "h",
166
+ "description": "Also connect associated DevHub",
167
+ "name": "devhub",
168
+ "allowNo": false,
169
+ "type": "boolean"
170
+ },
171
+ "scratchorg": {
172
+ "char": "s",
173
+ "description": "Scratch org",
174
+ "name": "scratchorg",
175
+ "allowNo": false,
176
+ "type": "boolean"
177
+ },
178
178
  "debug": {
179
179
  "char": "d",
180
180
  "description": "Activate debug mode (more logs)",
@@ -198,30 +198,30 @@
198
198
  },
199
199
  "hasDynamicHelp": false,
200
200
  "hiddenAliases": [],
201
- "id": "hardis:cache:clear",
201
+ "id": "hardis:auth:login",
202
202
  "pluginAlias": "sfdx-hardis",
203
203
  "pluginName": "sfdx-hardis",
204
204
  "pluginType": "core",
205
205
  "strict": true,
206
206
  "enableJsonFlag": true,
207
- "title": "Clear sfdx-hardis cache",
207
+ "title": "Login",
208
208
  "requiresProject": false,
209
209
  "isESM": true,
210
210
  "relativePath": [
211
211
  "lib",
212
212
  "commands",
213
213
  "hardis",
214
- "cache",
215
- "clear.js"
214
+ "auth",
215
+ "login.js"
216
216
  ],
217
217
  "aliasPermutations": [],
218
218
  "permutations": [
219
- "hardis:cache:clear",
220
- "cache:hardis:clear",
221
- "cache:clear:hardis",
222
- "hardis:clear:cache",
223
- "clear:hardis:cache",
224
- "clear:cache:hardis"
219
+ "hardis:auth:login",
220
+ "auth:hardis:login",
221
+ "auth:login:hardis",
222
+ "hardis:login:auth",
223
+ "login:hardis:auth",
224
+ "login:auth:hardis"
225
225
  ]
226
226
  },
227
227
  "hardis:config:get": {
@@ -2729,12 +2729,12 @@
2729
2729
  "lint:project:hardis"
2730
2730
  ]
2731
2731
  },
2732
- "hardis:source:deploy": {
2732
+ "hardis:scratch:create": {
2733
2733
  "aliases": [],
2734
2734
  "args": {},
2735
- "description": "sfdx-hardis wrapper for sfdx force:source:deploy that displays tips to solve deployment errors.\n\nAdditional to the base command wrapper: If using **--checkonly**, add options **--checkcoverage** and **--coverageformatters json-summary** to check that org coverage is > 75% (or value defined in .sfdx-hardis.yml property **apexTestsMinCoverageOrgWide**)\n\n### Deployment results\n\nYou can also have deployment results as pull request comments, on:\n\n- GitHub (see [GitHub Pull Requests comments config](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integration-github/))\n- Gitlab (see [Gitlab integration configuration](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integration-gitlab/))\n- Azure DevOps (see [Azure integration configuration](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integration-azure/))\n\n\n[![Assisted solving of Salesforce deployments errors](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deployment-errors.jpg)](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)\n\n### Deployment pre or post commands\n\nYou can define command lines to run before or after a deployment, with parameters:\n\n- **id**: Unique Id for the command\n- **label**: Human readable label for the command\n- **skipIfError**: If defined to \"true\", the post-command won't be run if there is a deployment failure\n- **context**: Defines the context where the command will be run. Can be **all** (default), **check-deployment-only** or **process-deployment-only**\n- **runOnlyOnceByOrg**: If set to true, the command will be run only one time per org. A record of SfdxHardisTrace__c is stored to make that possible (it needs to be existing in target org)\n\nIf the commands are not the same depending on the target org, you can define them into **config/branches/.sfdx-hardis-BRANCHNAME.yml** instead of root **config/.sfdx-hardis.yml**\n\nExample:\n\n```yaml\ncommandsPreDeploy:\n - id: knowledgeUnassign\n label: Remove KnowledgeUser right to the user who has it\n command: sf data update record --sobject User --where \"UserPermissionsKnowledgeUser='true'\" --values \"UserPermissionsKnowledgeUser='false'\" --json\n - id: knowledgeAssign\n label: Assign Knowledge user to the deployment user\n command: sf data update record --sobject User --where \"Username='deploy.github@myclient.com'\" --values \"UserPermissionsKnowledgeUser='true'\" --json\n\ncommandsPostDeploy:\n - id: knowledgeUnassign\n label: Remove KnowledgeUser right to the user who has it\n command: sf data update record --sobject User --where \"UserPermissionsKnowledgeUser='true'\" --values \"UserPermissionsKnowledgeUser='false'\" --json\n - id: knowledgeAssign\n label: Assign Knowledge user to desired username\n command: sf data update record --sobject User --where \"Username='admin-yser@myclient.com'\" --values \"UserPermissionsKnowledgeUser='true'\" --json\n - id: someActionToRunJustOneTime\n label: And to run only if deployment is success\n command: sf sfdmu:run ...\n skipIfError: true\n context: process-deployment-only\n runOnlyOnceByOrg: true\n```\n\nNotes:\n\n- You can disable coloring of errors in red by defining env variable SFDX_HARDIS_DEPLOY_ERR_COLORS=false\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_force_source_deploy)\n",
2735
+ "description": "Create and initialize a scratch org or a source-tracked sandbox (config can be defined using `config/.sfdx-hardis.yml`):\n\n- **Install packages**\n - Use property `installedPackages`\n- **Push sources**\n- **Assign permission sets**\n - Use property `initPermissionSets`\n- **Run apex initialization scripts**\n - Use property `scratchOrgInitApexScripts`\n- **Load data**\n - Use property `dataPackages`\n ",
2736
2736
  "examples": [
2737
- "$ sf hardis:source:deploy -x manifest/package.xml --wait 60 --ignorewarnings --testlevel RunLocalTests --postdestructivechanges ./manifest/destructiveChanges.xml --target-org nicolas.vuillamy@cloudity.com.sfdxhardis --checkonly --checkcoverage --verbose --coverageformatters json-summary"
2737
+ "$ sf hardis:scratch:create"
2738
2738
  ],
2739
2739
  "flags": {
2740
2740
  "json": {
@@ -2752,205 +2752,214 @@
2752
2752
  "multiple": false,
2753
2753
  "type": "option"
2754
2754
  },
2755
- "checkonly": {
2756
- "char": "c",
2757
- "description": "checkonly",
2758
- "name": "checkonly",
2755
+ "forcenew": {
2756
+ "char": "n",
2757
+ "description": "If an existing scratch org exists, do not reuse it but create a new one",
2758
+ "name": "forcenew",
2759
2759
  "allowNo": false,
2760
2760
  "type": "boolean"
2761
2761
  },
2762
- "soapdeploy": {
2763
- "description": "soapDeploy",
2764
- "name": "soapdeploy",
2762
+ "pool": {
2763
+ "description": "Creates the scratch org for a scratch org pool",
2764
+ "name": "pool",
2765
2765
  "allowNo": false,
2766
2766
  "type": "boolean"
2767
2767
  },
2768
- "wait": {
2769
- "char": "w",
2770
- "description": "wait",
2771
- "name": "wait",
2772
- "default": 60,
2773
- "hasDynamicHelp": false,
2774
- "multiple": false,
2775
- "type": "option"
2768
+ "debug": {
2769
+ "char": "d",
2770
+ "description": "Activate debug mode (more logs)",
2771
+ "name": "debug",
2772
+ "allowNo": false,
2773
+ "type": "boolean"
2776
2774
  },
2777
- "testlevel": {
2778
- "char": "l",
2779
- "description": "testlevel",
2780
- "name": "testlevel",
2781
- "default": "NoTestRun",
2775
+ "websocket": {
2776
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
2777
+ "name": "websocket",
2782
2778
  "hasDynamicHelp": false,
2783
2779
  "multiple": false,
2784
- "options": [
2785
- "NoTestRun",
2786
- "RunSpecifiedTests",
2787
- "RunLocalTests",
2788
- "RunAllTestsInOrg"
2789
- ],
2790
- "type": "option"
2791
- },
2792
- "runtests": {
2793
- "char": "r",
2794
- "description": "runTests",
2795
- "name": "runtests",
2796
- "default": [],
2797
- "hasDynamicHelp": false,
2798
- "multiple": true,
2799
2780
  "type": "option"
2800
2781
  },
2801
- "ignoreerrors": {
2802
- "description": "ignoreErrors",
2803
- "name": "ignoreerrors",
2782
+ "skipauth": {
2783
+ "description": "Skip authentication check when a default username is required",
2784
+ "name": "skipauth",
2804
2785
  "allowNo": false,
2805
2786
  "type": "boolean"
2806
2787
  },
2807
- "ignorewarnings": {
2808
- "char": "g",
2809
- "description": "ignoreWarnings",
2810
- "name": "ignorewarnings",
2788
+ "target-dev-hub": {
2789
+ "aliases": [
2790
+ "targetdevhubusername"
2791
+ ],
2792
+ "char": "v",
2793
+ "deprecateAliases": true,
2794
+ "name": "target-dev-hub",
2795
+ "noCacheDefault": true,
2796
+ "required": true,
2797
+ "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
2798
+ "hasDynamicHelp": true,
2799
+ "multiple": false,
2800
+ "type": "option"
2801
+ }
2802
+ },
2803
+ "hasDynamicHelp": true,
2804
+ "hiddenAliases": [],
2805
+ "id": "hardis:scratch:create",
2806
+ "pluginAlias": "sfdx-hardis",
2807
+ "pluginName": "sfdx-hardis",
2808
+ "pluginType": "core",
2809
+ "strict": true,
2810
+ "enableJsonFlag": true,
2811
+ "title": "Create and initialize scratch org",
2812
+ "requiresProject": true,
2813
+ "requiresSfdxPlugins": [
2814
+ "sfdmu",
2815
+ "texei-sfdx-plugin"
2816
+ ],
2817
+ "isESM": true,
2818
+ "relativePath": [
2819
+ "lib",
2820
+ "commands",
2821
+ "hardis",
2822
+ "scratch",
2823
+ "create.js"
2824
+ ],
2825
+ "aliasPermutations": [],
2826
+ "permutations": [
2827
+ "hardis:scratch:create",
2828
+ "scratch:hardis:create",
2829
+ "scratch:create:hardis",
2830
+ "hardis:create:scratch",
2831
+ "create:hardis:scratch",
2832
+ "create:scratch:hardis"
2833
+ ]
2834
+ },
2835
+ "hardis:scratch:delete": {
2836
+ "aliases": [],
2837
+ "args": {},
2838
+ "description": "Assisted menu to delete scratch orgs associated to a DevHub",
2839
+ "examples": [
2840
+ "$ sf hardis:scratch:delete"
2841
+ ],
2842
+ "flags": {
2843
+ "json": {
2844
+ "description": "Format output as json.",
2845
+ "helpGroup": "GLOBAL",
2846
+ "name": "json",
2811
2847
  "allowNo": false,
2812
2848
  "type": "boolean"
2813
2849
  },
2814
- "validateddeployrequestid": {
2815
- "char": "q",
2816
- "description": "validateDeployRequestId",
2817
- "exclusive": [
2818
- "manifest",
2819
- "metadata",
2820
- "sourcepath",
2821
- "checkonly",
2822
- "testlevel",
2823
- "runtests",
2824
- "ignoreerrors",
2825
- "ignorewarnings"
2826
- ],
2827
- "name": "validateddeployrequestid",
2850
+ "flags-dir": {
2851
+ "helpGroup": "GLOBAL",
2852
+ "name": "flags-dir",
2853
+ "summary": "Import flag values from a directory.",
2828
2854
  "hasDynamicHelp": false,
2829
2855
  "multiple": false,
2830
2856
  "type": "option"
2831
2857
  },
2832
- "verbose": {
2833
- "description": "verbose",
2834
- "name": "verbose",
2858
+ "debug": {
2859
+ "char": "d",
2860
+ "description": "Activate debug mode (more logs)",
2861
+ "name": "debug",
2835
2862
  "allowNo": false,
2836
2863
  "type": "boolean"
2837
2864
  },
2838
- "metadata": {
2839
- "char": "m",
2840
- "description": "metadata",
2841
- "exclusive": [
2842
- "manifest",
2843
- "sourcepath"
2844
- ],
2845
- "name": "metadata",
2846
- "hasDynamicHelp": false,
2847
- "multiple": true,
2848
- "type": "option"
2849
- },
2850
- "sourcepath": {
2851
- "char": "p",
2852
- "description": "sourcePath",
2853
- "exclusive": [
2854
- "manifest",
2855
- "metadata"
2856
- ],
2857
- "name": "sourcepath",
2858
- "hasDynamicHelp": false,
2859
- "multiple": true,
2860
- "type": "option"
2861
- },
2862
- "manifest": {
2863
- "char": "x",
2864
- "description": "flagsLong.manifest",
2865
- "exclusive": [
2866
- "metadata",
2867
- "sourcepath"
2868
- ],
2869
- "name": "manifest",
2870
- "hasDynamicHelp": false,
2871
- "multiple": false,
2872
- "type": "option"
2873
- },
2874
- "predestructivechanges": {
2875
- "dependsOn": [
2876
- "manifest"
2877
- ],
2878
- "description": "predestructivechanges",
2879
- "name": "predestructivechanges",
2880
- "hasDynamicHelp": false,
2881
- "multiple": false,
2882
- "type": "option"
2883
- },
2884
- "postdestructivechanges": {
2885
- "dependsOn": [
2886
- "manifest"
2887
- ],
2888
- "description": "postdestructivechanges",
2889
- "name": "postdestructivechanges",
2865
+ "websocket": {
2866
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
2867
+ "name": "websocket",
2890
2868
  "hasDynamicHelp": false,
2891
2869
  "multiple": false,
2892
2870
  "type": "option"
2893
2871
  },
2894
- "tracksource": {
2895
- "char": "t",
2896
- "description": "tracksource",
2897
- "exclusive": [
2898
- "checkonly",
2899
- "validateddeployrequestid"
2900
- ],
2901
- "name": "tracksource",
2872
+ "skipauth": {
2873
+ "description": "Skip authentication check when a default username is required",
2874
+ "name": "skipauth",
2902
2875
  "allowNo": false,
2903
2876
  "type": "boolean"
2904
2877
  },
2905
- "forceoverwrite": {
2906
- "char": "f",
2907
- "dependsOn": [
2908
- "tracksource"
2878
+ "target-dev-hub": {
2879
+ "aliases": [
2880
+ "targetdevhubusername"
2909
2881
  ],
2910
- "description": "forceoverwrite",
2911
- "name": "forceoverwrite",
2882
+ "char": "v",
2883
+ "deprecateAliases": true,
2884
+ "name": "target-dev-hub",
2885
+ "noCacheDefault": true,
2886
+ "required": true,
2887
+ "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
2888
+ "hasDynamicHelp": true,
2889
+ "multiple": false,
2890
+ "type": "option"
2891
+ }
2892
+ },
2893
+ "hasDynamicHelp": true,
2894
+ "hiddenAliases": [],
2895
+ "id": "hardis:scratch:delete",
2896
+ "pluginAlias": "sfdx-hardis",
2897
+ "pluginName": "sfdx-hardis",
2898
+ "pluginType": "core",
2899
+ "strict": true,
2900
+ "enableJsonFlag": true,
2901
+ "title": "Delete scratch orgs(s)",
2902
+ "isESM": true,
2903
+ "relativePath": [
2904
+ "lib",
2905
+ "commands",
2906
+ "hardis",
2907
+ "scratch",
2908
+ "delete.js"
2909
+ ],
2910
+ "aliasPermutations": [],
2911
+ "permutations": [
2912
+ "hardis:scratch:delete",
2913
+ "scratch:hardis:delete",
2914
+ "scratch:delete:hardis",
2915
+ "hardis:delete:scratch",
2916
+ "delete:hardis:scratch",
2917
+ "delete:scratch:hardis"
2918
+ ]
2919
+ },
2920
+ "hardis:scratch:pull": {
2921
+ "aliases": [],
2922
+ "args": {},
2923
+ "description": "This commands pulls the updates you performed in your scratch or sandbox org, into your local files\n\nThen, you probably want to stage and commit the files containing the updates you want to keep, as explained in this video.\n\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/Ik6whtflmfY\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n\n- Calls `sf project retrieve start` under the hood\n- If there are errors, proposes to automatically add erroneous item in `.forceignore`, then pull again\n- If you don't see your updated items in the results, you can manually retrieve [using SF Extension **Org Browser** or **Salesforce CLI**](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-publish-task/#retrieve-metadatas)\n- If you want to always retrieve sources like CustomApplication that are not always detected as updates by project:retrieve:start , you can define property **autoRetrieveWhenPull** in .sfdx-hardis.yml\n\nExample:\n```yaml\nautoRetrieveWhenPull:\n - CustomApplication:MyCustomApplication\n - CustomApplication:MyOtherCustomApplication\n - CustomApplication:MyThirdCustomApp\n```\n",
2924
+ "examples": [
2925
+ "$ sf hardis:scratch:pull"
2926
+ ],
2927
+ "flags": {
2928
+ "json": {
2929
+ "description": "Format output as json.",
2930
+ "helpGroup": "GLOBAL",
2931
+ "name": "json",
2912
2932
  "allowNo": false,
2913
2933
  "type": "boolean"
2914
2934
  },
2915
- "resultsdir": {
2916
- "description": "resultsdir",
2917
- "name": "resultsdir",
2935
+ "flags-dir": {
2936
+ "helpGroup": "GLOBAL",
2937
+ "name": "flags-dir",
2938
+ "summary": "Import flag values from a directory.",
2918
2939
  "hasDynamicHelp": false,
2919
2940
  "multiple": false,
2920
2941
  "type": "option"
2921
2942
  },
2922
- "coverageformatters": {
2923
- "description": "coverageformatters",
2924
- "name": "coverageformatters",
2925
- "hasDynamicHelp": false,
2926
- "multiple": true,
2927
- "type": "option"
2928
- },
2929
- "junit": {
2930
- "description": "junit",
2931
- "name": "junit",
2932
- "allowNo": false,
2933
- "type": "boolean"
2934
- },
2935
- "checkcoverage": {
2936
- "description": "Check Apex org coverage",
2937
- "name": "checkcoverage",
2938
- "allowNo": false,
2939
- "type": "boolean"
2940
- },
2941
2943
  "debug": {
2942
- "description": "debug",
2944
+ "char": "d",
2945
+ "description": "Activate debug mode (more logs)",
2943
2946
  "name": "debug",
2944
2947
  "allowNo": false,
2945
2948
  "type": "boolean"
2946
2949
  },
2947
2950
  "websocket": {
2948
- "description": "websocket",
2951
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
2949
2952
  "name": "websocket",
2950
2953
  "hasDynamicHelp": false,
2951
2954
  "multiple": false,
2952
2955
  "type": "option"
2953
2956
  },
2957
+ "skipauth": {
2958
+ "description": "Skip authentication check when a default username is required",
2959
+ "name": "skipauth",
2960
+ "allowNo": false,
2961
+ "type": "boolean"
2962
+ },
2954
2963
  "target-org": {
2955
2964
  "aliases": [
2956
2965
  "targetusername",
@@ -2969,35 +2978,39 @@
2969
2978
  },
2970
2979
  "hasDynamicHelp": true,
2971
2980
  "hiddenAliases": [],
2972
- "id": "hardis:source:deploy",
2981
+ "id": "hardis:scratch:pull",
2973
2982
  "pluginAlias": "sfdx-hardis",
2974
2983
  "pluginName": "sfdx-hardis",
2975
2984
  "pluginType": "core",
2976
2985
  "strict": true,
2977
2986
  "enableJsonFlag": true,
2987
+ "title": "Scratch PULL",
2978
2988
  "requiresProject": true,
2979
2989
  "isESM": true,
2980
2990
  "relativePath": [
2981
2991
  "lib",
2982
2992
  "commands",
2983
2993
  "hardis",
2984
- "source",
2985
- "deploy.js"
2994
+ "scratch",
2995
+ "pull.js"
2986
2996
  ],
2987
2997
  "aliasPermutations": [],
2988
2998
  "permutations": [
2989
- "hardis:source:deploy",
2990
- "source:hardis:deploy",
2991
- "source:deploy:hardis",
2992
- "hardis:deploy:source",
2993
- "deploy:hardis:source",
2994
- "deploy:source:hardis"
2999
+ "hardis:scratch:pull",
3000
+ "scratch:hardis:pull",
3001
+ "scratch:pull:hardis",
3002
+ "hardis:pull:scratch",
3003
+ "pull:hardis:scratch",
3004
+ "pull:scratch:hardis"
2995
3005
  ]
2996
3006
  },
2997
- "hardis:source:push": {
3007
+ "hardis:scratch:push": {
2998
3008
  "aliases": [],
2999
3009
  "args": {},
3000
- "description": "sfdx-hardis wrapper for sfdx force:source:push that displays tips to solve deployment errors.\n\n[![Assisted solving of Salesforce deployments errors](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deployment-errors.jpg)](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_force_source_push)\n",
3010
+ "description": "Push local files to scratch org\n\nCalls `sf project deploy start` under the hood\n",
3011
+ "examples": [
3012
+ "$ sf hardis:scratch:push"
3013
+ ],
3001
3014
  "flags": {
3002
3015
  "json": {
3003
3016
  "description": "Format output as json.",
@@ -3014,48 +3027,26 @@
3014
3027
  "multiple": false,
3015
3028
  "type": "option"
3016
3029
  },
3017
- "forceoverwrite": {
3018
- "char": "f",
3019
- "description": "forceoverwrite",
3020
- "name": "forceoverwrite",
3021
- "allowNo": false,
3022
- "type": "boolean"
3023
- },
3024
- "wait": {
3025
- "char": "w",
3026
- "description": "wait",
3027
- "name": "wait",
3028
- "default": 60,
3029
- "hasDynamicHelp": false,
3030
- "multiple": false,
3031
- "type": "option"
3032
- },
3033
- "ignorewarnings": {
3034
- "char": "g",
3035
- "description": "ignorewarnings",
3036
- "name": "ignorewarnings",
3037
- "allowNo": false,
3038
- "type": "boolean"
3039
- },
3040
- "quiet": {
3041
- "description": "quiet",
3042
- "name": "quiet",
3043
- "allowNo": false,
3044
- "type": "boolean"
3045
- },
3046
3030
  "debug": {
3047
- "description": "debug",
3031
+ "char": "d",
3032
+ "description": "Activate debug mode (more logs)",
3048
3033
  "name": "debug",
3049
3034
  "allowNo": false,
3050
3035
  "type": "boolean"
3051
3036
  },
3052
3037
  "websocket": {
3053
- "description": "websocket",
3038
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3054
3039
  "name": "websocket",
3055
3040
  "hasDynamicHelp": false,
3056
3041
  "multiple": false,
3057
3042
  "type": "option"
3058
3043
  },
3044
+ "skipauth": {
3045
+ "description": "Skip authentication check when a default username is required",
3046
+ "name": "skipauth",
3047
+ "allowNo": false,
3048
+ "type": "boolean"
3049
+ },
3059
3050
  "target-org": {
3060
3051
  "aliases": [
3061
3052
  "targetusername",
@@ -3074,36 +3065,39 @@
3074
3065
  },
3075
3066
  "hasDynamicHelp": true,
3076
3067
  "hiddenAliases": [],
3077
- "id": "hardis:source:push",
3068
+ "id": "hardis:scratch:push",
3078
3069
  "pluginAlias": "sfdx-hardis",
3079
3070
  "pluginName": "sfdx-hardis",
3080
3071
  "pluginType": "core",
3081
3072
  "strict": true,
3082
3073
  "enableJsonFlag": true,
3074
+ "title": "Scratch PUSH",
3083
3075
  "requiresProject": true,
3084
3076
  "isESM": true,
3085
3077
  "relativePath": [
3086
3078
  "lib",
3087
3079
  "commands",
3088
3080
  "hardis",
3089
- "source",
3081
+ "scratch",
3090
3082
  "push.js"
3091
3083
  ],
3092
3084
  "aliasPermutations": [],
3093
3085
  "permutations": [
3094
- "hardis:source:push",
3095
- "source:hardis:push",
3096
- "source:push:hardis",
3097
- "hardis:push:source",
3098
- "push:hardis:source",
3099
- "push:source:hardis"
3086
+ "hardis:scratch:push",
3087
+ "scratch:hardis:push",
3088
+ "scratch:push:hardis",
3089
+ "hardis:push:scratch",
3090
+ "push:hardis:scratch",
3091
+ "push:scratch:hardis"
3100
3092
  ]
3101
3093
  },
3102
- "hardis:source:retrieve": {
3094
+ "hardis:source:deploy": {
3103
3095
  "aliases": [],
3104
3096
  "args": {},
3105
- "description": "sfdx-hardis wrapper for sfdx force:source:retrieve\n\n- If no retrieve constraint is sent, as assisted menu will request the list of metadatas to retrieve\n- If no org is selected , an assisted menu will request the user to choose one\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_force_source_retrieve)\n",
3106
- "examples": [],
3097
+ "description": "sfdx-hardis wrapper for sfdx force:source:deploy that displays tips to solve deployment errors.\n\nAdditional to the base command wrapper: If using **--checkonly**, add options **--checkcoverage** and **--coverageformatters json-summary** to check that org coverage is > 75% (or value defined in .sfdx-hardis.yml property **apexTestsMinCoverageOrgWide**)\n\n### Deployment results\n\nYou can also have deployment results as pull request comments, on:\n\n- GitHub (see [GitHub Pull Requests comments config](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integration-github/))\n- Gitlab (see [Gitlab integration configuration](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integration-gitlab/))\n- Azure DevOps (see [Azure integration configuration](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-setup-integration-azure/))\n\n\n[![Assisted solving of Salesforce deployments errors](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deployment-errors.jpg)](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)\n\n### Deployment pre or post commands\n\nYou can define command lines to run before or after a deployment, with parameters:\n\n- **id**: Unique Id for the command\n- **label**: Human readable label for the command\n- **skipIfError**: If defined to \"true\", the post-command won't be run if there is a deployment failure\n- **context**: Defines the context where the command will be run. Can be **all** (default), **check-deployment-only** or **process-deployment-only**\n- **runOnlyOnceByOrg**: If set to true, the command will be run only one time per org. A record of SfdxHardisTrace__c is stored to make that possible (it needs to be existing in target org)\n\nIf the commands are not the same depending on the target org, you can define them into **config/branches/.sfdx-hardis-BRANCHNAME.yml** instead of root **config/.sfdx-hardis.yml**\n\nExample:\n\n```yaml\ncommandsPreDeploy:\n - id: knowledgeUnassign\n label: Remove KnowledgeUser right to the user who has it\n command: sf data update record --sobject User --where \"UserPermissionsKnowledgeUser='true'\" --values \"UserPermissionsKnowledgeUser='false'\" --json\n - id: knowledgeAssign\n label: Assign Knowledge user to the deployment user\n command: sf data update record --sobject User --where \"Username='deploy.github@myclient.com'\" --values \"UserPermissionsKnowledgeUser='true'\" --json\n\ncommandsPostDeploy:\n - id: knowledgeUnassign\n label: Remove KnowledgeUser right to the user who has it\n command: sf data update record --sobject User --where \"UserPermissionsKnowledgeUser='true'\" --values \"UserPermissionsKnowledgeUser='false'\" --json\n - id: knowledgeAssign\n label: Assign Knowledge user to desired username\n command: sf data update record --sobject User --where \"Username='admin-yser@myclient.com'\" --values \"UserPermissionsKnowledgeUser='true'\" --json\n - id: someActionToRunJustOneTime\n label: And to run only if deployment is success\n command: sf sfdmu:run ...\n skipIfError: true\n context: process-deployment-only\n runOnlyOnceByOrg: true\n```\n\nNotes:\n\n- You can disable coloring of errors in red by defining env variable SFDX_HARDIS_DEPLOY_ERR_COLORS=false\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_force_source_deploy)\n",
3098
+ "examples": [
3099
+ "$ sf hardis:source:deploy -x manifest/package.xml --wait 60 --ignorewarnings --testlevel RunLocalTests --postdestructivechanges ./manifest/destructiveChanges.xml --target-org nicolas.vuillamy@cloudity.com.sfdxhardis --checkonly --checkcoverage --verbose --coverageformatters json-summary"
3100
+ ],
3107
3101
  "flags": {
3108
3102
  "json": {
3109
3103
  "description": "Format output as json.",
@@ -3120,46 +3114,89 @@
3120
3114
  "multiple": false,
3121
3115
  "type": "option"
3122
3116
  },
3123
- "apiversion": {
3124
- "char": "a",
3125
- "description": "Override the api version used for api requests made by this command",
3126
- "name": "apiversion",
3127
- "hasDynamicHelp": false,
3128
- "multiple": false,
3129
- "type": "option"
3130
- },
3131
- "sourcepath": {
3132
- "char": "p",
3133
- "description": "sourcePath",
3134
- "exclusive": [
3135
- "manifest",
3136
- "metadata"
3137
- ],
3138
- "name": "sourcepath",
3139
- "hasDynamicHelp": false,
3140
- "multiple": true,
3141
- "type": "option"
3117
+ "checkonly": {
3118
+ "char": "c",
3119
+ "description": "checkonly",
3120
+ "name": "checkonly",
3121
+ "allowNo": false,
3122
+ "type": "boolean"
3123
+ },
3124
+ "soapdeploy": {
3125
+ "description": "soapDeploy",
3126
+ "name": "soapdeploy",
3127
+ "allowNo": false,
3128
+ "type": "boolean"
3142
3129
  },
3143
3130
  "wait": {
3144
3131
  "char": "w",
3145
3132
  "description": "wait",
3146
3133
  "name": "wait",
3134
+ "default": 60,
3147
3135
  "hasDynamicHelp": false,
3148
3136
  "multiple": false,
3149
3137
  "type": "option"
3150
3138
  },
3151
- "manifest": {
3152
- "char": "x",
3153
- "description": "manifest",
3139
+ "testlevel": {
3140
+ "char": "l",
3141
+ "description": "testlevel",
3142
+ "name": "testlevel",
3143
+ "default": "NoTestRun",
3144
+ "hasDynamicHelp": false,
3145
+ "multiple": false,
3146
+ "options": [
3147
+ "NoTestRun",
3148
+ "RunSpecifiedTests",
3149
+ "RunLocalTests",
3150
+ "RunAllTestsInOrg"
3151
+ ],
3152
+ "type": "option"
3153
+ },
3154
+ "runtests": {
3155
+ "char": "r",
3156
+ "description": "runTests",
3157
+ "name": "runtests",
3158
+ "default": [],
3159
+ "hasDynamicHelp": false,
3160
+ "multiple": true,
3161
+ "type": "option"
3162
+ },
3163
+ "ignoreerrors": {
3164
+ "description": "ignoreErrors",
3165
+ "name": "ignoreerrors",
3166
+ "allowNo": false,
3167
+ "type": "boolean"
3168
+ },
3169
+ "ignorewarnings": {
3170
+ "char": "g",
3171
+ "description": "ignoreWarnings",
3172
+ "name": "ignorewarnings",
3173
+ "allowNo": false,
3174
+ "type": "boolean"
3175
+ },
3176
+ "validateddeployrequestid": {
3177
+ "char": "q",
3178
+ "description": "validateDeployRequestId",
3154
3179
  "exclusive": [
3180
+ "manifest",
3155
3181
  "metadata",
3156
- "sourcepath"
3182
+ "sourcepath",
3183
+ "checkonly",
3184
+ "testlevel",
3185
+ "runtests",
3186
+ "ignoreerrors",
3187
+ "ignorewarnings"
3157
3188
  ],
3158
- "name": "manifest",
3189
+ "name": "validateddeployrequestid",
3159
3190
  "hasDynamicHelp": false,
3160
3191
  "multiple": false,
3161
3192
  "type": "option"
3162
3193
  },
3194
+ "verbose": {
3195
+ "description": "verbose",
3196
+ "name": "verbose",
3197
+ "allowNo": false,
3198
+ "type": "boolean"
3199
+ },
3163
3200
  "metadata": {
3164
3201
  "char": "m",
3165
3202
  "description": "metadata",
@@ -3172,17 +3209,57 @@
3172
3209
  "multiple": true,
3173
3210
  "type": "option"
3174
3211
  },
3175
- "packagenames": {
3176
- "char": "n",
3177
- "description": "packagenames",
3178
- "name": "packagenames",
3212
+ "sourcepath": {
3213
+ "char": "p",
3214
+ "description": "sourcePath",
3215
+ "exclusive": [
3216
+ "manifest",
3217
+ "metadata"
3218
+ ],
3219
+ "name": "sourcepath",
3179
3220
  "hasDynamicHelp": false,
3180
3221
  "multiple": true,
3181
3222
  "type": "option"
3182
3223
  },
3224
+ "manifest": {
3225
+ "char": "x",
3226
+ "description": "flagsLong.manifest",
3227
+ "exclusive": [
3228
+ "metadata",
3229
+ "sourcepath"
3230
+ ],
3231
+ "name": "manifest",
3232
+ "hasDynamicHelp": false,
3233
+ "multiple": false,
3234
+ "type": "option"
3235
+ },
3236
+ "predestructivechanges": {
3237
+ "dependsOn": [
3238
+ "manifest"
3239
+ ],
3240
+ "description": "predestructivechanges",
3241
+ "name": "predestructivechanges",
3242
+ "hasDynamicHelp": false,
3243
+ "multiple": false,
3244
+ "type": "option"
3245
+ },
3246
+ "postdestructivechanges": {
3247
+ "dependsOn": [
3248
+ "manifest"
3249
+ ],
3250
+ "description": "postdestructivechanges",
3251
+ "name": "postdestructivechanges",
3252
+ "hasDynamicHelp": false,
3253
+ "multiple": false,
3254
+ "type": "option"
3255
+ },
3183
3256
  "tracksource": {
3184
3257
  "char": "t",
3185
3258
  "description": "tracksource",
3259
+ "exclusive": [
3260
+ "checkonly",
3261
+ "validateddeployrequestid"
3262
+ ],
3186
3263
  "name": "tracksource",
3187
3264
  "allowNo": false,
3188
3265
  "type": "boolean"
@@ -3197,132 +3274,45 @@
3197
3274
  "allowNo": false,
3198
3275
  "type": "boolean"
3199
3276
  },
3200
- "verbose": {
3201
- "description": "verbose",
3202
- "name": "verbose",
3203
- "allowNo": false,
3204
- "type": "boolean"
3205
- },
3206
- "debug": {
3207
- "char": "d",
3208
- "description": "debugMode",
3209
- "name": "debug",
3210
- "allowNo": false,
3211
- "type": "boolean"
3212
- },
3213
- "websocket": {
3214
- "description": "websocket",
3215
- "name": "websocket",
3277
+ "resultsdir": {
3278
+ "description": "resultsdir",
3279
+ "name": "resultsdir",
3216
3280
  "hasDynamicHelp": false,
3217
3281
  "multiple": false,
3218
3282
  "type": "option"
3219
3283
  },
3220
- "skipauth": {
3221
- "description": "Skip authentication check when a default username is required",
3222
- "name": "skipauth",
3284
+ "coverageformatters": {
3285
+ "description": "coverageformatters",
3286
+ "name": "coverageformatters",
3287
+ "hasDynamicHelp": false,
3288
+ "multiple": true,
3289
+ "type": "option"
3290
+ },
3291
+ "junit": {
3292
+ "description": "junit",
3293
+ "name": "junit",
3223
3294
  "allowNo": false,
3224
3295
  "type": "boolean"
3225
3296
  },
3226
- "target-org": {
3227
- "aliases": [
3228
- "targetusername",
3229
- "u"
3230
- ],
3231
- "char": "o",
3232
- "deprecateAliases": true,
3233
- "name": "target-org",
3234
- "noCacheDefault": true,
3235
- "required": true,
3236
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3237
- "hasDynamicHelp": true,
3238
- "multiple": false,
3239
- "type": "option"
3240
- }
3241
- },
3242
- "hasDynamicHelp": true,
3243
- "hiddenAliases": [],
3244
- "id": "hardis:source:retrieve",
3245
- "pluginAlias": "sfdx-hardis",
3246
- "pluginName": "sfdx-hardis",
3247
- "pluginType": "core",
3248
- "strict": true,
3249
- "enableJsonFlag": true,
3250
- "requiresProject": true,
3251
- "isESM": true,
3252
- "relativePath": [
3253
- "lib",
3254
- "commands",
3255
- "hardis",
3256
- "source",
3257
- "retrieve.js"
3258
- ],
3259
- "aliasPermutations": [],
3260
- "permutations": [
3261
- "hardis:source:retrieve",
3262
- "source:hardis:retrieve",
3263
- "source:retrieve:hardis",
3264
- "hardis:retrieve:source",
3265
- "retrieve:hardis:source",
3266
- "retrieve:source:hardis"
3267
- ]
3268
- },
3269
- "hardis:work:new": {
3270
- "aliases": [],
3271
- "args": {},
3272
- "description": "Assisted menu to start working on a Salesforce task.\n\nAdvanced instructions in [Create New Task documentation](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-create-new-task/)\n\nAt the end of the command, it will allow you to work on either a scratch org or a sandbox, depending on your choices.\n\nUnder the hood, it can:\n\n- Make **git pull** to be up to date with target branch\n- Create **new git branch** with formatted name (you can override the choices using .sfdx-hardis.yml property **branchPrefixChoices**)\n- Create and initialize a scratch org or a source-tracked sandbox (config can be defined using `config/.sfdx-hardis.yml`):\n- (and for scratch org only for now):\n - **Install packages**\n - Use property `installedPackages`\n - **Push sources**\n - **Assign permission sets**\n - Use property `initPermissionSets`\n - **Run apex initialization scripts**\n - Use property `scratchOrgInitApexScripts`\n - **Load data**\n - Use property `dataPackages`\n\n## Override .sfdx-hardis.yml config\n\n### availableTargetBranches\n\nBy default, there is only one target branch (value of property **developmentBranch**).\n\nYou can define multiple target branches (for the future Pull Request) by setting the property **availableTargetBranches** in your .sfdx-hardis.yml file.\n\nThe selected branch will checked out and be used as base to create the user new feature branch.\n\nExamples:\n\n```yaml\navailableTargetBranches:\n - integration\n - preprod\n```\n\n```yaml\navailableTargetBranches:\n - integration,Select this to work from the integration branch (project stream)\n - preprod,Select this to work from the preprod branch (run stream)\n```\n\n### availableProjects\n\nYou can add a first question \"What is the project your task is for\" if you define a property **availableProjects**\n\nThe select will be used as first part of the git branch name. (ex: france/features/dev/JIRA123-webservice-get-account)\n\nExamples:\n\n```yaml\navailableProjects:\n - build\n - run\n - some-big-project\n - france\n - uk\n```\n\n```yaml\navailableProjects:\n - build,Select this to work on the build project\n - run,Select this to work on the run project\n - some-big-project,Select this to work on the some big project\n - france,Select this to work on the France project\n - uk,Select this to work on the UK project\n```\n\n### newTaskNameRegex\n\nIf you want to force a specific format for the task name, you can define a property **newTaskNameRegex** in your .sfdx-hardis.yml file.\n\nPlease also define a property **newTaskNameRegexExample** to give an example to the user.\n\nExample:\n\n```yaml\nnewTaskNameRegex: '^[A-Z]+-[0-9]+ .*'\nnewTaskNameRegexExample: 'MYPROJECT-123 Update account status validation rule'\n```\n\n### sharedDevSandboxes\n\nIf contributors can share dev sandboxes, let's not ask them if they want to overwrite their colleagues' changes when creating a new task :)\n",
3273
- "examples": [
3274
- "$ sf hardis:work:new"
3275
- ],
3276
- "flags": {
3277
- "json": {
3278
- "description": "Format output as json.",
3279
- "helpGroup": "GLOBAL",
3280
- "name": "json",
3297
+ "checkcoverage": {
3298
+ "description": "Check Apex org coverage",
3299
+ "name": "checkcoverage",
3281
3300
  "allowNo": false,
3282
3301
  "type": "boolean"
3283
3302
  },
3284
- "flags-dir": {
3285
- "helpGroup": "GLOBAL",
3286
- "name": "flags-dir",
3287
- "summary": "Import flag values from a directory.",
3288
- "hasDynamicHelp": false,
3289
- "multiple": false,
3290
- "type": "option"
3291
- },
3292
3303
  "debug": {
3293
- "char": "d",
3294
- "description": "Activate debug mode (more logs)",
3304
+ "description": "debug",
3295
3305
  "name": "debug",
3296
3306
  "allowNo": false,
3297
3307
  "type": "boolean"
3298
3308
  },
3299
3309
  "websocket": {
3300
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3310
+ "description": "websocket",
3301
3311
  "name": "websocket",
3302
3312
  "hasDynamicHelp": false,
3303
3313
  "multiple": false,
3304
3314
  "type": "option"
3305
3315
  },
3306
- "skipauth": {
3307
- "description": "Skip authentication check when a default username is required",
3308
- "name": "skipauth",
3309
- "allowNo": false,
3310
- "type": "boolean"
3311
- },
3312
- "target-dev-hub": {
3313
- "aliases": [
3314
- "targetdevhubusername"
3315
- ],
3316
- "char": "v",
3317
- "deprecateAliases": true,
3318
- "name": "target-dev-hub",
3319
- "noCacheDefault": true,
3320
- "required": false,
3321
- "summary": "Username or alias of the Dev Hub org.",
3322
- "hasDynamicHelp": true,
3323
- "multiple": false,
3324
- "type": "option"
3325
- },
3326
3316
  "target-org": {
3327
3317
  "aliases": [
3328
3318
  "targetusername",
@@ -3332,7 +3322,8 @@
3332
3322
  "deprecateAliases": true,
3333
3323
  "name": "target-org",
3334
3324
  "noCacheDefault": true,
3335
- "summary": "Username or alias of the target org.",
3325
+ "required": true,
3326
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3336
3327
  "hasDynamicHelp": true,
3337
3328
  "multiple": false,
3338
3329
  "type": "option"
@@ -3340,39 +3331,35 @@
3340
3331
  },
3341
3332
  "hasDynamicHelp": true,
3342
3333
  "hiddenAliases": [],
3343
- "id": "hardis:work:new",
3334
+ "id": "hardis:source:deploy",
3344
3335
  "pluginAlias": "sfdx-hardis",
3345
3336
  "pluginName": "sfdx-hardis",
3346
3337
  "pluginType": "core",
3347
3338
  "strict": true,
3348
3339
  "enableJsonFlag": true,
3349
- "title": "New work task",
3350
3340
  "requiresProject": true,
3351
3341
  "isESM": true,
3352
3342
  "relativePath": [
3353
3343
  "lib",
3354
3344
  "commands",
3355
3345
  "hardis",
3356
- "work",
3357
- "new.js"
3346
+ "source",
3347
+ "deploy.js"
3358
3348
  ],
3359
3349
  "aliasPermutations": [],
3360
3350
  "permutations": [
3361
- "hardis:work:new",
3362
- "work:hardis:new",
3363
- "work:new:hardis",
3364
- "hardis:new:work",
3365
- "new:hardis:work",
3366
- "new:work:hardis"
3351
+ "hardis:source:deploy",
3352
+ "source:hardis:deploy",
3353
+ "source:deploy:hardis",
3354
+ "hardis:deploy:source",
3355
+ "deploy:hardis:source",
3356
+ "deploy:source:hardis"
3367
3357
  ]
3368
3358
  },
3369
- "hardis:work:refresh": {
3359
+ "hardis:source:push": {
3370
3360
  "aliases": [],
3371
3361
  "args": {},
3372
- "description": "Make my local branch and my scratch org up to date with the most recent sources",
3373
- "examples": [
3374
- "$ sf hardis:work:refresh"
3375
- ],
3362
+ "description": "sfdx-hardis wrapper for sfdx force:source:push that displays tips to solve deployment errors.\n\n[![Assisted solving of Salesforce deployments errors](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-deployment-errors.jpg)](https://nicolas.vuillamy.fr/assisted-solving-of-salesforce-deployments-errors-47f3666a9ed0)\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_force_source_push)\n",
3376
3363
  "flags": {
3377
3364
  "json": {
3378
3365
  "description": "Format output as json.",
@@ -3389,120 +3376,48 @@
3389
3376
  "multiple": false,
3390
3377
  "type": "option"
3391
3378
  },
3392
- "nopull": {
3393
- "char": "n",
3394
- "description": "No scratch pull before save (careful if you use that!)",
3395
- "name": "nopull",
3396
- "allowNo": false,
3397
- "type": "boolean"
3398
- },
3399
- "debug": {
3400
- "char": "d",
3401
- "description": "Activate debug mode (more logs)",
3402
- "name": "debug",
3379
+ "forceoverwrite": {
3380
+ "char": "f",
3381
+ "description": "forceoverwrite",
3382
+ "name": "forceoverwrite",
3403
3383
  "allowNo": false,
3404
3384
  "type": "boolean"
3405
3385
  },
3406
- "websocket": {
3407
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3408
- "name": "websocket",
3386
+ "wait": {
3387
+ "char": "w",
3388
+ "description": "wait",
3389
+ "name": "wait",
3390
+ "default": 60,
3409
3391
  "hasDynamicHelp": false,
3410
3392
  "multiple": false,
3411
3393
  "type": "option"
3412
3394
  },
3413
- "skipauth": {
3414
- "description": "Skip authentication check when a default username is required",
3415
- "name": "skipauth",
3395
+ "ignorewarnings": {
3396
+ "char": "g",
3397
+ "description": "ignorewarnings",
3398
+ "name": "ignorewarnings",
3416
3399
  "allowNo": false,
3417
3400
  "type": "boolean"
3418
3401
  },
3419
- "target-org": {
3420
- "aliases": [
3421
- "targetusername",
3422
- "u"
3423
- ],
3424
- "char": "o",
3425
- "deprecateAliases": true,
3426
- "name": "target-org",
3427
- "noCacheDefault": true,
3428
- "required": true,
3429
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3430
- "hasDynamicHelp": true,
3431
- "multiple": false,
3432
- "type": "option"
3433
- }
3434
- },
3435
- "hasDynamicHelp": true,
3436
- "hiddenAliases": [],
3437
- "id": "hardis:work:refresh",
3438
- "pluginAlias": "sfdx-hardis",
3439
- "pluginName": "sfdx-hardis",
3440
- "pluginType": "core",
3441
- "strict": true,
3442
- "enableJsonFlag": true,
3443
- "title": "Refresh work task",
3444
- "requiresProject": true,
3445
- "isESM": true,
3446
- "relativePath": [
3447
- "lib",
3448
- "commands",
3449
- "hardis",
3450
- "work",
3451
- "refresh.js"
3452
- ],
3453
- "aliasPermutations": [],
3454
- "permutations": [
3455
- "hardis:work:refresh",
3456
- "work:hardis:refresh",
3457
- "work:refresh:hardis",
3458
- "hardis:refresh:work",
3459
- "refresh:hardis:work",
3460
- "refresh:work:hardis"
3461
- ]
3462
- },
3463
- "hardis:work:resetselection": {
3464
- "aliases": [],
3465
- "args": {},
3466
- "description": "Resets the selection that we want to add in the merge request\n\nCalls a soft git reset behind the hood \n",
3467
- "examples": [
3468
- "$ sf hardis:work:resetsave"
3469
- ],
3470
- "flags": {
3471
- "json": {
3472
- "description": "Format output as json.",
3473
- "helpGroup": "GLOBAL",
3474
- "name": "json",
3402
+ "quiet": {
3403
+ "description": "quiet",
3404
+ "name": "quiet",
3475
3405
  "allowNo": false,
3476
3406
  "type": "boolean"
3477
3407
  },
3478
- "flags-dir": {
3479
- "helpGroup": "GLOBAL",
3480
- "name": "flags-dir",
3481
- "summary": "Import flag values from a directory.",
3482
- "hasDynamicHelp": false,
3483
- "multiple": false,
3484
- "type": "option"
3485
- },
3486
3408
  "debug": {
3487
- "char": "d",
3488
- "description": "Activate debug mode (more logs)",
3409
+ "description": "debug",
3489
3410
  "name": "debug",
3490
3411
  "allowNo": false,
3491
3412
  "type": "boolean"
3492
3413
  },
3493
3414
  "websocket": {
3494
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3415
+ "description": "websocket",
3495
3416
  "name": "websocket",
3496
3417
  "hasDynamicHelp": false,
3497
3418
  "multiple": false,
3498
3419
  "type": "option"
3499
3420
  },
3500
- "skipauth": {
3501
- "description": "Skip authentication check when a default username is required",
3502
- "name": "skipauth",
3503
- "allowNo": false,
3504
- "type": "boolean"
3505
- },
3506
3421
  "target-org": {
3507
3422
  "aliases": [
3508
3423
  "targetusername",
@@ -3521,40 +3436,36 @@
3521
3436
  },
3522
3437
  "hasDynamicHelp": true,
3523
3438
  "hiddenAliases": [],
3524
- "id": "hardis:work:resetselection",
3439
+ "id": "hardis:source:push",
3525
3440
  "pluginAlias": "sfdx-hardis",
3526
3441
  "pluginName": "sfdx-hardis",
3527
3442
  "pluginType": "core",
3528
3443
  "strict": true,
3529
3444
  "enableJsonFlag": true,
3530
- "title": "Select again",
3531
3445
  "requiresProject": true,
3532
3446
  "isESM": true,
3533
3447
  "relativePath": [
3534
3448
  "lib",
3535
3449
  "commands",
3536
3450
  "hardis",
3537
- "work",
3538
- "resetselection.js"
3451
+ "source",
3452
+ "push.js"
3539
3453
  ],
3540
3454
  "aliasPermutations": [],
3541
3455
  "permutations": [
3542
- "hardis:work:resetselection",
3543
- "work:hardis:resetselection",
3544
- "work:resetselection:hardis",
3545
- "hardis:resetselection:work",
3546
- "resetselection:hardis:work",
3547
- "resetselection:work:hardis"
3456
+ "hardis:source:push",
3457
+ "source:hardis:push",
3458
+ "source:push:hardis",
3459
+ "hardis:push:source",
3460
+ "push:hardis:source",
3461
+ "push:source:hardis"
3548
3462
  ]
3549
3463
  },
3550
- "hardis:work:save": {
3464
+ "hardis:source:retrieve": {
3551
3465
  "aliases": [],
3552
3466
  "args": {},
3553
- "description": "When a work task is completed, guide user to create a merge request\n\nAdvanced instructions in [Publish a task](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-publish-task/)\n\n- Generate package-xml diff using sfdx-git-delta\n- Automatically update `manifest/package.xml` and `manifest/destructiveChanges.xml` according to the committed updates\n- Automatically Clean XML files using `.sfdx-hardis.yml` properties\n - `autocleantypes`: List of auto-performed sources cleanings, available on command [hardis:project:clean:references](https://sfdx-hardis.cloudity.com/hardis/project/clean/references/)\n - `autoRemoveUserPermissions`: List of userPermission to automatically remove from profile metadatas\n\nExample:\n\n```yaml\nautoCleanTypes:\n - checkPermissions\n - destructivechanges\n - datadotcom\n - minimizeProfiles\n - listViewsMine\nautoRemoveUserPermissions:\n - EnableCommunityAppLauncher\n - FieldServiceAccess\n - OmnichannelInventorySync\n - SendExternalEmailAvailable\n - UseOmnichannelInventoryAPIs\n - ViewDataLeakageEvents\n - ViewMLModels\n - ViewPlatformEvents\n - WorkCalibrationUser\n```\n\n- Push commit to server\n ",
3554
- "examples": [
3555
- "$ sf hardis:work:task:save",
3556
- "$ sf hardis:work:task:save --nopull --nogit --noclean"
3557
- ],
3467
+ "description": "sfdx-hardis wrapper for sfdx force:source:retrieve\n\n- If no retrieve constraint is sent, as assisted menu will request the list of metadatas to retrieve\n- If no org is selected , an assisted menu will request the user to choose one\n\n[See documentation of Salesforce command](https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_force_source.htm#cli_reference_force_source_retrieve)\n",
3468
+ "examples": [],
3558
3469
  "flags": {
3559
3470
  "json": {
3560
3471
  "description": "Format output as json.",
@@ -3571,49 +3482,98 @@
3571
3482
  "multiple": false,
3572
3483
  "type": "option"
3573
3484
  },
3574
- "nopull": {
3485
+ "apiversion": {
3486
+ "char": "a",
3487
+ "description": "Override the api version used for api requests made by this command",
3488
+ "name": "apiversion",
3489
+ "hasDynamicHelp": false,
3490
+ "multiple": false,
3491
+ "type": "option"
3492
+ },
3493
+ "sourcepath": {
3494
+ "char": "p",
3495
+ "description": "sourcePath",
3496
+ "exclusive": [
3497
+ "manifest",
3498
+ "metadata"
3499
+ ],
3500
+ "name": "sourcepath",
3501
+ "hasDynamicHelp": false,
3502
+ "multiple": true,
3503
+ "type": "option"
3504
+ },
3505
+ "wait": {
3506
+ "char": "w",
3507
+ "description": "wait",
3508
+ "name": "wait",
3509
+ "hasDynamicHelp": false,
3510
+ "multiple": false,
3511
+ "type": "option"
3512
+ },
3513
+ "manifest": {
3514
+ "char": "x",
3515
+ "description": "manifest",
3516
+ "exclusive": [
3517
+ "metadata",
3518
+ "sourcepath"
3519
+ ],
3520
+ "name": "manifest",
3521
+ "hasDynamicHelp": false,
3522
+ "multiple": false,
3523
+ "type": "option"
3524
+ },
3525
+ "metadata": {
3526
+ "char": "m",
3527
+ "description": "metadata",
3528
+ "exclusive": [
3529
+ "manifest",
3530
+ "sourcepath"
3531
+ ],
3532
+ "name": "metadata",
3533
+ "hasDynamicHelp": false,
3534
+ "multiple": true,
3535
+ "type": "option"
3536
+ },
3537
+ "packagenames": {
3575
3538
  "char": "n",
3576
- "description": "No scratch pull before save",
3577
- "name": "nopull",
3578
- "allowNo": false,
3579
- "type": "boolean"
3539
+ "description": "packagenames",
3540
+ "name": "packagenames",
3541
+ "hasDynamicHelp": false,
3542
+ "multiple": true,
3543
+ "type": "option"
3580
3544
  },
3581
- "nogit": {
3582
- "char": "g",
3583
- "description": "No automated git operations",
3584
- "name": "nogit",
3545
+ "tracksource": {
3546
+ "char": "t",
3547
+ "description": "tracksource",
3548
+ "name": "tracksource",
3585
3549
  "allowNo": false,
3586
3550
  "type": "boolean"
3587
3551
  },
3588
- "noclean": {
3589
- "char": "c",
3590
- "description": "No cleaning of local sources",
3591
- "name": "noclean",
3552
+ "forceoverwrite": {
3553
+ "char": "f",
3554
+ "dependsOn": [
3555
+ "tracksource"
3556
+ ],
3557
+ "description": "forceoverwrite",
3558
+ "name": "forceoverwrite",
3592
3559
  "allowNo": false,
3593
3560
  "type": "boolean"
3594
3561
  },
3595
- "auto": {
3596
- "description": "No user prompts (when called from CI for example)",
3597
- "name": "auto",
3562
+ "verbose": {
3563
+ "description": "verbose",
3564
+ "name": "verbose",
3598
3565
  "allowNo": false,
3599
3566
  "type": "boolean"
3600
3567
  },
3601
- "targetbranch": {
3602
- "description": "Name of the Merge Request target branch. Will be guessed or prompted if not provided.",
3603
- "name": "targetbranch",
3604
- "hasDynamicHelp": false,
3605
- "multiple": false,
3606
- "type": "option"
3607
- },
3608
3568
  "debug": {
3609
3569
  "char": "d",
3610
- "description": "Activate debug mode (more logs)",
3570
+ "description": "debugMode",
3611
3571
  "name": "debug",
3612
3572
  "allowNo": false,
3613
3573
  "type": "boolean"
3614
3574
  },
3615
3575
  "websocket": {
3616
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3576
+ "description": "websocket",
3617
3577
  "name": "websocket",
3618
3578
  "hasDynamicHelp": false,
3619
3579
  "multiple": false,
@@ -3643,41 +3603,37 @@
3643
3603
  },
3644
3604
  "hasDynamicHelp": true,
3645
3605
  "hiddenAliases": [],
3646
- "id": "hardis:work:save",
3606
+ "id": "hardis:source:retrieve",
3647
3607
  "pluginAlias": "sfdx-hardis",
3648
3608
  "pluginName": "sfdx-hardis",
3649
3609
  "pluginType": "core",
3650
3610
  "strict": true,
3651
3611
  "enableJsonFlag": true,
3652
- "title": "Save work task",
3653
3612
  "requiresProject": true,
3654
- "requiresSfdxPlugins": [
3655
- "sfdx-git-delta"
3656
- ],
3657
3613
  "isESM": true,
3658
3614
  "relativePath": [
3659
3615
  "lib",
3660
3616
  "commands",
3661
3617
  "hardis",
3662
- "work",
3663
- "save.js"
3618
+ "source",
3619
+ "retrieve.js"
3664
3620
  ],
3665
3621
  "aliasPermutations": [],
3666
3622
  "permutations": [
3667
- "hardis:work:save",
3668
- "work:hardis:save",
3669
- "work:save:hardis",
3670
- "hardis:save:work",
3671
- "save:hardis:work",
3672
- "save:work:hardis"
3623
+ "hardis:source:retrieve",
3624
+ "source:hardis:retrieve",
3625
+ "source:retrieve:hardis",
3626
+ "hardis:retrieve:source",
3627
+ "retrieve:hardis:source",
3628
+ "retrieve:source:hardis"
3673
3629
  ]
3674
3630
  },
3675
- "hardis:work:ws": {
3631
+ "hardis:work:new": {
3676
3632
  "aliases": [],
3677
3633
  "args": {},
3678
- "description": "Technical calls to WebSocket functions",
3634
+ "description": "Assisted menu to start working on a Salesforce task.\n\nAdvanced instructions in [Create New Task documentation](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-create-new-task/)\n\nAt the end of the command, it will allow you to work on either a scratch org or a sandbox, depending on your choices.\n\nUnder the hood, it can:\n\n- Make **git pull** to be up to date with target branch\n- Create **new git branch** with formatted name (you can override the choices using .sfdx-hardis.yml property **branchPrefixChoices**)\n- Create and initialize a scratch org or a source-tracked sandbox (config can be defined using `config/.sfdx-hardis.yml`):\n- (and for scratch org only for now):\n - **Install packages**\n - Use property `installedPackages`\n - **Push sources**\n - **Assign permission sets**\n - Use property `initPermissionSets`\n - **Run apex initialization scripts**\n - Use property `scratchOrgInitApexScripts`\n - **Load data**\n - Use property `dataPackages`\n\n## Override .sfdx-hardis.yml config\n\n### availableTargetBranches\n\nBy default, there is only one target branch (value of property **developmentBranch**).\n\nYou can define multiple target branches (for the future Pull Request) by setting the property **availableTargetBranches** in your .sfdx-hardis.yml file.\n\nThe selected branch will checked out and be used as base to create the user new feature branch.\n\nExamples:\n\n```yaml\navailableTargetBranches:\n - integration\n - preprod\n```\n\n```yaml\navailableTargetBranches:\n - integration,Select this to work from the integration branch (project stream)\n - preprod,Select this to work from the preprod branch (run stream)\n```\n\n### availableProjects\n\nYou can add a first question \"What is the project your task is for\" if you define a property **availableProjects**\n\nThe select will be used as first part of the git branch name. (ex: france/features/dev/JIRA123-webservice-get-account)\n\nExamples:\n\n```yaml\navailableProjects:\n - build\n - run\n - some-big-project\n - france\n - uk\n```\n\n```yaml\navailableProjects:\n - build,Select this to work on the build project\n - run,Select this to work on the run project\n - some-big-project,Select this to work on the some big project\n - france,Select this to work on the France project\n - uk,Select this to work on the UK project\n```\n\n### newTaskNameRegex\n\nIf you want to force a specific format for the task name, you can define a property **newTaskNameRegex** in your .sfdx-hardis.yml file.\n\nPlease also define a property **newTaskNameRegexExample** to give an example to the user.\n\nExample:\n\n```yaml\nnewTaskNameRegex: '^[A-Z]+-[0-9]+ .*'\nnewTaskNameRegexExample: 'MYPROJECT-123 Update account status validation rule'\n```\n\n### sharedDevSandboxes\n\nIf contributors can share dev sandboxes, let's not ask them if they want to overwrite their colleagues' changes when creating a new task :)\n",
3679
3635
  "examples": [
3680
- "$ sf hardis:work:ws --event refreshStatus"
3636
+ "$ sf hardis:work:new"
3681
3637
  ],
3682
3638
  "flags": {
3683
3639
  "json": {
@@ -3695,14 +3651,6 @@
3695
3651
  "multiple": false,
3696
3652
  "type": "option"
3697
3653
  },
3698
- "event": {
3699
- "char": "e",
3700
- "description": "WebSocket event",
3701
- "name": "event",
3702
- "hasDynamicHelp": false,
3703
- "multiple": false,
3704
- "type": "option"
3705
- },
3706
3654
  "debug": {
3707
3655
  "char": "d",
3708
3656
  "description": "Activate debug mode (more logs)",
@@ -3722,42 +3670,70 @@
3722
3670
  "name": "skipauth",
3723
3671
  "allowNo": false,
3724
3672
  "type": "boolean"
3673
+ },
3674
+ "target-dev-hub": {
3675
+ "aliases": [
3676
+ "targetdevhubusername"
3677
+ ],
3678
+ "char": "v",
3679
+ "deprecateAliases": true,
3680
+ "name": "target-dev-hub",
3681
+ "noCacheDefault": true,
3682
+ "required": false,
3683
+ "summary": "Username or alias of the Dev Hub org.",
3684
+ "hasDynamicHelp": true,
3685
+ "multiple": false,
3686
+ "type": "option"
3687
+ },
3688
+ "target-org": {
3689
+ "aliases": [
3690
+ "targetusername",
3691
+ "u"
3692
+ ],
3693
+ "char": "o",
3694
+ "deprecateAliases": true,
3695
+ "name": "target-org",
3696
+ "noCacheDefault": true,
3697
+ "summary": "Username or alias of the target org.",
3698
+ "hasDynamicHelp": true,
3699
+ "multiple": false,
3700
+ "type": "option"
3725
3701
  }
3726
3702
  },
3727
- "hasDynamicHelp": false,
3703
+ "hasDynamicHelp": true,
3728
3704
  "hiddenAliases": [],
3729
- "id": "hardis:work:ws",
3705
+ "id": "hardis:work:new",
3730
3706
  "pluginAlias": "sfdx-hardis",
3731
3707
  "pluginName": "sfdx-hardis",
3732
3708
  "pluginType": "core",
3733
3709
  "strict": true,
3734
3710
  "enableJsonFlag": true,
3735
- "title": "WebSocket operations",
3736
- "requiresProject": false,
3711
+ "title": "New work task",
3712
+ "requiresProject": true,
3737
3713
  "isESM": true,
3738
3714
  "relativePath": [
3739
3715
  "lib",
3740
3716
  "commands",
3741
3717
  "hardis",
3742
3718
  "work",
3743
- "ws.js"
3719
+ "new.js"
3744
3720
  ],
3745
3721
  "aliasPermutations": [],
3746
3722
  "permutations": [
3747
- "hardis:work:ws",
3748
- "work:hardis:ws",
3749
- "work:ws:hardis",
3750
- "hardis:ws:work",
3751
- "ws:hardis:work",
3752
- "ws:work:hardis"
3723
+ "hardis:work:new",
3724
+ "work:hardis:new",
3725
+ "work:new:hardis",
3726
+ "hardis:new:work",
3727
+ "new:hardis:work",
3728
+ "new:work:hardis"
3753
3729
  ]
3754
3730
  },
3755
- "hardis:scratch:create": {
3731
+ "hardis:work:refresh": {
3756
3732
  "aliases": [],
3757
3733
  "args": {},
3758
- "description": "Create and initialize a scratch org or a source-tracked sandbox (config can be defined using `config/.sfdx-hardis.yml`):\n\n- **Install packages**\n - Use property `installedPackages`\n- **Push sources**\n- **Assign permission sets**\n - Use property `initPermissionSets`\n- **Run apex initialization scripts**\n - Use property `scratchOrgInitApexScripts`\n- **Load data**\n - Use property `dataPackages`\n ",
3734
+ "description": "Make my local branch and my scratch org up to date with the most recent sources",
3759
3735
  "examples": [
3760
- "$ sf hardis:scratch:create"
3736
+ "$ sf hardis:work:refresh"
3761
3737
  ],
3762
3738
  "flags": {
3763
3739
  "json": {
@@ -3775,16 +3751,10 @@
3775
3751
  "multiple": false,
3776
3752
  "type": "option"
3777
3753
  },
3778
- "forcenew": {
3754
+ "nopull": {
3779
3755
  "char": "n",
3780
- "description": "If an existing scratch org exists, do not reuse it but create a new one",
3781
- "name": "forcenew",
3782
- "allowNo": false,
3783
- "type": "boolean"
3784
- },
3785
- "pool": {
3786
- "description": "Creates the scratch org for a scratch org pool",
3787
- "name": "pool",
3756
+ "description": "No scratch pull before save (careful if you use that!)",
3757
+ "name": "nopull",
3788
3758
  "allowNo": false,
3789
3759
  "type": "boolean"
3790
3760
  },
@@ -3808,16 +3778,17 @@
3808
3778
  "allowNo": false,
3809
3779
  "type": "boolean"
3810
3780
  },
3811
- "target-dev-hub": {
3781
+ "target-org": {
3812
3782
  "aliases": [
3813
- "targetdevhubusername"
3783
+ "targetusername",
3784
+ "u"
3814
3785
  ],
3815
- "char": "v",
3786
+ "char": "o",
3816
3787
  "deprecateAliases": true,
3817
- "name": "target-dev-hub",
3788
+ "name": "target-org",
3818
3789
  "noCacheDefault": true,
3819
3790
  "required": true,
3820
- "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
3791
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3821
3792
  "hasDynamicHelp": true,
3822
3793
  "multiple": false,
3823
3794
  "type": "option"
@@ -3825,42 +3796,38 @@
3825
3796
  },
3826
3797
  "hasDynamicHelp": true,
3827
3798
  "hiddenAliases": [],
3828
- "id": "hardis:scratch:create",
3799
+ "id": "hardis:work:refresh",
3829
3800
  "pluginAlias": "sfdx-hardis",
3830
3801
  "pluginName": "sfdx-hardis",
3831
3802
  "pluginType": "core",
3832
3803
  "strict": true,
3833
3804
  "enableJsonFlag": true,
3834
- "title": "Create and initialize scratch org",
3805
+ "title": "Refresh work task",
3835
3806
  "requiresProject": true,
3836
- "requiresSfdxPlugins": [
3837
- "sfdmu",
3838
- "texei-sfdx-plugin"
3839
- ],
3840
3807
  "isESM": true,
3841
3808
  "relativePath": [
3842
3809
  "lib",
3843
3810
  "commands",
3844
3811
  "hardis",
3845
- "scratch",
3846
- "create.js"
3812
+ "work",
3813
+ "refresh.js"
3847
3814
  ],
3848
3815
  "aliasPermutations": [],
3849
3816
  "permutations": [
3850
- "hardis:scratch:create",
3851
- "scratch:hardis:create",
3852
- "scratch:create:hardis",
3853
- "hardis:create:scratch",
3854
- "create:hardis:scratch",
3855
- "create:scratch:hardis"
3817
+ "hardis:work:refresh",
3818
+ "work:hardis:refresh",
3819
+ "work:refresh:hardis",
3820
+ "hardis:refresh:work",
3821
+ "refresh:hardis:work",
3822
+ "refresh:work:hardis"
3856
3823
  ]
3857
3824
  },
3858
- "hardis:scratch:delete": {
3825
+ "hardis:work:resetselection": {
3859
3826
  "aliases": [],
3860
3827
  "args": {},
3861
- "description": "Assisted menu to delete scratch orgs associated to a DevHub",
3828
+ "description": "Resets the selection that we want to add in the merge request\n\nCalls a soft git reset behind the hood \n",
3862
3829
  "examples": [
3863
- "$ sf hardis:scratch:delete"
3830
+ "$ sf hardis:work:resetsave"
3864
3831
  ],
3865
3832
  "flags": {
3866
3833
  "json": {
@@ -3898,16 +3865,17 @@
3898
3865
  "allowNo": false,
3899
3866
  "type": "boolean"
3900
3867
  },
3901
- "target-dev-hub": {
3868
+ "target-org": {
3902
3869
  "aliases": [
3903
- "targetdevhubusername"
3870
+ "targetusername",
3871
+ "u"
3904
3872
  ],
3905
- "char": "v",
3873
+ "char": "o",
3906
3874
  "deprecateAliases": true,
3907
- "name": "target-dev-hub",
3875
+ "name": "target-org",
3908
3876
  "noCacheDefault": true,
3909
3877
  "required": true,
3910
- "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
3878
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3911
3879
  "hasDynamicHelp": true,
3912
3880
  "multiple": false,
3913
3881
  "type": "option"
@@ -3915,37 +3883,39 @@
3915
3883
  },
3916
3884
  "hasDynamicHelp": true,
3917
3885
  "hiddenAliases": [],
3918
- "id": "hardis:scratch:delete",
3886
+ "id": "hardis:work:resetselection",
3919
3887
  "pluginAlias": "sfdx-hardis",
3920
3888
  "pluginName": "sfdx-hardis",
3921
3889
  "pluginType": "core",
3922
3890
  "strict": true,
3923
3891
  "enableJsonFlag": true,
3924
- "title": "Delete scratch orgs(s)",
3892
+ "title": "Select again",
3893
+ "requiresProject": true,
3925
3894
  "isESM": true,
3926
3895
  "relativePath": [
3927
3896
  "lib",
3928
3897
  "commands",
3929
3898
  "hardis",
3930
- "scratch",
3931
- "delete.js"
3899
+ "work",
3900
+ "resetselection.js"
3932
3901
  ],
3933
3902
  "aliasPermutations": [],
3934
3903
  "permutations": [
3935
- "hardis:scratch:delete",
3936
- "scratch:hardis:delete",
3937
- "scratch:delete:hardis",
3938
- "hardis:delete:scratch",
3939
- "delete:hardis:scratch",
3940
- "delete:scratch:hardis"
3904
+ "hardis:work:resetselection",
3905
+ "work:hardis:resetselection",
3906
+ "work:resetselection:hardis",
3907
+ "hardis:resetselection:work",
3908
+ "resetselection:hardis:work",
3909
+ "resetselection:work:hardis"
3941
3910
  ]
3942
3911
  },
3943
- "hardis:scratch:pull": {
3912
+ "hardis:work:save": {
3944
3913
  "aliases": [],
3945
3914
  "args": {},
3946
- "description": "This commands pulls the updates you performed in your scratch or sandbox org, into your local files\n\nThen, you probably want to stage and commit the files containing the updates you want to keep, as explained in this video.\n\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/Ik6whtflmfY\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>\n\n- Calls `sf project retrieve start` under the hood\n- If there are errors, proposes to automatically add erroneous item in `.forceignore`, then pull again\n- If you don't see your updated items in the results, you can manually retrieve [using SF Extension **Org Browser** or **Salesforce CLI**](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-publish-task/#retrieve-metadatas)\n- If you want to always retrieve sources like CustomApplication that are not always detected as updates by project:retrieve:start , you can define property **autoRetrieveWhenPull** in .sfdx-hardis.yml\n\nExample:\n```yaml\nautoRetrieveWhenPull:\n - CustomApplication:MyCustomApplication\n - CustomApplication:MyOtherCustomApplication\n - CustomApplication:MyThirdCustomApp\n```\n",
3915
+ "description": "When a work task is completed, guide user to create a merge request\n\nAdvanced instructions in [Publish a task](https://sfdx-hardis.cloudity.com/salesforce-ci-cd-publish-task/)\n\n- Generate package-xml diff using sfdx-git-delta\n- Automatically update `manifest/package.xml` and `manifest/destructiveChanges.xml` according to the committed updates\n- Automatically Clean XML files using `.sfdx-hardis.yml` properties\n - `autocleantypes`: List of auto-performed sources cleanings, available on command [hardis:project:clean:references](https://sfdx-hardis.cloudity.com/hardis/project/clean/references/)\n - `autoRemoveUserPermissions`: List of userPermission to automatically remove from profile metadatas\n\nExample:\n\n```yaml\nautoCleanTypes:\n - checkPermissions\n - destructivechanges\n - datadotcom\n - minimizeProfiles\n - listViewsMine\nautoRemoveUserPermissions:\n - EnableCommunityAppLauncher\n - FieldServiceAccess\n - OmnichannelInventorySync\n - SendExternalEmailAvailable\n - UseOmnichannelInventoryAPIs\n - ViewDataLeakageEvents\n - ViewMLModels\n - ViewPlatformEvents\n - WorkCalibrationUser\n```\n\n- Push commit to server\n ",
3947
3916
  "examples": [
3948
- "$ sf hardis:scratch:pull"
3917
+ "$ sf hardis:work:task:save",
3918
+ "$ sf hardis:work:task:save --nopull --nogit --noclean"
3949
3919
  ],
3950
3920
  "flags": {
3951
3921
  "json": {
@@ -3963,6 +3933,40 @@
3963
3933
  "multiple": false,
3964
3934
  "type": "option"
3965
3935
  },
3936
+ "nopull": {
3937
+ "char": "n",
3938
+ "description": "No scratch pull before save",
3939
+ "name": "nopull",
3940
+ "allowNo": false,
3941
+ "type": "boolean"
3942
+ },
3943
+ "nogit": {
3944
+ "char": "g",
3945
+ "description": "No automated git operations",
3946
+ "name": "nogit",
3947
+ "allowNo": false,
3948
+ "type": "boolean"
3949
+ },
3950
+ "noclean": {
3951
+ "char": "c",
3952
+ "description": "No cleaning of local sources",
3953
+ "name": "noclean",
3954
+ "allowNo": false,
3955
+ "type": "boolean"
3956
+ },
3957
+ "auto": {
3958
+ "description": "No user prompts (when called from CI for example)",
3959
+ "name": "auto",
3960
+ "allowNo": false,
3961
+ "type": "boolean"
3962
+ },
3963
+ "targetbranch": {
3964
+ "description": "Name of the Merge Request target branch. Will be guessed or prompted if not provided.",
3965
+ "name": "targetbranch",
3966
+ "hasDynamicHelp": false,
3967
+ "multiple": false,
3968
+ "type": "option"
3969
+ },
3966
3970
  "debug": {
3967
3971
  "char": "d",
3968
3972
  "description": "Activate debug mode (more logs)",
@@ -4001,38 +4005,41 @@
4001
4005
  },
4002
4006
  "hasDynamicHelp": true,
4003
4007
  "hiddenAliases": [],
4004
- "id": "hardis:scratch:pull",
4008
+ "id": "hardis:work:save",
4005
4009
  "pluginAlias": "sfdx-hardis",
4006
4010
  "pluginName": "sfdx-hardis",
4007
4011
  "pluginType": "core",
4008
4012
  "strict": true,
4009
4013
  "enableJsonFlag": true,
4010
- "title": "Scratch PULL",
4014
+ "title": "Save work task",
4011
4015
  "requiresProject": true,
4016
+ "requiresSfdxPlugins": [
4017
+ "sfdx-git-delta"
4018
+ ],
4012
4019
  "isESM": true,
4013
4020
  "relativePath": [
4014
4021
  "lib",
4015
4022
  "commands",
4016
4023
  "hardis",
4017
- "scratch",
4018
- "pull.js"
4024
+ "work",
4025
+ "save.js"
4019
4026
  ],
4020
4027
  "aliasPermutations": [],
4021
4028
  "permutations": [
4022
- "hardis:scratch:pull",
4023
- "scratch:hardis:pull",
4024
- "scratch:pull:hardis",
4025
- "hardis:pull:scratch",
4026
- "pull:hardis:scratch",
4027
- "pull:scratch:hardis"
4029
+ "hardis:work:save",
4030
+ "work:hardis:save",
4031
+ "work:save:hardis",
4032
+ "hardis:save:work",
4033
+ "save:hardis:work",
4034
+ "save:work:hardis"
4028
4035
  ]
4029
4036
  },
4030
- "hardis:scratch:push": {
4037
+ "hardis:work:ws": {
4031
4038
  "aliases": [],
4032
4039
  "args": {},
4033
- "description": "Push local files to scratch org\n\nCalls `sf project deploy start` under the hood\n",
4040
+ "description": "Technical calls to WebSocket functions",
4034
4041
  "examples": [
4035
- "$ sf hardis:scratch:push"
4042
+ "$ sf hardis:work:ws --event refreshStatus"
4036
4043
  ],
4037
4044
  "flags": {
4038
4045
  "json": {
@@ -4050,6 +4057,14 @@
4050
4057
  "multiple": false,
4051
4058
  "type": "option"
4052
4059
  },
4060
+ "event": {
4061
+ "char": "e",
4062
+ "description": "WebSocket event",
4063
+ "name": "event",
4064
+ "hasDynamicHelp": false,
4065
+ "multiple": false,
4066
+ "type": "option"
4067
+ },
4053
4068
  "debug": {
4054
4069
  "char": "d",
4055
4070
  "description": "Activate debug mode (more logs)",
@@ -4069,49 +4084,34 @@
4069
4084
  "name": "skipauth",
4070
4085
  "allowNo": false,
4071
4086
  "type": "boolean"
4072
- },
4073
- "target-org": {
4074
- "aliases": [
4075
- "targetusername",
4076
- "u"
4077
- ],
4078
- "char": "o",
4079
- "deprecateAliases": true,
4080
- "name": "target-org",
4081
- "noCacheDefault": true,
4082
- "required": true,
4083
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
4084
- "hasDynamicHelp": true,
4085
- "multiple": false,
4086
- "type": "option"
4087
4087
  }
4088
4088
  },
4089
- "hasDynamicHelp": true,
4089
+ "hasDynamicHelp": false,
4090
4090
  "hiddenAliases": [],
4091
- "id": "hardis:scratch:push",
4091
+ "id": "hardis:work:ws",
4092
4092
  "pluginAlias": "sfdx-hardis",
4093
4093
  "pluginName": "sfdx-hardis",
4094
4094
  "pluginType": "core",
4095
4095
  "strict": true,
4096
4096
  "enableJsonFlag": true,
4097
- "title": "Scratch PUSH",
4098
- "requiresProject": true,
4097
+ "title": "WebSocket operations",
4098
+ "requiresProject": false,
4099
4099
  "isESM": true,
4100
4100
  "relativePath": [
4101
4101
  "lib",
4102
4102
  "commands",
4103
4103
  "hardis",
4104
- "scratch",
4105
- "push.js"
4104
+ "work",
4105
+ "ws.js"
4106
4106
  ],
4107
4107
  "aliasPermutations": [],
4108
4108
  "permutations": [
4109
- "hardis:scratch:push",
4110
- "scratch:hardis:push",
4111
- "scratch:push:hardis",
4112
- "hardis:push:scratch",
4113
- "push:hardis:scratch",
4114
- "push:scratch:hardis"
4109
+ "hardis:work:ws",
4110
+ "work:hardis:ws",
4111
+ "work:ws:hardis",
4112
+ "hardis:ws:work",
4113
+ "ws:hardis:work",
4114
+ "ws:work:hardis"
4115
4115
  ]
4116
4116
  },
4117
4117
  "hardis:doc:extract:permsetgroups": {
@@ -4213,12 +4213,104 @@
4213
4213
  "permsetgroups:extract:doc:hardis"
4214
4214
  ]
4215
4215
  },
4216
- "hardis:doc:plugin:generate": {
4216
+ "hardis:doc:plugin:generate": {
4217
+ "aliases": [],
4218
+ "args": {},
4219
+ "description": "Generate Markdown documentation ready for HTML conversion with mkdocs\n\nAfter the first run, you need to update manually:\n\n- mkdocs.yml\n- .github/workflows/build-deploy-docs.yml\n- docs/javascripts/gtag.js , if you want Google Analytics tracking\n\nThen, activate Github pages, with \"gh_pages\" as target branch\n\nAt each merge into master/main branch, the GitHub Action build-deploy-docs will rebuild documentation and publish it in GitHub pages\n",
4220
+ "examples": [
4221
+ "$ sf hardis:doc:plugin:generate"
4222
+ ],
4223
+ "flags": {
4224
+ "json": {
4225
+ "description": "Format output as json.",
4226
+ "helpGroup": "GLOBAL",
4227
+ "name": "json",
4228
+ "allowNo": false,
4229
+ "type": "boolean"
4230
+ },
4231
+ "flags-dir": {
4232
+ "helpGroup": "GLOBAL",
4233
+ "name": "flags-dir",
4234
+ "summary": "Import flag values from a directory.",
4235
+ "hasDynamicHelp": false,
4236
+ "multiple": false,
4237
+ "type": "option"
4238
+ },
4239
+ "debug": {
4240
+ "char": "d",
4241
+ "description": "Activate debug mode (more logs)",
4242
+ "name": "debug",
4243
+ "allowNo": false,
4244
+ "type": "boolean"
4245
+ },
4246
+ "websocket": {
4247
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
4248
+ "name": "websocket",
4249
+ "hasDynamicHelp": false,
4250
+ "multiple": false,
4251
+ "type": "option"
4252
+ },
4253
+ "skipauth": {
4254
+ "description": "Skip authentication check when a default username is required",
4255
+ "name": "skipauth",
4256
+ "allowNo": false,
4257
+ "type": "boolean"
4258
+ }
4259
+ },
4260
+ "hasDynamicHelp": false,
4261
+ "hiddenAliases": [],
4262
+ "id": "hardis:doc:plugin:generate",
4263
+ "pluginAlias": "sfdx-hardis",
4264
+ "pluginName": "sfdx-hardis",
4265
+ "pluginType": "core",
4266
+ "strict": true,
4267
+ "enableJsonFlag": true,
4268
+ "title": "Generate SF Cli Plugin Documentation",
4269
+ "requiresProject": false,
4270
+ "isESM": true,
4271
+ "relativePath": [
4272
+ "lib",
4273
+ "commands",
4274
+ "hardis",
4275
+ "doc",
4276
+ "plugin",
4277
+ "generate.js"
4278
+ ],
4279
+ "aliasPermutations": [],
4280
+ "permutations": [
4281
+ "hardis:doc:plugin:generate",
4282
+ "doc:hardis:plugin:generate",
4283
+ "doc:plugin:hardis:generate",
4284
+ "doc:plugin:generate:hardis",
4285
+ "hardis:plugin:doc:generate",
4286
+ "plugin:hardis:doc:generate",
4287
+ "plugin:doc:hardis:generate",
4288
+ "plugin:doc:generate:hardis",
4289
+ "hardis:plugin:generate:doc",
4290
+ "plugin:hardis:generate:doc",
4291
+ "plugin:generate:hardis:doc",
4292
+ "plugin:generate:doc:hardis",
4293
+ "hardis:doc:generate:plugin",
4294
+ "doc:hardis:generate:plugin",
4295
+ "doc:generate:hardis:plugin",
4296
+ "doc:generate:plugin:hardis",
4297
+ "hardis:generate:doc:plugin",
4298
+ "generate:hardis:doc:plugin",
4299
+ "generate:doc:hardis:plugin",
4300
+ "generate:doc:plugin:hardis",
4301
+ "hardis:generate:plugin:doc",
4302
+ "generate:hardis:plugin:doc",
4303
+ "generate:plugin:hardis:doc",
4304
+ "generate:plugin:doc:hardis"
4305
+ ]
4306
+ },
4307
+ "hardis:git:pull-requests:extract": {
4217
4308
  "aliases": [],
4218
4309
  "args": {},
4219
- "description": "Generate Markdown documentation ready for HTML conversion with mkdocs\n\nAfter the first run, you need to update manually:\n\n- mkdocs.yml\n- .github/workflows/build-deploy-docs.yml\n- docs/javascripts/gtag.js , if you want Google Analytics tracking\n\nThen, activate Github pages, with \"gh_pages\" as target branch\n\nAt each merge into master/main branch, the GitHub Action build-deploy-docs will rebuild documentation and publish it in GitHub pages\n",
4310
+ "description": "Extract pull requests with filtering criteria",
4220
4311
  "examples": [
4221
- "$ sf hardis:doc:plugin:generate"
4312
+ "$ sf hardis:git:pull-requests:extract",
4313
+ "$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
4222
4314
  ],
4223
4315
  "flags": {
4224
4316
  "json": {
@@ -4236,6 +4328,43 @@
4236
4328
  "multiple": false,
4237
4329
  "type": "option"
4238
4330
  },
4331
+ "target-branch": {
4332
+ "char": "t",
4333
+ "description": "Target branch of PRs",
4334
+ "name": "target-branch",
4335
+ "hasDynamicHelp": false,
4336
+ "multiple": false,
4337
+ "type": "option"
4338
+ },
4339
+ "status": {
4340
+ "char": "x",
4341
+ "description": "Status of the PR",
4342
+ "name": "status",
4343
+ "hasDynamicHelp": false,
4344
+ "multiple": false,
4345
+ "options": [
4346
+ "open",
4347
+ "merged",
4348
+ "abandoned"
4349
+ ],
4350
+ "type": "option"
4351
+ },
4352
+ "min-date": {
4353
+ "char": "m",
4354
+ "description": "Minimum date for PR",
4355
+ "name": "min-date",
4356
+ "hasDynamicHelp": false,
4357
+ "multiple": false,
4358
+ "type": "option"
4359
+ },
4360
+ "outputfile": {
4361
+ "char": "f",
4362
+ "description": "Force the path and name of output report file. Must end with .csv",
4363
+ "name": "outputfile",
4364
+ "hasDynamicHelp": false,
4365
+ "multiple": false,
4366
+ "type": "option"
4367
+ },
4239
4368
  "debug": {
4240
4369
  "char": "d",
4241
4370
  "description": "Activate debug mode (more logs)",
@@ -4259,49 +4388,49 @@
4259
4388
  },
4260
4389
  "hasDynamicHelp": false,
4261
4390
  "hiddenAliases": [],
4262
- "id": "hardis:doc:plugin:generate",
4391
+ "id": "hardis:git:pull-requests:extract",
4263
4392
  "pluginAlias": "sfdx-hardis",
4264
4393
  "pluginName": "sfdx-hardis",
4265
4394
  "pluginType": "core",
4266
4395
  "strict": true,
4267
4396
  "enableJsonFlag": true,
4268
- "title": "Generate SF Cli Plugin Documentation",
4269
- "requiresProject": false,
4397
+ "title": "Extract pull requests",
4398
+ "requiresProject": true,
4270
4399
  "isESM": true,
4271
4400
  "relativePath": [
4272
4401
  "lib",
4273
4402
  "commands",
4274
4403
  "hardis",
4275
- "doc",
4276
- "plugin",
4277
- "generate.js"
4404
+ "git",
4405
+ "pull-requests",
4406
+ "extract.js"
4278
4407
  ],
4279
4408
  "aliasPermutations": [],
4280
4409
  "permutations": [
4281
- "hardis:doc:plugin:generate",
4282
- "doc:hardis:plugin:generate",
4283
- "doc:plugin:hardis:generate",
4284
- "doc:plugin:generate:hardis",
4285
- "hardis:plugin:doc:generate",
4286
- "plugin:hardis:doc:generate",
4287
- "plugin:doc:hardis:generate",
4288
- "plugin:doc:generate:hardis",
4289
- "hardis:plugin:generate:doc",
4290
- "plugin:hardis:generate:doc",
4291
- "plugin:generate:hardis:doc",
4292
- "plugin:generate:doc:hardis",
4293
- "hardis:doc:generate:plugin",
4294
- "doc:hardis:generate:plugin",
4295
- "doc:generate:hardis:plugin",
4296
- "doc:generate:plugin:hardis",
4297
- "hardis:generate:doc:plugin",
4298
- "generate:hardis:doc:plugin",
4299
- "generate:doc:hardis:plugin",
4300
- "generate:doc:plugin:hardis",
4301
- "hardis:generate:plugin:doc",
4302
- "generate:hardis:plugin:doc",
4303
- "generate:plugin:hardis:doc",
4304
- "generate:plugin:doc:hardis"
4410
+ "hardis:git:pull-requests:extract",
4411
+ "git:hardis:pull-requests:extract",
4412
+ "git:pull-requests:hardis:extract",
4413
+ "git:pull-requests:extract:hardis",
4414
+ "hardis:pull-requests:git:extract",
4415
+ "pull-requests:hardis:git:extract",
4416
+ "pull-requests:git:hardis:extract",
4417
+ "pull-requests:git:extract:hardis",
4418
+ "hardis:pull-requests:extract:git",
4419
+ "pull-requests:hardis:extract:git",
4420
+ "pull-requests:extract:hardis:git",
4421
+ "pull-requests:extract:git:hardis",
4422
+ "hardis:git:extract:pull-requests",
4423
+ "git:hardis:extract:pull-requests",
4424
+ "git:extract:hardis:pull-requests",
4425
+ "git:extract:pull-requests:hardis",
4426
+ "hardis:extract:git:pull-requests",
4427
+ "extract:hardis:git:pull-requests",
4428
+ "extract:git:hardis:pull-requests",
4429
+ "extract:git:pull-requests:hardis",
4430
+ "hardis:extract:pull-requests:git",
4431
+ "extract:hardis:pull-requests:git",
4432
+ "extract:pull-requests:hardis:git",
4433
+ "extract:pull-requests:git:hardis"
4305
4434
  ]
4306
4435
  },
4307
4436
  "hardis:org:community:update": {
@@ -4716,135 +4845,6 @@
4716
4845
  "monitoring:configure:org:hardis"
4717
4846
  ]
4718
4847
  },
4719
- "hardis:git:pull-requests:extract": {
4720
- "aliases": [],
4721
- "args": {},
4722
- "description": "Extract pull requests with filtering criteria",
4723
- "examples": [
4724
- "$ sf hardis:git:pull-requests:extract",
4725
- "$ sf hardis:git:pull-requests:extract --target-branch main --status merged"
4726
- ],
4727
- "flags": {
4728
- "json": {
4729
- "description": "Format output as json.",
4730
- "helpGroup": "GLOBAL",
4731
- "name": "json",
4732
- "allowNo": false,
4733
- "type": "boolean"
4734
- },
4735
- "flags-dir": {
4736
- "helpGroup": "GLOBAL",
4737
- "name": "flags-dir",
4738
- "summary": "Import flag values from a directory.",
4739
- "hasDynamicHelp": false,
4740
- "multiple": false,
4741
- "type": "option"
4742
- },
4743
- "target-branch": {
4744
- "char": "t",
4745
- "description": "Target branch of PRs",
4746
- "name": "target-branch",
4747
- "hasDynamicHelp": false,
4748
- "multiple": false,
4749
- "type": "option"
4750
- },
4751
- "status": {
4752
- "char": "x",
4753
- "description": "Status of the PR",
4754
- "name": "status",
4755
- "hasDynamicHelp": false,
4756
- "multiple": false,
4757
- "options": [
4758
- "open",
4759
- "merged",
4760
- "abandoned"
4761
- ],
4762
- "type": "option"
4763
- },
4764
- "min-date": {
4765
- "char": "m",
4766
- "description": "Minimum date for PR",
4767
- "name": "min-date",
4768
- "hasDynamicHelp": false,
4769
- "multiple": false,
4770
- "type": "option"
4771
- },
4772
- "outputfile": {
4773
- "char": "f",
4774
- "description": "Force the path and name of output report file. Must end with .csv",
4775
- "name": "outputfile",
4776
- "hasDynamicHelp": false,
4777
- "multiple": false,
4778
- "type": "option"
4779
- },
4780
- "debug": {
4781
- "char": "d",
4782
- "description": "Activate debug mode (more logs)",
4783
- "name": "debug",
4784
- "allowNo": false,
4785
- "type": "boolean"
4786
- },
4787
- "websocket": {
4788
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
4789
- "name": "websocket",
4790
- "hasDynamicHelp": false,
4791
- "multiple": false,
4792
- "type": "option"
4793
- },
4794
- "skipauth": {
4795
- "description": "Skip authentication check when a default username is required",
4796
- "name": "skipauth",
4797
- "allowNo": false,
4798
- "type": "boolean"
4799
- }
4800
- },
4801
- "hasDynamicHelp": false,
4802
- "hiddenAliases": [],
4803
- "id": "hardis:git:pull-requests:extract",
4804
- "pluginAlias": "sfdx-hardis",
4805
- "pluginName": "sfdx-hardis",
4806
- "pluginType": "core",
4807
- "strict": true,
4808
- "enableJsonFlag": true,
4809
- "title": "Extract pull requests",
4810
- "requiresProject": true,
4811
- "isESM": true,
4812
- "relativePath": [
4813
- "lib",
4814
- "commands",
4815
- "hardis",
4816
- "git",
4817
- "pull-requests",
4818
- "extract.js"
4819
- ],
4820
- "aliasPermutations": [],
4821
- "permutations": [
4822
- "hardis:git:pull-requests:extract",
4823
- "git:hardis:pull-requests:extract",
4824
- "git:pull-requests:hardis:extract",
4825
- "git:pull-requests:extract:hardis",
4826
- "hardis:pull-requests:git:extract",
4827
- "pull-requests:hardis:git:extract",
4828
- "pull-requests:git:hardis:extract",
4829
- "pull-requests:git:extract:hardis",
4830
- "hardis:pull-requests:extract:git",
4831
- "pull-requests:hardis:extract:git",
4832
- "pull-requests:extract:hardis:git",
4833
- "pull-requests:extract:git:hardis",
4834
- "hardis:git:extract:pull-requests",
4835
- "git:hardis:extract:pull-requests",
4836
- "git:extract:hardis:pull-requests",
4837
- "git:extract:pull-requests:hardis",
4838
- "hardis:extract:git:pull-requests",
4839
- "extract:hardis:git:pull-requests",
4840
- "extract:git:hardis:pull-requests",
4841
- "extract:git:pull-requests:hardis",
4842
- "hardis:extract:pull-requests:git",
4843
- "extract:hardis:pull-requests:git",
4844
- "extract:pull-requests:hardis:git",
4845
- "extract:pull-requests:git:hardis"
4846
- ]
4847
- },
4848
4848
  "hardis:org:data:delete": {
4849
4849
  "aliases": [],
4850
4850
  "args": {},
@@ -7039,7 +7039,7 @@
7039
7039
  "hardis:org:monitor:backup": {
7040
7040
  "aliases": [],
7041
7041
  "args": {},
7042
- "description": "Retrieve sfdx sources in the context of a monitoring backup\n\nThe command exists in 2 modes: filtered(default & recommended) and full.\n\n## Filtered mode (default, better performances)\n\nAutomatically skips metadatas from installed packages with namespace. \n\nYou can remove more metadata types from backup, especially in case you have too many metadatas and that provokes a crash, using:\n\n- Manual update of `manifest/package-skip-items.xml` config file (then commit & push in the same branch)\n\n - Works with full wildcard (`<members>*</members>`) , named metadata (`<members>Account.Name</members>`) or partial wildcards names (`<members>pi__*</members>` , `<members>*__dlm</members>` , or `<members>prefix*suffix</members>`)\n\n- Environment variable MONITORING_BACKUP_SKIP_METADATA_TYPES (example: `MONITORING_BACKUP_SKIP_METADATA_TYPES=CustomLabel,StaticResource,Translation`): that will be applied to all monitoring branches.\n\n## Full mode\n\nActivate it with **--full** parameter, or variable MONITORING_BACKUP_MODE_FULL=true\n\nIgnores filters (namespaces items & manifest/package-skip-items.xml) to retrieve ALL metadatas, including those you might not care about (reports, translations...)\n\nAs we can retrieve only 10000 files by call, the list of all metadatas will be chunked to make multiple calls (and take more time than filtered mode)\n\n- if you use `--full-apply-filters` , manifest/package-skip-items.xml and MONITORING_BACKUP_SKIP_METADATA_TYPES filters will be applied anyway\n- if you use `--exclude-namespaces` , namespaced items will be ignored\n\n_With those both options, it's like if you are not using --full, but with chunked metadata download_\n\n## In CI/CD\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-metadata-backup/) and can output Grafana, Slack and MsTeams Notifications.\n\n## Documentation\n\n[Doc generation (including visual flows)](https://sfdx-hardis.cloudity.com/hardis/doc/project2markdown/) is triggered at the end of the command.\n\nIf you want to also upload HTML Documentation on your Salesforce Org as static resource, use variable **SFDX_HARDIS_DOC_DEPLOY_TO_ORG=\"true\"**\n\nIf you want to also upload HTML Documentation on Cloudflare, use variable **SFDX_HARDIS_DOC_DEPLOY_TO_CLOUDFLARE=\"true\"**\n\nIf Flow history doc always display a single state, you probably need to update your workflow configuration:\n\n- on Gitlab: Env variable [`GIT_FETCH_EXTRA_FLAGS: --depth 10000`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.gitlab-ci.yml#L11)\n- on GitHub: [`fetch-depth: 0`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.github/workflows/org-monitoring.yml#L58)\n- on Azure: [`fetchDepth: \"0\"`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/azure-pipelines.yml#L39)\n- on Bitbucket: [`step: clone: depth: full`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/bitbucket-pipelines.yml#L18)\n",
7042
+ "description": "Retrieve sfdx sources in the context of a monitoring backup\n\nThe command exists in 2 modes: filtered(default & recommended) and full.\n\n## Filtered mode (default, better performances)\n\nAutomatically skips metadatas from installed packages with namespace. \n\nYou can remove more metadata types from backup, especially in case you have too many metadatas and that provokes a crash, using:\n\n- Manual update of `manifest/package-skip-items.xml` config file (then commit & push in the same branch)\n\n - Works with full wildcard (`<members>*</members>`) , named metadata (`<members>Account.Name</members>`) or partial wildcards names (`<members>pi__*</members>` , `<members>*__dlm</members>` , or `<members>prefix*suffix</members>`)\n\n- Environment variable MONITORING_BACKUP_SKIP_METADATA_TYPES (example: `MONITORING_BACKUP_SKIP_METADATA_TYPES=CustomLabel,StaticResource,Translation`): that will be applied to all monitoring branches.\n\n## Full mode\n\nActivate it with **--full** parameter, or variable MONITORING_BACKUP_MODE_FULL=true\n\nIgnores filters (namespaces items & manifest/package-skip-items.xml) to retrieve ALL metadatas, including those you might not care about (reports, translations...)\n\nAs we can retrieve only 10000 files by call, the list of all metadatas will be chunked to make multiple calls (and take more time than filtered mode)\n\n- if you use `--full-apply-filters` , manifest/package-skip-items.xml and MONITORING_BACKUP_SKIP_METADATA_TYPES filters will be applied anyway\n- if you use `--exclude-namespaces` , namespaced items will be ignored\n\n_With those both options, it's like if you are not using --full, but with chunked metadata download_\n\n## In CI/CD\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-metadata-backup/) and can output Grafana, Slack and MsTeams Notifications.\n\n## Troubleshooting\n\nIf you have unknown errors (it happens !), you can investigate using the full command with smaller chunks.\n\nExample: `sf hardis:org:monitor:backup --full --exclude-namespaces --full-apply-filters --max-by-chunk 500`\n\nIt will allow you the identify the responsible metadata and ignore it using package-skip-items.xml or MONITORING_BACKUP_SKIP_METADATA_TYPES env variable.\n\n## Documentation\n\n[Doc generation (including visual flows)](https://sfdx-hardis.cloudity.com/hardis/doc/project2markdown/) is triggered at the end of the command.\n\nIf you want to also upload HTML Documentation on your Salesforce Org as static resource, use variable **SFDX_HARDIS_DOC_DEPLOY_TO_ORG=\"true\"**\n\nIf you want to also upload HTML Documentation on Cloudflare, use variable **SFDX_HARDIS_DOC_DEPLOY_TO_CLOUDFLARE=\"true\"**\n\nIf Flow history doc always display a single state, you probably need to update your workflow configuration:\n\n- on Gitlab: Env variable [`GIT_FETCH_EXTRA_FLAGS: --depth 10000`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.gitlab-ci.yml#L11)\n- on GitHub: [`fetch-depth: 0`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/.github/workflows/org-monitoring.yml#L58)\n- on Azure: [`fetchDepth: \"0\"`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/azure-pipelines.yml#L39)\n- on Bitbucket: [`step: clone: depth: full`](https://github.com/hardisgroupcom/sfdx-hardis/blob/main/defaults/monitoring/bitbucket-pipelines.yml#L18)\n",
7043
7043
  "examples": [
7044
7044
  "$ sf hardis:org:monitor:backup",
7045
7045
  "$ sf hardis:org:monitor:backup --full",
@@ -7091,6 +7091,14 @@
7091
7091
  "allowNo": false,
7092
7092
  "type": "boolean"
7093
7093
  },
7094
+ "start-chunk": {
7095
+ "description": "Use this parameter to troubleshoot a specific chunk. It will be used as the first chunk to retrieve",
7096
+ "name": "start-chunk",
7097
+ "default": 1,
7098
+ "hasDynamicHelp": false,
7099
+ "multiple": false,
7100
+ "type": "option"
7101
+ },
7094
7102
  "skip-doc": {
7095
7103
  "description": "Skip the generation of project documentation at the end of the command",
7096
7104
  "name": "skip-doc",
@@ -14517,5 +14525,5 @@
14517
14525
  ]
14518
14526
  }
14519
14527
  },
14520
- "version": "5.26.0"
14528
+ "version": "5.26.1"
14521
14529
  }