sfdx-hardis 5.44.2-alpha202507221146.0 → 5.44.2-alpha202507221159.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/oclif.manifest.json +1082 -1082
  2. package/package.json +1 -1
@@ -129,12 +129,13 @@
129
129
  "clear:cache:hardis"
130
130
  ]
131
131
  },
132
- "hardis:config:get": {
132
+ "hardis:auth:login": {
133
133
  "aliases": [],
134
134
  "args": {},
135
- "description": "Returns sfdx-hardis project config for a given level",
135
+ "description": "\nLogins to a Salesforce org from CI/CD workflows.\n\nWill use the variables and files defined by configuration commands:\n\n- CI/CD repos: [Configure Org CI Authentication](https://sfdx-hardis.cloudity.com/hardis/project/configure/auth/)\n- Monitoring repos: [Configure Org Monitoring](https://sfdx-hardis.cloudity.com/hardis/org/configure/monitoring/)\n\nIf you have a technical org (for example to call Agentforce from another org, you can define variable SFDX_AUTH_URL_TECHNICAL_ORG and it will authenticate it with alias TECHNICAL_ORG)\n\nYou can get SFDX_AUTH_URL_TECHNICAL_ORG value by running the command: `sf org display --verbose --json` and copy the value of the field `sfdxAuthUrl` in the output.\n",
136
136
  "examples": [
137
- "$ sf hardis:project:deploy:sources:metadata"
137
+ "$ sf hardis:auth:login",
138
+ "CI=true sf hardis:auth:login"
138
139
  ],
139
140
  "flags": {
140
141
  "json": {
@@ -152,20 +153,28 @@
152
153
  "multiple": false,
153
154
  "type": "option"
154
155
  },
155
- "level": {
156
- "char": "l",
157
- "description": "project,branch or user",
158
- "name": "level",
159
- "default": "project",
156
+ "instanceurl": {
157
+ "char": "r",
158
+ "description": "URL of org instance",
159
+ "name": "instanceurl",
160
160
  "hasDynamicHelp": false,
161
161
  "multiple": false,
162
- "options": [
163
- "project",
164
- "branch",
165
- "user"
166
- ],
167
162
  "type": "option"
168
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
+ },
169
178
  "debug": {
170
179
  "char": "d",
171
180
  "description": "Activate debug mode (more logs)",
@@ -189,39 +198,38 @@
189
198
  },
190
199
  "hasDynamicHelp": false,
191
200
  "hiddenAliases": [],
192
- "id": "hardis:config:get",
201
+ "id": "hardis:auth:login",
193
202
  "pluginAlias": "sfdx-hardis",
194
203
  "pluginName": "sfdx-hardis",
195
204
  "pluginType": "core",
196
205
  "strict": true,
197
206
  "enableJsonFlag": true,
198
- "title": "Deploy metadata sources to org",
207
+ "title": "Login",
199
208
  "requiresProject": false,
200
209
  "isESM": true,
201
210
  "relativePath": [
202
211
  "lib",
203
212
  "commands",
204
213
  "hardis",
205
- "config",
206
- "get.js"
214
+ "auth",
215
+ "login.js"
207
216
  ],
208
217
  "aliasPermutations": [],
209
218
  "permutations": [
210
- "hardis:config:get",
211
- "config:hardis:get",
212
- "config:get:hardis",
213
- "hardis:get:config",
214
- "get:hardis:config",
215
- "get:config: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"
216
225
  ]
217
226
  },
218
- "hardis:auth:login": {
227
+ "hardis:config:get": {
219
228
  "aliases": [],
220
229
  "args": {},
221
- "description": "\nLogins to a Salesforce org from CI/CD workflows.\n\nWill use the variables and files defined by configuration commands:\n\n- CI/CD repos: [Configure Org CI Authentication](https://sfdx-hardis.cloudity.com/hardis/project/configure/auth/)\n- Monitoring repos: [Configure Org Monitoring](https://sfdx-hardis.cloudity.com/hardis/org/configure/monitoring/)\n\nIf you have a technical org (for example to call Agentforce from another org, you can define variable SFDX_AUTH_URL_TECHNICAL_ORG and it will authenticate it with alias TECHNICAL_ORG)\n\nYou can get SFDX_AUTH_URL_TECHNICAL_ORG value by running the command: `sf org display --verbose --json` and copy the value of the field `sfdxAuthUrl` in the output.\n",
230
+ "description": "Returns sfdx-hardis project config for a given level",
222
231
  "examples": [
223
- "$ sf hardis:auth:login",
224
- "CI=true sf hardis:auth:login"
232
+ "$ sf hardis:project:deploy:sources:metadata"
225
233
  ],
226
234
  "flags": {
227
235
  "json": {
@@ -239,28 +247,20 @@
239
247
  "multiple": false,
240
248
  "type": "option"
241
249
  },
242
- "instanceurl": {
243
- "char": "r",
244
- "description": "URL of org instance",
245
- "name": "instanceurl",
250
+ "level": {
251
+ "char": "l",
252
+ "description": "project,branch or user",
253
+ "name": "level",
254
+ "default": "project",
246
255
  "hasDynamicHelp": false,
247
256
  "multiple": false,
257
+ "options": [
258
+ "project",
259
+ "branch",
260
+ "user"
261
+ ],
248
262
  "type": "option"
249
263
  },
250
- "devhub": {
251
- "char": "h",
252
- "description": "Also connect associated DevHub",
253
- "name": "devhub",
254
- "allowNo": false,
255
- "type": "boolean"
256
- },
257
- "scratchorg": {
258
- "char": "s",
259
- "description": "Scratch org",
260
- "name": "scratchorg",
261
- "allowNo": false,
262
- "type": "boolean"
263
- },
264
264
  "debug": {
265
265
  "char": "d",
266
266
  "description": "Activate debug mode (more logs)",
@@ -284,30 +284,30 @@
284
284
  },
285
285
  "hasDynamicHelp": false,
286
286
  "hiddenAliases": [],
287
- "id": "hardis:auth:login",
287
+ "id": "hardis:config:get",
288
288
  "pluginAlias": "sfdx-hardis",
289
289
  "pluginName": "sfdx-hardis",
290
290
  "pluginType": "core",
291
291
  "strict": true,
292
292
  "enableJsonFlag": true,
293
- "title": "Login",
293
+ "title": "Deploy metadata sources to org",
294
294
  "requiresProject": false,
295
295
  "isESM": true,
296
296
  "relativePath": [
297
297
  "lib",
298
298
  "commands",
299
299
  "hardis",
300
- "auth",
301
- "login.js"
300
+ "config",
301
+ "get.js"
302
302
  ],
303
303
  "aliasPermutations": [],
304
304
  "permutations": [
305
- "hardis:auth:login",
306
- "auth:hardis:login",
307
- "auth:login:hardis",
308
- "hardis:login:auth",
309
- "login:hardis:auth",
310
- "login:auth:hardis"
305
+ "hardis:config:get",
306
+ "config:hardis:get",
307
+ "config:get:hardis",
308
+ "hardis:get:config",
309
+ "get:hardis:config",
310
+ "get:config:hardis"
311
311
  ]
312
312
  },
313
313
  "hardis:doc:fieldusage": {
@@ -3009,12 +3009,12 @@
3009
3009
  "lint:project:hardis"
3010
3010
  ]
3011
3011
  },
3012
- "hardis:source:deploy": {
3012
+ "hardis:scratch:create": {
3013
3013
  "aliases": [],
3014
3014
  "args": {},
3015
- "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",
3015
+ "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 ",
3016
3016
  "examples": [
3017
- "$ 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"
3017
+ "$ sf hardis:scratch:create"
3018
3018
  ],
3019
3019
  "flags": {
3020
3020
  "json": {
@@ -3032,321 +3032,139 @@
3032
3032
  "multiple": false,
3033
3033
  "type": "option"
3034
3034
  },
3035
- "checkonly": {
3036
- "char": "c",
3037
- "description": "checkonly",
3038
- "name": "checkonly",
3035
+ "forcenew": {
3036
+ "char": "n",
3037
+ "description": "If an existing scratch org exists, do not reuse it but create a new one",
3038
+ "name": "forcenew",
3039
3039
  "allowNo": false,
3040
3040
  "type": "boolean"
3041
3041
  },
3042
- "soapdeploy": {
3043
- "description": "soapDeploy",
3044
- "name": "soapdeploy",
3042
+ "pool": {
3043
+ "description": "Creates the scratch org for a scratch org pool",
3044
+ "name": "pool",
3045
3045
  "allowNo": false,
3046
3046
  "type": "boolean"
3047
3047
  },
3048
- "wait": {
3049
- "char": "w",
3050
- "description": "wait",
3051
- "name": "wait",
3052
- "default": 60,
3048
+ "debug": {
3049
+ "char": "d",
3050
+ "description": "Activate debug mode (more logs)",
3051
+ "name": "debug",
3052
+ "allowNo": false,
3053
+ "type": "boolean"
3054
+ },
3055
+ "websocket": {
3056
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3057
+ "name": "websocket",
3053
3058
  "hasDynamicHelp": false,
3054
3059
  "multiple": false,
3055
3060
  "type": "option"
3056
3061
  },
3057
- "testlevel": {
3058
- "char": "l",
3059
- "description": "testlevel",
3060
- "name": "testlevel",
3061
- "default": "NoTestRun",
3062
- "hasDynamicHelp": false,
3063
- "multiple": false,
3064
- "options": [
3065
- "NoTestRun",
3066
- "RunSpecifiedTests",
3067
- "RunLocalTests",
3068
- "RunAllTestsInOrg"
3062
+ "skipauth": {
3063
+ "description": "Skip authentication check when a default username is required",
3064
+ "name": "skipauth",
3065
+ "allowNo": false,
3066
+ "type": "boolean"
3067
+ },
3068
+ "target-dev-hub": {
3069
+ "aliases": [
3070
+ "targetdevhubusername"
3069
3071
  ],
3072
+ "char": "v",
3073
+ "deprecateAliases": true,
3074
+ "name": "target-dev-hub",
3075
+ "noCacheDefault": true,
3076
+ "required": true,
3077
+ "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
3078
+ "hasDynamicHelp": true,
3079
+ "multiple": false,
3070
3080
  "type": "option"
3081
+ }
3082
+ },
3083
+ "hasDynamicHelp": true,
3084
+ "hiddenAliases": [],
3085
+ "id": "hardis:scratch:create",
3086
+ "pluginAlias": "sfdx-hardis",
3087
+ "pluginName": "sfdx-hardis",
3088
+ "pluginType": "core",
3089
+ "strict": true,
3090
+ "enableJsonFlag": true,
3091
+ "title": "Create and initialize scratch org",
3092
+ "requiresProject": true,
3093
+ "requiresSfdxPlugins": [
3094
+ "sfdmu",
3095
+ "texei-sfdx-plugin"
3096
+ ],
3097
+ "isESM": true,
3098
+ "relativePath": [
3099
+ "lib",
3100
+ "commands",
3101
+ "hardis",
3102
+ "scratch",
3103
+ "create.js"
3104
+ ],
3105
+ "aliasPermutations": [],
3106
+ "permutations": [
3107
+ "hardis:scratch:create",
3108
+ "scratch:hardis:create",
3109
+ "scratch:create:hardis",
3110
+ "hardis:create:scratch",
3111
+ "create:hardis:scratch",
3112
+ "create:scratch:hardis"
3113
+ ]
3114
+ },
3115
+ "hardis:scratch:delete": {
3116
+ "aliases": [],
3117
+ "args": {},
3118
+ "description": "Assisted menu to delete scratch orgs associated to a DevHub",
3119
+ "examples": [
3120
+ "$ sf hardis:scratch:delete"
3121
+ ],
3122
+ "flags": {
3123
+ "json": {
3124
+ "description": "Format output as json.",
3125
+ "helpGroup": "GLOBAL",
3126
+ "name": "json",
3127
+ "allowNo": false,
3128
+ "type": "boolean"
3071
3129
  },
3072
- "runtests": {
3073
- "char": "r",
3074
- "description": "runTests",
3075
- "name": "runtests",
3076
- "default": [],
3130
+ "flags-dir": {
3131
+ "helpGroup": "GLOBAL",
3132
+ "name": "flags-dir",
3133
+ "summary": "Import flag values from a directory.",
3077
3134
  "hasDynamicHelp": false,
3078
- "multiple": true,
3135
+ "multiple": false,
3079
3136
  "type": "option"
3080
3137
  },
3081
- "ignoreerrors": {
3082
- "description": "ignoreErrors",
3083
- "name": "ignoreerrors",
3138
+ "debug": {
3139
+ "char": "d",
3140
+ "description": "Activate debug mode (more logs)",
3141
+ "name": "debug",
3084
3142
  "allowNo": false,
3085
3143
  "type": "boolean"
3086
3144
  },
3087
- "ignorewarnings": {
3088
- "char": "g",
3089
- "description": "ignoreWarnings",
3090
- "name": "ignorewarnings",
3145
+ "websocket": {
3146
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3147
+ "name": "websocket",
3148
+ "hasDynamicHelp": false,
3149
+ "multiple": false,
3150
+ "type": "option"
3151
+ },
3152
+ "skipauth": {
3153
+ "description": "Skip authentication check when a default username is required",
3154
+ "name": "skipauth",
3091
3155
  "allowNo": false,
3092
3156
  "type": "boolean"
3093
3157
  },
3094
- "validateddeployrequestid": {
3095
- "char": "q",
3096
- "description": "validateDeployRequestId",
3097
- "exclusive": [
3098
- "manifest",
3099
- "metadata",
3100
- "sourcepath",
3101
- "checkonly",
3102
- "testlevel",
3103
- "runtests",
3104
- "ignoreerrors",
3105
- "ignorewarnings"
3106
- ],
3107
- "name": "validateddeployrequestid",
3108
- "hasDynamicHelp": false,
3109
- "multiple": false,
3110
- "type": "option"
3111
- },
3112
- "verbose": {
3113
- "description": "verbose",
3114
- "name": "verbose",
3115
- "allowNo": false,
3116
- "type": "boolean"
3117
- },
3118
- "metadata": {
3119
- "char": "m",
3120
- "description": "metadata",
3121
- "exclusive": [
3122
- "manifest",
3123
- "sourcepath"
3124
- ],
3125
- "name": "metadata",
3126
- "hasDynamicHelp": false,
3127
- "multiple": true,
3128
- "type": "option"
3129
- },
3130
- "sourcepath": {
3131
- "char": "p",
3132
- "description": "sourcePath",
3133
- "exclusive": [
3134
- "manifest",
3135
- "metadata"
3136
- ],
3137
- "name": "sourcepath",
3138
- "hasDynamicHelp": false,
3139
- "multiple": true,
3140
- "type": "option"
3141
- },
3142
- "manifest": {
3143
- "char": "x",
3144
- "description": "flagsLong.manifest",
3145
- "exclusive": [
3146
- "metadata",
3147
- "sourcepath"
3148
- ],
3149
- "name": "manifest",
3150
- "hasDynamicHelp": false,
3151
- "multiple": false,
3152
- "type": "option"
3153
- },
3154
- "predestructivechanges": {
3155
- "dependsOn": [
3156
- "manifest"
3157
- ],
3158
- "description": "predestructivechanges",
3159
- "name": "predestructivechanges",
3160
- "hasDynamicHelp": false,
3161
- "multiple": false,
3162
- "type": "option"
3163
- },
3164
- "postdestructivechanges": {
3165
- "dependsOn": [
3166
- "manifest"
3167
- ],
3168
- "description": "postdestructivechanges",
3169
- "name": "postdestructivechanges",
3170
- "hasDynamicHelp": false,
3171
- "multiple": false,
3172
- "type": "option"
3173
- },
3174
- "tracksource": {
3175
- "char": "t",
3176
- "description": "tracksource",
3177
- "exclusive": [
3178
- "checkonly",
3179
- "validateddeployrequestid"
3180
- ],
3181
- "name": "tracksource",
3182
- "allowNo": false,
3183
- "type": "boolean"
3184
- },
3185
- "forceoverwrite": {
3186
- "char": "f",
3187
- "dependsOn": [
3188
- "tracksource"
3189
- ],
3190
- "description": "forceoverwrite",
3191
- "name": "forceoverwrite",
3192
- "allowNo": false,
3193
- "type": "boolean"
3194
- },
3195
- "resultsdir": {
3196
- "description": "resultsdir",
3197
- "name": "resultsdir",
3198
- "hasDynamicHelp": false,
3199
- "multiple": false,
3200
- "type": "option"
3201
- },
3202
- "coverageformatters": {
3203
- "description": "coverageformatters",
3204
- "name": "coverageformatters",
3205
- "hasDynamicHelp": false,
3206
- "multiple": true,
3207
- "type": "option"
3208
- },
3209
- "junit": {
3210
- "description": "junit",
3211
- "name": "junit",
3212
- "allowNo": false,
3213
- "type": "boolean"
3214
- },
3215
- "checkcoverage": {
3216
- "description": "Check Apex org coverage",
3217
- "name": "checkcoverage",
3218
- "allowNo": false,
3219
- "type": "boolean"
3220
- },
3221
- "debug": {
3222
- "description": "debug",
3223
- "name": "debug",
3224
- "allowNo": false,
3225
- "type": "boolean"
3226
- },
3227
- "websocket": {
3228
- "description": "websocket",
3229
- "name": "websocket",
3230
- "hasDynamicHelp": false,
3231
- "multiple": false,
3232
- "type": "option"
3233
- },
3234
- "target-org": {
3235
- "aliases": [
3236
- "targetusername",
3237
- "u"
3238
- ],
3239
- "char": "o",
3240
- "deprecateAliases": true,
3241
- "name": "target-org",
3242
- "noCacheDefault": true,
3243
- "required": true,
3244
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3245
- "hasDynamicHelp": true,
3246
- "multiple": false,
3247
- "type": "option"
3248
- }
3249
- },
3250
- "hasDynamicHelp": true,
3251
- "hiddenAliases": [],
3252
- "id": "hardis:source:deploy",
3253
- "pluginAlias": "sfdx-hardis",
3254
- "pluginName": "sfdx-hardis",
3255
- "pluginType": "core",
3256
- "strict": true,
3257
- "enableJsonFlag": true,
3258
- "requiresProject": true,
3259
- "isESM": true,
3260
- "relativePath": [
3261
- "lib",
3262
- "commands",
3263
- "hardis",
3264
- "source",
3265
- "deploy.js"
3266
- ],
3267
- "aliasPermutations": [],
3268
- "permutations": [
3269
- "hardis:source:deploy",
3270
- "source:hardis:deploy",
3271
- "source:deploy:hardis",
3272
- "hardis:deploy:source",
3273
- "deploy:hardis:source",
3274
- "deploy:source:hardis"
3275
- ]
3276
- },
3277
- "hardis:source:push": {
3278
- "aliases": [],
3279
- "args": {},
3280
- "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",
3281
- "flags": {
3282
- "json": {
3283
- "description": "Format output as json.",
3284
- "helpGroup": "GLOBAL",
3285
- "name": "json",
3286
- "allowNo": false,
3287
- "type": "boolean"
3288
- },
3289
- "flags-dir": {
3290
- "helpGroup": "GLOBAL",
3291
- "name": "flags-dir",
3292
- "summary": "Import flag values from a directory.",
3293
- "hasDynamicHelp": false,
3294
- "multiple": false,
3295
- "type": "option"
3296
- },
3297
- "forceoverwrite": {
3298
- "char": "f",
3299
- "description": "forceoverwrite",
3300
- "name": "forceoverwrite",
3301
- "allowNo": false,
3302
- "type": "boolean"
3303
- },
3304
- "wait": {
3305
- "char": "w",
3306
- "description": "wait",
3307
- "name": "wait",
3308
- "default": 60,
3309
- "hasDynamicHelp": false,
3310
- "multiple": false,
3311
- "type": "option"
3312
- },
3313
- "ignorewarnings": {
3314
- "char": "g",
3315
- "description": "ignorewarnings",
3316
- "name": "ignorewarnings",
3317
- "allowNo": false,
3318
- "type": "boolean"
3319
- },
3320
- "quiet": {
3321
- "description": "quiet",
3322
- "name": "quiet",
3323
- "allowNo": false,
3324
- "type": "boolean"
3325
- },
3326
- "debug": {
3327
- "description": "debug",
3328
- "name": "debug",
3329
- "allowNo": false,
3330
- "type": "boolean"
3331
- },
3332
- "websocket": {
3333
- "description": "websocket",
3334
- "name": "websocket",
3335
- "hasDynamicHelp": false,
3336
- "multiple": false,
3337
- "type": "option"
3338
- },
3339
- "target-org": {
3158
+ "target-dev-hub": {
3340
3159
  "aliases": [
3341
- "targetusername",
3342
- "u"
3160
+ "targetdevhubusername"
3343
3161
  ],
3344
- "char": "o",
3162
+ "char": "v",
3345
3163
  "deprecateAliases": true,
3346
- "name": "target-org",
3164
+ "name": "target-dev-hub",
3347
3165
  "noCacheDefault": true,
3348
3166
  "required": true,
3349
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3167
+ "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
3350
3168
  "hasDynamicHelp": true,
3351
3169
  "multiple": false,
3352
3170
  "type": "option"
@@ -3354,144 +3172,63 @@
3354
3172
  },
3355
3173
  "hasDynamicHelp": true,
3356
3174
  "hiddenAliases": [],
3357
- "id": "hardis:source:push",
3175
+ "id": "hardis:scratch:delete",
3358
3176
  "pluginAlias": "sfdx-hardis",
3359
3177
  "pluginName": "sfdx-hardis",
3360
3178
  "pluginType": "core",
3361
3179
  "strict": true,
3362
3180
  "enableJsonFlag": true,
3363
- "requiresProject": true,
3181
+ "title": "Delete scratch orgs(s)",
3364
3182
  "isESM": true,
3365
3183
  "relativePath": [
3366
3184
  "lib",
3367
3185
  "commands",
3368
3186
  "hardis",
3369
- "source",
3370
- "push.js"
3187
+ "scratch",
3188
+ "delete.js"
3371
3189
  ],
3372
3190
  "aliasPermutations": [],
3373
3191
  "permutations": [
3374
- "hardis:source:push",
3375
- "source:hardis:push",
3376
- "source:push:hardis",
3377
- "hardis:push:source",
3378
- "push:hardis:source",
3379
- "push:source:hardis"
3380
- ]
3381
- },
3382
- "hardis:source:retrieve": {
3383
- "aliases": [],
3384
- "args": {},
3385
- "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",
3386
- "examples": [],
3387
- "flags": {
3388
- "json": {
3389
- "description": "Format output as json.",
3390
- "helpGroup": "GLOBAL",
3391
- "name": "json",
3392
- "allowNo": false,
3393
- "type": "boolean"
3394
- },
3395
- "flags-dir": {
3396
- "helpGroup": "GLOBAL",
3397
- "name": "flags-dir",
3398
- "summary": "Import flag values from a directory.",
3399
- "hasDynamicHelp": false,
3400
- "multiple": false,
3401
- "type": "option"
3402
- },
3403
- "apiversion": {
3404
- "char": "a",
3405
- "description": "Override the api version used for api requests made by this command",
3406
- "name": "apiversion",
3407
- "hasDynamicHelp": false,
3408
- "multiple": false,
3409
- "type": "option"
3410
- },
3411
- "sourcepath": {
3412
- "char": "p",
3413
- "description": "sourcePath",
3414
- "exclusive": [
3415
- "manifest",
3416
- "metadata"
3417
- ],
3418
- "name": "sourcepath",
3419
- "hasDynamicHelp": false,
3420
- "multiple": true,
3421
- "type": "option"
3422
- },
3423
- "wait": {
3424
- "char": "w",
3425
- "description": "wait",
3426
- "name": "wait",
3427
- "hasDynamicHelp": false,
3428
- "multiple": false,
3429
- "type": "option"
3430
- },
3431
- "manifest": {
3432
- "char": "x",
3433
- "description": "manifest",
3434
- "exclusive": [
3435
- "metadata",
3436
- "sourcepath"
3437
- ],
3438
- "name": "manifest",
3439
- "hasDynamicHelp": false,
3440
- "multiple": false,
3441
- "type": "option"
3442
- },
3443
- "metadata": {
3444
- "char": "m",
3445
- "description": "metadata",
3446
- "exclusive": [
3447
- "manifest",
3448
- "sourcepath"
3449
- ],
3450
- "name": "metadata",
3451
- "hasDynamicHelp": false,
3452
- "multiple": true,
3453
- "type": "option"
3454
- },
3455
- "packagenames": {
3456
- "char": "n",
3457
- "description": "packagenames",
3458
- "name": "packagenames",
3459
- "hasDynamicHelp": false,
3460
- "multiple": true,
3461
- "type": "option"
3462
- },
3463
- "tracksource": {
3464
- "char": "t",
3465
- "description": "tracksource",
3466
- "name": "tracksource",
3467
- "allowNo": false,
3468
- "type": "boolean"
3469
- },
3470
- "forceoverwrite": {
3471
- "char": "f",
3472
- "dependsOn": [
3473
- "tracksource"
3474
- ],
3475
- "description": "forceoverwrite",
3476
- "name": "forceoverwrite",
3192
+ "hardis:scratch:delete",
3193
+ "scratch:hardis:delete",
3194
+ "scratch:delete:hardis",
3195
+ "hardis:delete:scratch",
3196
+ "delete:hardis:scratch",
3197
+ "delete:scratch:hardis"
3198
+ ]
3199
+ },
3200
+ "hardis:scratch:pull": {
3201
+ "aliases": [],
3202
+ "args": {},
3203
+ "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",
3204
+ "examples": [
3205
+ "$ sf hardis:scratch:pull"
3206
+ ],
3207
+ "flags": {
3208
+ "json": {
3209
+ "description": "Format output as json.",
3210
+ "helpGroup": "GLOBAL",
3211
+ "name": "json",
3477
3212
  "allowNo": false,
3478
3213
  "type": "boolean"
3479
3214
  },
3480
- "verbose": {
3481
- "description": "verbose",
3482
- "name": "verbose",
3483
- "allowNo": false,
3484
- "type": "boolean"
3215
+ "flags-dir": {
3216
+ "helpGroup": "GLOBAL",
3217
+ "name": "flags-dir",
3218
+ "summary": "Import flag values from a directory.",
3219
+ "hasDynamicHelp": false,
3220
+ "multiple": false,
3221
+ "type": "option"
3485
3222
  },
3486
3223
  "debug": {
3487
3224
  "char": "d",
3488
- "description": "debugMode",
3225
+ "description": "Activate debug mode (more logs)",
3489
3226
  "name": "debug",
3490
3227
  "allowNo": false,
3491
3228
  "type": "boolean"
3492
3229
  },
3493
3230
  "websocket": {
3494
- "description": "websocket",
3231
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3495
3232
  "name": "websocket",
3496
3233
  "hasDynamicHelp": false,
3497
3234
  "multiple": false,
@@ -3521,37 +3258,38 @@
3521
3258
  },
3522
3259
  "hasDynamicHelp": true,
3523
3260
  "hiddenAliases": [],
3524
- "id": "hardis:source:retrieve",
3261
+ "id": "hardis:scratch:pull",
3525
3262
  "pluginAlias": "sfdx-hardis",
3526
3263
  "pluginName": "sfdx-hardis",
3527
3264
  "pluginType": "core",
3528
3265
  "strict": true,
3529
3266
  "enableJsonFlag": true,
3267
+ "title": "Scratch PULL",
3530
3268
  "requiresProject": true,
3531
3269
  "isESM": true,
3532
3270
  "relativePath": [
3533
3271
  "lib",
3534
3272
  "commands",
3535
3273
  "hardis",
3536
- "source",
3537
- "retrieve.js"
3274
+ "scratch",
3275
+ "pull.js"
3538
3276
  ],
3539
3277
  "aliasPermutations": [],
3540
3278
  "permutations": [
3541
- "hardis:source:retrieve",
3542
- "source:hardis:retrieve",
3543
- "source:retrieve:hardis",
3544
- "hardis:retrieve:source",
3545
- "retrieve:hardis:source",
3546
- "retrieve:source:hardis"
3279
+ "hardis:scratch:pull",
3280
+ "scratch:hardis:pull",
3281
+ "scratch:pull:hardis",
3282
+ "hardis:pull:scratch",
3283
+ "pull:hardis:scratch",
3284
+ "pull:scratch:hardis"
3547
3285
  ]
3548
3286
  },
3549
- "hardis:scratch:create": {
3287
+ "hardis:scratch:push": {
3550
3288
  "aliases": [],
3551
3289
  "args": {},
3552
- "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 ",
3290
+ "description": "Push local files to scratch org\n\nCalls `sf project deploy start` under the hood\n",
3553
3291
  "examples": [
3554
- "$ sf hardis:scratch:create"
3292
+ "$ sf hardis:scratch:push"
3555
3293
  ],
3556
3294
  "flags": {
3557
3295
  "json": {
@@ -3569,19 +3307,6 @@
3569
3307
  "multiple": false,
3570
3308
  "type": "option"
3571
3309
  },
3572
- "forcenew": {
3573
- "char": "n",
3574
- "description": "If an existing scratch org exists, do not reuse it but create a new one",
3575
- "name": "forcenew",
3576
- "allowNo": false,
3577
- "type": "boolean"
3578
- },
3579
- "pool": {
3580
- "description": "Creates the scratch org for a scratch org pool",
3581
- "name": "pool",
3582
- "allowNo": false,
3583
- "type": "boolean"
3584
- },
3585
3310
  "debug": {
3586
3311
  "char": "d",
3587
3312
  "description": "Activate debug mode (more logs)",
@@ -3602,16 +3327,17 @@
3602
3327
  "allowNo": false,
3603
3328
  "type": "boolean"
3604
3329
  },
3605
- "target-dev-hub": {
3330
+ "target-org": {
3606
3331
  "aliases": [
3607
- "targetdevhubusername"
3332
+ "targetusername",
3333
+ "u"
3608
3334
  ],
3609
- "char": "v",
3335
+ "char": "o",
3610
3336
  "deprecateAliases": true,
3611
- "name": "target-dev-hub",
3337
+ "name": "target-org",
3612
3338
  "noCacheDefault": true,
3613
3339
  "required": true,
3614
- "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
3340
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3615
3341
  "hasDynamicHelp": true,
3616
3342
  "multiple": false,
3617
3343
  "type": "option"
@@ -3619,42 +3345,38 @@
3619
3345
  },
3620
3346
  "hasDynamicHelp": true,
3621
3347
  "hiddenAliases": [],
3622
- "id": "hardis:scratch:create",
3348
+ "id": "hardis:scratch:push",
3623
3349
  "pluginAlias": "sfdx-hardis",
3624
3350
  "pluginName": "sfdx-hardis",
3625
3351
  "pluginType": "core",
3626
3352
  "strict": true,
3627
3353
  "enableJsonFlag": true,
3628
- "title": "Create and initialize scratch org",
3354
+ "title": "Scratch PUSH",
3629
3355
  "requiresProject": true,
3630
- "requiresSfdxPlugins": [
3631
- "sfdmu",
3632
- "texei-sfdx-plugin"
3633
- ],
3634
3356
  "isESM": true,
3635
3357
  "relativePath": [
3636
3358
  "lib",
3637
3359
  "commands",
3638
3360
  "hardis",
3639
3361
  "scratch",
3640
- "create.js"
3362
+ "push.js"
3641
3363
  ],
3642
3364
  "aliasPermutations": [],
3643
3365
  "permutations": [
3644
- "hardis:scratch:create",
3645
- "scratch:hardis:create",
3646
- "scratch:create:hardis",
3647
- "hardis:create:scratch",
3648
- "create:hardis:scratch",
3649
- "create:scratch:hardis"
3366
+ "hardis:scratch:push",
3367
+ "scratch:hardis:push",
3368
+ "scratch:push:hardis",
3369
+ "hardis:push:scratch",
3370
+ "push:hardis:scratch",
3371
+ "push:scratch:hardis"
3650
3372
  ]
3651
3373
  },
3652
- "hardis:scratch:delete": {
3374
+ "hardis:source:deploy": {
3653
3375
  "aliases": [],
3654
3376
  "args": {},
3655
- "description": "Assisted menu to delete scratch orgs associated to a DevHub",
3377
+ "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",
3656
3378
  "examples": [
3657
- "$ sf hardis:scratch:delete"
3379
+ "$ 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"
3658
3380
  ],
3659
3381
  "flags": {
3660
3382
  "json": {
@@ -3664,44 +3386,224 @@
3664
3386
  "allowNo": false,
3665
3387
  "type": "boolean"
3666
3388
  },
3667
- "flags-dir": {
3668
- "helpGroup": "GLOBAL",
3669
- "name": "flags-dir",
3670
- "summary": "Import flag values from a directory.",
3389
+ "flags-dir": {
3390
+ "helpGroup": "GLOBAL",
3391
+ "name": "flags-dir",
3392
+ "summary": "Import flag values from a directory.",
3393
+ "hasDynamicHelp": false,
3394
+ "multiple": false,
3395
+ "type": "option"
3396
+ },
3397
+ "checkonly": {
3398
+ "char": "c",
3399
+ "description": "checkonly",
3400
+ "name": "checkonly",
3401
+ "allowNo": false,
3402
+ "type": "boolean"
3403
+ },
3404
+ "soapdeploy": {
3405
+ "description": "soapDeploy",
3406
+ "name": "soapdeploy",
3407
+ "allowNo": false,
3408
+ "type": "boolean"
3409
+ },
3410
+ "wait": {
3411
+ "char": "w",
3412
+ "description": "wait",
3413
+ "name": "wait",
3414
+ "default": 60,
3415
+ "hasDynamicHelp": false,
3416
+ "multiple": false,
3417
+ "type": "option"
3418
+ },
3419
+ "testlevel": {
3420
+ "char": "l",
3421
+ "description": "testlevel",
3422
+ "name": "testlevel",
3423
+ "default": "NoTestRun",
3424
+ "hasDynamicHelp": false,
3425
+ "multiple": false,
3426
+ "options": [
3427
+ "NoTestRun",
3428
+ "RunSpecifiedTests",
3429
+ "RunLocalTests",
3430
+ "RunAllTestsInOrg"
3431
+ ],
3432
+ "type": "option"
3433
+ },
3434
+ "runtests": {
3435
+ "char": "r",
3436
+ "description": "runTests",
3437
+ "name": "runtests",
3438
+ "default": [],
3439
+ "hasDynamicHelp": false,
3440
+ "multiple": true,
3441
+ "type": "option"
3442
+ },
3443
+ "ignoreerrors": {
3444
+ "description": "ignoreErrors",
3445
+ "name": "ignoreerrors",
3446
+ "allowNo": false,
3447
+ "type": "boolean"
3448
+ },
3449
+ "ignorewarnings": {
3450
+ "char": "g",
3451
+ "description": "ignoreWarnings",
3452
+ "name": "ignorewarnings",
3453
+ "allowNo": false,
3454
+ "type": "boolean"
3455
+ },
3456
+ "validateddeployrequestid": {
3457
+ "char": "q",
3458
+ "description": "validateDeployRequestId",
3459
+ "exclusive": [
3460
+ "manifest",
3461
+ "metadata",
3462
+ "sourcepath",
3463
+ "checkonly",
3464
+ "testlevel",
3465
+ "runtests",
3466
+ "ignoreerrors",
3467
+ "ignorewarnings"
3468
+ ],
3469
+ "name": "validateddeployrequestid",
3470
+ "hasDynamicHelp": false,
3471
+ "multiple": false,
3472
+ "type": "option"
3473
+ },
3474
+ "verbose": {
3475
+ "description": "verbose",
3476
+ "name": "verbose",
3477
+ "allowNo": false,
3478
+ "type": "boolean"
3479
+ },
3480
+ "metadata": {
3481
+ "char": "m",
3482
+ "description": "metadata",
3483
+ "exclusive": [
3484
+ "manifest",
3485
+ "sourcepath"
3486
+ ],
3487
+ "name": "metadata",
3488
+ "hasDynamicHelp": false,
3489
+ "multiple": true,
3490
+ "type": "option"
3491
+ },
3492
+ "sourcepath": {
3493
+ "char": "p",
3494
+ "description": "sourcePath",
3495
+ "exclusive": [
3496
+ "manifest",
3497
+ "metadata"
3498
+ ],
3499
+ "name": "sourcepath",
3500
+ "hasDynamicHelp": false,
3501
+ "multiple": true,
3502
+ "type": "option"
3503
+ },
3504
+ "manifest": {
3505
+ "char": "x",
3506
+ "description": "flagsLong.manifest",
3507
+ "exclusive": [
3508
+ "metadata",
3509
+ "sourcepath"
3510
+ ],
3511
+ "name": "manifest",
3512
+ "hasDynamicHelp": false,
3513
+ "multiple": false,
3514
+ "type": "option"
3515
+ },
3516
+ "predestructivechanges": {
3517
+ "dependsOn": [
3518
+ "manifest"
3519
+ ],
3520
+ "description": "predestructivechanges",
3521
+ "name": "predestructivechanges",
3522
+ "hasDynamicHelp": false,
3523
+ "multiple": false,
3524
+ "type": "option"
3525
+ },
3526
+ "postdestructivechanges": {
3527
+ "dependsOn": [
3528
+ "manifest"
3529
+ ],
3530
+ "description": "postdestructivechanges",
3531
+ "name": "postdestructivechanges",
3532
+ "hasDynamicHelp": false,
3533
+ "multiple": false,
3534
+ "type": "option"
3535
+ },
3536
+ "tracksource": {
3537
+ "char": "t",
3538
+ "description": "tracksource",
3539
+ "exclusive": [
3540
+ "checkonly",
3541
+ "validateddeployrequestid"
3542
+ ],
3543
+ "name": "tracksource",
3544
+ "allowNo": false,
3545
+ "type": "boolean"
3546
+ },
3547
+ "forceoverwrite": {
3548
+ "char": "f",
3549
+ "dependsOn": [
3550
+ "tracksource"
3551
+ ],
3552
+ "description": "forceoverwrite",
3553
+ "name": "forceoverwrite",
3554
+ "allowNo": false,
3555
+ "type": "boolean"
3556
+ },
3557
+ "resultsdir": {
3558
+ "description": "resultsdir",
3559
+ "name": "resultsdir",
3671
3560
  "hasDynamicHelp": false,
3672
3561
  "multiple": false,
3673
3562
  "type": "option"
3674
3563
  },
3564
+ "coverageformatters": {
3565
+ "description": "coverageformatters",
3566
+ "name": "coverageformatters",
3567
+ "hasDynamicHelp": false,
3568
+ "multiple": true,
3569
+ "type": "option"
3570
+ },
3571
+ "junit": {
3572
+ "description": "junit",
3573
+ "name": "junit",
3574
+ "allowNo": false,
3575
+ "type": "boolean"
3576
+ },
3577
+ "checkcoverage": {
3578
+ "description": "Check Apex org coverage",
3579
+ "name": "checkcoverage",
3580
+ "allowNo": false,
3581
+ "type": "boolean"
3582
+ },
3675
3583
  "debug": {
3676
- "char": "d",
3677
- "description": "Activate debug mode (more logs)",
3584
+ "description": "debug",
3678
3585
  "name": "debug",
3679
3586
  "allowNo": false,
3680
3587
  "type": "boolean"
3681
3588
  },
3682
3589
  "websocket": {
3683
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3590
+ "description": "websocket",
3684
3591
  "name": "websocket",
3685
3592
  "hasDynamicHelp": false,
3686
3593
  "multiple": false,
3687
3594
  "type": "option"
3688
3595
  },
3689
- "skipauth": {
3690
- "description": "Skip authentication check when a default username is required",
3691
- "name": "skipauth",
3692
- "allowNo": false,
3693
- "type": "boolean"
3694
- },
3695
- "target-dev-hub": {
3596
+ "target-org": {
3696
3597
  "aliases": [
3697
- "targetdevhubusername"
3598
+ "targetusername",
3599
+ "u"
3698
3600
  ],
3699
- "char": "v",
3601
+ "char": "o",
3700
3602
  "deprecateAliases": true,
3701
- "name": "target-dev-hub",
3603
+ "name": "target-org",
3702
3604
  "noCacheDefault": true,
3703
3605
  "required": true,
3704
- "summary": "Username or alias of the Dev Hub org. Not required if the `target-dev-hub` configuration variable is already set.",
3606
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
3705
3607
  "hasDynamicHelp": true,
3706
3608
  "multiple": false,
3707
3609
  "type": "option"
@@ -3709,38 +3611,35 @@
3709
3611
  },
3710
3612
  "hasDynamicHelp": true,
3711
3613
  "hiddenAliases": [],
3712
- "id": "hardis:scratch:delete",
3614
+ "id": "hardis:source:deploy",
3713
3615
  "pluginAlias": "sfdx-hardis",
3714
3616
  "pluginName": "sfdx-hardis",
3715
3617
  "pluginType": "core",
3716
3618
  "strict": true,
3717
3619
  "enableJsonFlag": true,
3718
- "title": "Delete scratch orgs(s)",
3620
+ "requiresProject": true,
3719
3621
  "isESM": true,
3720
3622
  "relativePath": [
3721
3623
  "lib",
3722
3624
  "commands",
3723
3625
  "hardis",
3724
- "scratch",
3725
- "delete.js"
3626
+ "source",
3627
+ "deploy.js"
3726
3628
  ],
3727
3629
  "aliasPermutations": [],
3728
3630
  "permutations": [
3729
- "hardis:scratch:delete",
3730
- "scratch:hardis:delete",
3731
- "scratch:delete:hardis",
3732
- "hardis:delete:scratch",
3733
- "delete:hardis:scratch",
3734
- "delete:scratch:hardis"
3631
+ "hardis:source:deploy",
3632
+ "source:hardis:deploy",
3633
+ "source:deploy:hardis",
3634
+ "hardis:deploy:source",
3635
+ "deploy:hardis:source",
3636
+ "deploy:source:hardis"
3735
3637
  ]
3736
3638
  },
3737
- "hardis:scratch:pull": {
3639
+ "hardis:source:push": {
3738
3640
  "aliases": [],
3739
3641
  "args": {},
3740
- "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",
3741
- "examples": [
3742
- "$ sf hardis:scratch:pull"
3743
- ],
3642
+ "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",
3744
3643
  "flags": {
3745
3644
  "json": {
3746
3645
  "description": "Format output as json.",
@@ -3757,26 +3656,48 @@
3757
3656
  "multiple": false,
3758
3657
  "type": "option"
3759
3658
  },
3659
+ "forceoverwrite": {
3660
+ "char": "f",
3661
+ "description": "forceoverwrite",
3662
+ "name": "forceoverwrite",
3663
+ "allowNo": false,
3664
+ "type": "boolean"
3665
+ },
3666
+ "wait": {
3667
+ "char": "w",
3668
+ "description": "wait",
3669
+ "name": "wait",
3670
+ "default": 60,
3671
+ "hasDynamicHelp": false,
3672
+ "multiple": false,
3673
+ "type": "option"
3674
+ },
3675
+ "ignorewarnings": {
3676
+ "char": "g",
3677
+ "description": "ignorewarnings",
3678
+ "name": "ignorewarnings",
3679
+ "allowNo": false,
3680
+ "type": "boolean"
3681
+ },
3682
+ "quiet": {
3683
+ "description": "quiet",
3684
+ "name": "quiet",
3685
+ "allowNo": false,
3686
+ "type": "boolean"
3687
+ },
3760
3688
  "debug": {
3761
- "char": "d",
3762
- "description": "Activate debug mode (more logs)",
3689
+ "description": "debug",
3763
3690
  "name": "debug",
3764
3691
  "allowNo": false,
3765
3692
  "type": "boolean"
3766
3693
  },
3767
3694
  "websocket": {
3768
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3695
+ "description": "websocket",
3769
3696
  "name": "websocket",
3770
3697
  "hasDynamicHelp": false,
3771
3698
  "multiple": false,
3772
3699
  "type": "option"
3773
3700
  },
3774
- "skipauth": {
3775
- "description": "Skip authentication check when a default username is required",
3776
- "name": "skipauth",
3777
- "allowNo": false,
3778
- "type": "boolean"
3779
- },
3780
3701
  "target-org": {
3781
3702
  "aliases": [
3782
3703
  "targetusername",
@@ -3795,39 +3716,36 @@
3795
3716
  },
3796
3717
  "hasDynamicHelp": true,
3797
3718
  "hiddenAliases": [],
3798
- "id": "hardis:scratch:pull",
3719
+ "id": "hardis:source:push",
3799
3720
  "pluginAlias": "sfdx-hardis",
3800
3721
  "pluginName": "sfdx-hardis",
3801
3722
  "pluginType": "core",
3802
3723
  "strict": true,
3803
3724
  "enableJsonFlag": true,
3804
- "title": "Scratch PULL",
3805
3725
  "requiresProject": true,
3806
3726
  "isESM": true,
3807
3727
  "relativePath": [
3808
3728
  "lib",
3809
3729
  "commands",
3810
3730
  "hardis",
3811
- "scratch",
3812
- "pull.js"
3731
+ "source",
3732
+ "push.js"
3813
3733
  ],
3814
3734
  "aliasPermutations": [],
3815
3735
  "permutations": [
3816
- "hardis:scratch:pull",
3817
- "scratch:hardis:pull",
3818
- "scratch:pull:hardis",
3819
- "hardis:pull:scratch",
3820
- "pull:hardis:scratch",
3821
- "pull:scratch:hardis"
3736
+ "hardis:source:push",
3737
+ "source:hardis:push",
3738
+ "source:push:hardis",
3739
+ "hardis:push:source",
3740
+ "push:hardis:source",
3741
+ "push:source:hardis"
3822
3742
  ]
3823
3743
  },
3824
- "hardis:scratch:push": {
3744
+ "hardis:source:retrieve": {
3825
3745
  "aliases": [],
3826
3746
  "args": {},
3827
- "description": "Push local files to scratch org\n\nCalls `sf project deploy start` under the hood\n",
3828
- "examples": [
3829
- "$ sf hardis:scratch:push"
3830
- ],
3747
+ "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",
3748
+ "examples": [],
3831
3749
  "flags": {
3832
3750
  "json": {
3833
3751
  "description": "Format output as json.",
@@ -3844,15 +3762,98 @@
3844
3762
  "multiple": false,
3845
3763
  "type": "option"
3846
3764
  },
3765
+ "apiversion": {
3766
+ "char": "a",
3767
+ "description": "Override the api version used for api requests made by this command",
3768
+ "name": "apiversion",
3769
+ "hasDynamicHelp": false,
3770
+ "multiple": false,
3771
+ "type": "option"
3772
+ },
3773
+ "sourcepath": {
3774
+ "char": "p",
3775
+ "description": "sourcePath",
3776
+ "exclusive": [
3777
+ "manifest",
3778
+ "metadata"
3779
+ ],
3780
+ "name": "sourcepath",
3781
+ "hasDynamicHelp": false,
3782
+ "multiple": true,
3783
+ "type": "option"
3784
+ },
3785
+ "wait": {
3786
+ "char": "w",
3787
+ "description": "wait",
3788
+ "name": "wait",
3789
+ "hasDynamicHelp": false,
3790
+ "multiple": false,
3791
+ "type": "option"
3792
+ },
3793
+ "manifest": {
3794
+ "char": "x",
3795
+ "description": "manifest",
3796
+ "exclusive": [
3797
+ "metadata",
3798
+ "sourcepath"
3799
+ ],
3800
+ "name": "manifest",
3801
+ "hasDynamicHelp": false,
3802
+ "multiple": false,
3803
+ "type": "option"
3804
+ },
3805
+ "metadata": {
3806
+ "char": "m",
3807
+ "description": "metadata",
3808
+ "exclusive": [
3809
+ "manifest",
3810
+ "sourcepath"
3811
+ ],
3812
+ "name": "metadata",
3813
+ "hasDynamicHelp": false,
3814
+ "multiple": true,
3815
+ "type": "option"
3816
+ },
3817
+ "packagenames": {
3818
+ "char": "n",
3819
+ "description": "packagenames",
3820
+ "name": "packagenames",
3821
+ "hasDynamicHelp": false,
3822
+ "multiple": true,
3823
+ "type": "option"
3824
+ },
3825
+ "tracksource": {
3826
+ "char": "t",
3827
+ "description": "tracksource",
3828
+ "name": "tracksource",
3829
+ "allowNo": false,
3830
+ "type": "boolean"
3831
+ },
3832
+ "forceoverwrite": {
3833
+ "char": "f",
3834
+ "dependsOn": [
3835
+ "tracksource"
3836
+ ],
3837
+ "description": "forceoverwrite",
3838
+ "name": "forceoverwrite",
3839
+ "allowNo": false,
3840
+ "type": "boolean"
3841
+ },
3842
+ "verbose": {
3843
+ "description": "verbose",
3844
+ "name": "verbose",
3845
+ "allowNo": false,
3846
+ "type": "boolean"
3847
+ },
3847
3848
  "debug": {
3848
3849
  "char": "d",
3849
- "description": "Activate debug mode (more logs)",
3850
+ "description": "debugMode",
3850
3851
  "name": "debug",
3851
3852
  "allowNo": false,
3852
3853
  "type": "boolean"
3853
3854
  },
3854
3855
  "websocket": {
3855
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
3856
+ "description": "websocket",
3856
3857
  "name": "websocket",
3857
3858
  "hasDynamicHelp": false,
3858
3859
  "multiple": false,
@@ -3882,30 +3883,29 @@
3882
3883
  },
3883
3884
  "hasDynamicHelp": true,
3884
3885
  "hiddenAliases": [],
3885
- "id": "hardis:scratch:push",
3886
+ "id": "hardis:source:retrieve",
3886
3887
  "pluginAlias": "sfdx-hardis",
3887
3888
  "pluginName": "sfdx-hardis",
3888
3889
  "pluginType": "core",
3889
3890
  "strict": true,
3890
3891
  "enableJsonFlag": true,
3891
- "title": "Scratch PUSH",
3892
3892
  "requiresProject": true,
3893
3893
  "isESM": true,
3894
3894
  "relativePath": [
3895
3895
  "lib",
3896
3896
  "commands",
3897
3897
  "hardis",
3898
- "scratch",
3899
- "push.js"
3898
+ "source",
3899
+ "retrieve.js"
3900
3900
  ],
3901
3901
  "aliasPermutations": [],
3902
3902
  "permutations": [
3903
- "hardis:scratch:push",
3904
- "scratch:hardis:push",
3905
- "scratch:push:hardis",
3906
- "hardis:push:scratch",
3907
- "push:hardis:scratch",
3908
- "push:scratch:hardis"
3903
+ "hardis:source:retrieve",
3904
+ "source:hardis:retrieve",
3905
+ "source:retrieve:hardis",
3906
+ "hardis:retrieve:source",
3907
+ "retrieve:hardis:source",
3908
+ "retrieve:source:hardis"
3909
3909
  ]
3910
3910
  },
3911
3911
  "hardis:work:new": {
@@ -5476,6 +5476,268 @@
5476
5476
  "import:data:org:hardis"
5477
5477
  ]
5478
5478
  },
5479
+ "hardis:org:files:export": {
5480
+ "aliases": [],
5481
+ "args": {},
5482
+ "description": "Export file attachments from a Salesforce org\n\nHandles:\n\n- ContentVersion\n- Attachment\n\nSee article below:\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
5483
+ "examples": [
5484
+ "$ sf hardis:org:files:export"
5485
+ ],
5486
+ "flags": {
5487
+ "json": {
5488
+ "description": "Format output as json.",
5489
+ "helpGroup": "GLOBAL",
5490
+ "name": "json",
5491
+ "allowNo": false,
5492
+ "type": "boolean"
5493
+ },
5494
+ "flags-dir": {
5495
+ "helpGroup": "GLOBAL",
5496
+ "name": "flags-dir",
5497
+ "summary": "Import flag values from a directory.",
5498
+ "hasDynamicHelp": false,
5499
+ "multiple": false,
5500
+ "type": "option"
5501
+ },
5502
+ "path": {
5503
+ "char": "p",
5504
+ "description": "Path to the file export project",
5505
+ "name": "path",
5506
+ "hasDynamicHelp": false,
5507
+ "multiple": false,
5508
+ "type": "option"
5509
+ },
5510
+ "chunksize": {
5511
+ "char": "c",
5512
+ "description": "Number of records to add in a chunk before it is processed",
5513
+ "name": "chunksize",
5514
+ "default": 1000,
5515
+ "hasDynamicHelp": false,
5516
+ "multiple": false,
5517
+ "type": "option"
5518
+ },
5519
+ "polltimeout": {
5520
+ "char": "t",
5521
+ "description": "Timeout in MS for Bulk API calls",
5522
+ "name": "polltimeout",
5523
+ "default": 300000,
5524
+ "hasDynamicHelp": false,
5525
+ "multiple": false,
5526
+ "type": "option"
5527
+ },
5528
+ "startchunknumber": {
5529
+ "char": "s",
5530
+ "description": "Chunk number to start from",
5531
+ "name": "startchunknumber",
5532
+ "default": 0,
5533
+ "hasDynamicHelp": false,
5534
+ "multiple": false,
5535
+ "type": "option"
5536
+ },
5537
+ "debug": {
5538
+ "char": "d",
5539
+ "description": "Activate debug mode (more logs)",
5540
+ "name": "debug",
5541
+ "allowNo": false,
5542
+ "type": "boolean"
5543
+ },
5544
+ "websocket": {
5545
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
5546
+ "name": "websocket",
5547
+ "hasDynamicHelp": false,
5548
+ "multiple": false,
5549
+ "type": "option"
5550
+ },
5551
+ "skipauth": {
5552
+ "description": "Skip authentication check when a default username is required",
5553
+ "name": "skipauth",
5554
+ "allowNo": false,
5555
+ "type": "boolean"
5556
+ },
5557
+ "target-org": {
5558
+ "aliases": [
5559
+ "targetusername",
5560
+ "u"
5561
+ ],
5562
+ "char": "o",
5563
+ "deprecateAliases": true,
5564
+ "name": "target-org",
5565
+ "noCacheDefault": true,
5566
+ "required": true,
5567
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
5568
+ "hasDynamicHelp": true,
5569
+ "multiple": false,
5570
+ "type": "option"
5571
+ }
5572
+ },
5573
+ "hasDynamicHelp": true,
5574
+ "hiddenAliases": [],
5575
+ "id": "hardis:org:files:export",
5576
+ "pluginAlias": "sfdx-hardis",
5577
+ "pluginName": "sfdx-hardis",
5578
+ "pluginType": "core",
5579
+ "strict": true,
5580
+ "enableJsonFlag": true,
5581
+ "title": "Export files",
5582
+ "requiresProject": false,
5583
+ "isESM": true,
5584
+ "relativePath": [
5585
+ "lib",
5586
+ "commands",
5587
+ "hardis",
5588
+ "org",
5589
+ "files",
5590
+ "export.js"
5591
+ ],
5592
+ "aliasPermutations": [],
5593
+ "permutations": [
5594
+ "hardis:org:files:export",
5595
+ "org:hardis:files:export",
5596
+ "org:files:hardis:export",
5597
+ "org:files:export:hardis",
5598
+ "hardis:files:org:export",
5599
+ "files:hardis:org:export",
5600
+ "files:org:hardis:export",
5601
+ "files:org:export:hardis",
5602
+ "hardis:files:export:org",
5603
+ "files:hardis:export:org",
5604
+ "files:export:hardis:org",
5605
+ "files:export:org:hardis",
5606
+ "hardis:org:export:files",
5607
+ "org:hardis:export:files",
5608
+ "org:export:hardis:files",
5609
+ "org:export:files:hardis",
5610
+ "hardis:export:org:files",
5611
+ "export:hardis:org:files",
5612
+ "export:org:hardis:files",
5613
+ "export:org:files:hardis",
5614
+ "hardis:export:files:org",
5615
+ "export:hardis:files:org",
5616
+ "export:files:hardis:org",
5617
+ "export:files:org:hardis"
5618
+ ]
5619
+ },
5620
+ "hardis:org:files:import": {
5621
+ "aliases": [],
5622
+ "args": {},
5623
+ "description": "Import file attachments into a Salesforce org\n\nSee article below to see how to Export them.\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
5624
+ "examples": [
5625
+ "$ sf hardis:org:files:import"
5626
+ ],
5627
+ "flags": {
5628
+ "json": {
5629
+ "description": "Format output as json.",
5630
+ "helpGroup": "GLOBAL",
5631
+ "name": "json",
5632
+ "allowNo": false,
5633
+ "type": "boolean"
5634
+ },
5635
+ "flags-dir": {
5636
+ "helpGroup": "GLOBAL",
5637
+ "name": "flags-dir",
5638
+ "summary": "Import flag values from a directory.",
5639
+ "hasDynamicHelp": false,
5640
+ "multiple": false,
5641
+ "type": "option"
5642
+ },
5643
+ "path": {
5644
+ "char": "p",
5645
+ "description": "Path to the file export project",
5646
+ "name": "path",
5647
+ "hasDynamicHelp": false,
5648
+ "multiple": false,
5649
+ "type": "option"
5650
+ },
5651
+ "overwrite": {
5652
+ "char": "f",
5653
+ "description": "Override existing files (doubles the number of API calls)",
5654
+ "name": "overwrite",
5655
+ "allowNo": false,
5656
+ "type": "boolean"
5657
+ },
5658
+ "debug": {
5659
+ "char": "d",
5660
+ "description": "Activate debug mode (more logs)",
5661
+ "name": "debug",
5662
+ "allowNo": false,
5663
+ "type": "boolean"
5664
+ },
5665
+ "websocket": {
5666
+ "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
5667
+ "name": "websocket",
5668
+ "hasDynamicHelp": false,
5669
+ "multiple": false,
5670
+ "type": "option"
5671
+ },
5672
+ "skipauth": {
5673
+ "description": "Skip authentication check when a default username is required",
5674
+ "name": "skipauth",
5675
+ "allowNo": false,
5676
+ "type": "boolean"
5677
+ },
5678
+ "target-org": {
5679
+ "aliases": [
5680
+ "targetusername",
5681
+ "u"
5682
+ ],
5683
+ "char": "o",
5684
+ "deprecateAliases": true,
5685
+ "name": "target-org",
5686
+ "noCacheDefault": true,
5687
+ "required": true,
5688
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
5689
+ "hasDynamicHelp": true,
5690
+ "multiple": false,
5691
+ "type": "option"
5692
+ }
5693
+ },
5694
+ "hasDynamicHelp": true,
5695
+ "hiddenAliases": [],
5696
+ "id": "hardis:org:files:import",
5697
+ "pluginAlias": "sfdx-hardis",
5698
+ "pluginName": "sfdx-hardis",
5699
+ "pluginType": "core",
5700
+ "strict": true,
5701
+ "enableJsonFlag": true,
5702
+ "title": "Import files",
5703
+ "requiresProject": false,
5704
+ "isESM": true,
5705
+ "relativePath": [
5706
+ "lib",
5707
+ "commands",
5708
+ "hardis",
5709
+ "org",
5710
+ "files",
5711
+ "import.js"
5712
+ ],
5713
+ "aliasPermutations": [],
5714
+ "permutations": [
5715
+ "hardis:org:files:import",
5716
+ "org:hardis:files:import",
5717
+ "org:files:hardis:import",
5718
+ "org:files:import:hardis",
5719
+ "hardis:files:org:import",
5720
+ "files:hardis:org:import",
5721
+ "files:org:hardis:import",
5722
+ "files:org:import:hardis",
5723
+ "hardis:files:import:org",
5724
+ "files:hardis:import:org",
5725
+ "files:import:hardis:org",
5726
+ "files:import:org:hardis",
5727
+ "hardis:org:import:files",
5728
+ "org:hardis:import:files",
5729
+ "org:import:hardis:files",
5730
+ "org:import:files:hardis",
5731
+ "hardis:import:org:files",
5732
+ "import:hardis:org:files",
5733
+ "import:org:hardis:files",
5734
+ "import:org:files:hardis",
5735
+ "hardis:import:files:org",
5736
+ "import:hardis:files:org",
5737
+ "import:files:hardis:org",
5738
+ "import:files:org:hardis"
5739
+ ]
5740
+ },
5479
5741
  "hardis:org:diagnose:audittrail": {
5480
5742
  "aliases": [],
5481
5743
  "args": {},
@@ -5976,244 +6238,7 @@
5976
6238
  "args": {},
5977
6239
  "description": "Export Release Updates into a CSV file with selected criteria, and highlight Release Updates that should be checked.\n\nBefore publishing **Breaking Changes** ❌, Salesforce announce them in the setup menu [**Release Updates**](https://help.salesforce.com/s/articleView?id=sf.release_updates.htm&type=5)\n\n⚠️ Some of them are very important, because if you don't make the related upgrades in time (ex: before Winter 25) , your production org can crash !\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
5978
6240
  "examples": [
5979
- "$ sf hardis:org:diagnose:releaseupdates"
5980
- ],
5981
- "flags": {
5982
- "json": {
5983
- "description": "Format output as json.",
5984
- "helpGroup": "GLOBAL",
5985
- "name": "json",
5986
- "allowNo": false,
5987
- "type": "boolean"
5988
- },
5989
- "flags-dir": {
5990
- "helpGroup": "GLOBAL",
5991
- "name": "flags-dir",
5992
- "summary": "Import flag values from a directory.",
5993
- "hasDynamicHelp": false,
5994
- "multiple": false,
5995
- "type": "option"
5996
- },
5997
- "outputfile": {
5998
- "char": "f",
5999
- "description": "Force the path and name of output report file. Must end with .csv",
6000
- "name": "outputfile",
6001
- "hasDynamicHelp": false,
6002
- "multiple": false,
6003
- "type": "option"
6004
- },
6005
- "debug": {
6006
- "char": "d",
6007
- "description": "Activate debug mode (more logs)",
6008
- "name": "debug",
6009
- "allowNo": false,
6010
- "type": "boolean"
6011
- },
6012
- "websocket": {
6013
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
6014
- "name": "websocket",
6015
- "hasDynamicHelp": false,
6016
- "multiple": false,
6017
- "type": "option"
6018
- },
6019
- "skipauth": {
6020
- "description": "Skip authentication check when a default username is required",
6021
- "name": "skipauth",
6022
- "allowNo": false,
6023
- "type": "boolean"
6024
- },
6025
- "target-org": {
6026
- "aliases": [
6027
- "targetusername",
6028
- "u"
6029
- ],
6030
- "char": "o",
6031
- "deprecateAliases": true,
6032
- "name": "target-org",
6033
- "noCacheDefault": true,
6034
- "required": true,
6035
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
6036
- "hasDynamicHelp": true,
6037
- "multiple": false,
6038
- "type": "option"
6039
- }
6040
- },
6041
- "hasDynamicHelp": true,
6042
- "hiddenAliases": [],
6043
- "id": "hardis:org:diagnose:releaseupdates",
6044
- "pluginAlias": "sfdx-hardis",
6045
- "pluginName": "sfdx-hardis",
6046
- "pluginType": "core",
6047
- "strict": true,
6048
- "enableJsonFlag": true,
6049
- "title": "Check Release Updates of an org",
6050
- "requiresProject": false,
6051
- "isESM": true,
6052
- "relativePath": [
6053
- "lib",
6054
- "commands",
6055
- "hardis",
6056
- "org",
6057
- "diagnose",
6058
- "releaseupdates.js"
6059
- ],
6060
- "aliasPermutations": [],
6061
- "permutations": [
6062
- "hardis:org:diagnose:releaseupdates",
6063
- "org:hardis:diagnose:releaseupdates",
6064
- "org:diagnose:hardis:releaseupdates",
6065
- "org:diagnose:releaseupdates:hardis",
6066
- "hardis:diagnose:org:releaseupdates",
6067
- "diagnose:hardis:org:releaseupdates",
6068
- "diagnose:org:hardis:releaseupdates",
6069
- "diagnose:org:releaseupdates:hardis",
6070
- "hardis:diagnose:releaseupdates:org",
6071
- "diagnose:hardis:releaseupdates:org",
6072
- "diagnose:releaseupdates:hardis:org",
6073
- "diagnose:releaseupdates:org:hardis",
6074
- "hardis:org:releaseupdates:diagnose",
6075
- "org:hardis:releaseupdates:diagnose",
6076
- "org:releaseupdates:hardis:diagnose",
6077
- "org:releaseupdates:diagnose:hardis",
6078
- "hardis:releaseupdates:org:diagnose",
6079
- "releaseupdates:hardis:org:diagnose",
6080
- "releaseupdates:org:hardis:diagnose",
6081
- "releaseupdates:org:diagnose:hardis",
6082
- "hardis:releaseupdates:diagnose:org",
6083
- "releaseupdates:hardis:diagnose:org",
6084
- "releaseupdates:diagnose:hardis:org",
6085
- "releaseupdates:diagnose:org:hardis"
6086
- ]
6087
- },
6088
- "hardis:org:diagnose:unused-apex-classes": {
6089
- "aliases": [],
6090
- "args": {},
6091
- "description": "List all async Apex classes (Batch,Queueable,Schedulable) that has not been called for more than 365 days.\n \nThe result class list probably can be removed from the project, and that will improve your test classes performances :)\n\nThe number of unused day is overridable using --days option. \n\nThe command uses queries on AsyncApexJob and CronTrigger technical tables to build the result.\n\nApex Classes CreatedBy and CreatedOn fields are calculated from MIN(date from git, date from org)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-apex-classes/) and can output Grafana, Slack and MsTeams Notifications.\n\n![](https://sfdx-hardis.cloudity.com/assets/images/screenshot-monitoring-unused-apex-grafana.jpg)\n",
6092
- "examples": [
6093
- "$ sf hardis:org:diagnose:unused-apex-classes",
6094
- "$ sf hardis:org:diagnose:unused-apex-classes --days 700"
6095
- ],
6096
- "flags": {
6097
- "json": {
6098
- "description": "Format output as json.",
6099
- "helpGroup": "GLOBAL",
6100
- "name": "json",
6101
- "allowNo": false,
6102
- "type": "boolean"
6103
- },
6104
- "flags-dir": {
6105
- "helpGroup": "GLOBAL",
6106
- "name": "flags-dir",
6107
- "summary": "Import flag values from a directory.",
6108
- "hasDynamicHelp": false,
6109
- "multiple": false,
6110
- "type": "option"
6111
- },
6112
- "outputfile": {
6113
- "char": "f",
6114
- "description": "Force the path and name of output report file. Must end with .csv",
6115
- "name": "outputfile",
6116
- "hasDynamicHelp": false,
6117
- "multiple": false,
6118
- "type": "option"
6119
- },
6120
- "days": {
6121
- "char": "t",
6122
- "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6123
- "name": "days",
6124
- "hasDynamicHelp": false,
6125
- "multiple": false,
6126
- "type": "option"
6127
- },
6128
- "debug": {
6129
- "char": "d",
6130
- "description": "Activate debug mode (more logs)",
6131
- "name": "debug",
6132
- "allowNo": false,
6133
- "type": "boolean"
6134
- },
6135
- "websocket": {
6136
- "description": "Websocket host:port for VsCode SFDX Hardis UI integration",
6137
- "name": "websocket",
6138
- "hasDynamicHelp": false,
6139
- "multiple": false,
6140
- "type": "option"
6141
- },
6142
- "skipauth": {
6143
- "description": "Skip authentication check when a default username is required",
6144
- "name": "skipauth",
6145
- "allowNo": false,
6146
- "type": "boolean"
6147
- },
6148
- "target-org": {
6149
- "aliases": [
6150
- "targetusername",
6151
- "u"
6152
- ],
6153
- "char": "o",
6154
- "deprecateAliases": true,
6155
- "name": "target-org",
6156
- "noCacheDefault": true,
6157
- "required": true,
6158
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
6159
- "hasDynamicHelp": true,
6160
- "multiple": false,
6161
- "type": "option"
6162
- }
6163
- },
6164
- "hasDynamicHelp": true,
6165
- "hiddenAliases": [],
6166
- "id": "hardis:org:diagnose:unused-apex-classes",
6167
- "pluginAlias": "sfdx-hardis",
6168
- "pluginName": "sfdx-hardis",
6169
- "pluginType": "core",
6170
- "strict": true,
6171
- "enableJsonFlag": true,
6172
- "title": "Detect unused Apex classes in an org",
6173
- "requiresProject": false,
6174
- "isESM": true,
6175
- "relativePath": [
6176
- "lib",
6177
- "commands",
6178
- "hardis",
6179
- "org",
6180
- "diagnose",
6181
- "unused-apex-classes.js"
6182
- ],
6183
- "aliasPermutations": [],
6184
- "permutations": [
6185
- "hardis:org:diagnose:unused-apex-classes",
6186
- "org:hardis:diagnose:unused-apex-classes",
6187
- "org:diagnose:hardis:unused-apex-classes",
6188
- "org:diagnose:unused-apex-classes:hardis",
6189
- "hardis:diagnose:org:unused-apex-classes",
6190
- "diagnose:hardis:org:unused-apex-classes",
6191
- "diagnose:org:hardis:unused-apex-classes",
6192
- "diagnose:org:unused-apex-classes:hardis",
6193
- "hardis:diagnose:unused-apex-classes:org",
6194
- "diagnose:hardis:unused-apex-classes:org",
6195
- "diagnose:unused-apex-classes:hardis:org",
6196
- "diagnose:unused-apex-classes:org:hardis",
6197
- "hardis:org:unused-apex-classes:diagnose",
6198
- "org:hardis:unused-apex-classes:diagnose",
6199
- "org:unused-apex-classes:hardis:diagnose",
6200
- "org:unused-apex-classes:diagnose:hardis",
6201
- "hardis:unused-apex-classes:org:diagnose",
6202
- "unused-apex-classes:hardis:org:diagnose",
6203
- "unused-apex-classes:org:hardis:diagnose",
6204
- "unused-apex-classes:org:diagnose:hardis",
6205
- "hardis:unused-apex-classes:diagnose:org",
6206
- "unused-apex-classes:hardis:diagnose:org",
6207
- "unused-apex-classes:diagnose:hardis:org",
6208
- "unused-apex-classes:diagnose:org:hardis"
6209
- ]
6210
- },
6211
- "hardis:org:diagnose:unused-connected-apps": {
6212
- "aliases": [],
6213
- "args": {},
6214
- "description": "Request objects ConnectedApp, LoginHistory and OAuthToken to find which connected apps might not be used anymore, and could be deleted for security / technical debt reasons.\n\nCheck with Connected Apps metadatas if the app is still active (inactive = \"Admin Users are pre-authorized + no Profile or Permission set assigned\")\n\nThe following default Salesforce Connected Apps are ignored:\n\n- Ant Migration Tool\n- Chatter Desktop\n- Chatter Mobile for BlackBerry\n- Force.com IDE\n- OIQ_Integration\n- Salesforce CLI\n- Salesforce Files\n- Salesforce Mobile Dashboards\n- Salesforce Touch\n- Salesforce for Outlook\n- SalesforceA\n- SalesforceA for Android\n- SalesforceA for iOS\n- SalesforceDX Namespace Registry\n- SalesforceIQ\n\nYou can add more ignored apps by defining a comma-separated list of names in variable ALLOWED_INACTIVE_CONNECTED_APPS\n\n_Example: ALLOWED_INACTIVE_CONNECTED_APPS=My App 1,My App 2, My App 3_\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
6215
- "examples": [
6216
- "$ sf hardis:org:diagnose:unused-connected-apps"
6241
+ "$ sf hardis:org:diagnose:releaseupdates"
6217
6242
  ],
6218
6243
  "flags": {
6219
6244
  "json": {
@@ -6277,30 +6302,13 @@
6277
6302
  },
6278
6303
  "hasDynamicHelp": true,
6279
6304
  "hiddenAliases": [],
6280
- "id": "hardis:org:diagnose:unused-connected-apps",
6305
+ "id": "hardis:org:diagnose:releaseupdates",
6281
6306
  "pluginAlias": "sfdx-hardis",
6282
6307
  "pluginName": "sfdx-hardis",
6283
6308
  "pluginType": "core",
6284
6309
  "strict": true,
6285
6310
  "enableJsonFlag": true,
6286
- "title": "Unused Connected Apps in an org",
6287
- "allowedInactiveConnectedApps": [
6288
- "Ant Migration Tool",
6289
- "Chatter Desktop",
6290
- "Chatter Mobile for BlackBerry",
6291
- "Force.com IDE",
6292
- "OIQ_Integration",
6293
- "Salesforce CLI",
6294
- "Salesforce Files",
6295
- "Salesforce Mobile Dashboards",
6296
- "Salesforce Touch",
6297
- "Salesforce for Outlook",
6298
- "SalesforceA",
6299
- "SalesforceA for Android",
6300
- "SalesforceA for iOS",
6301
- "SalesforceDX Namespace Registry",
6302
- "SalesforceIQ"
6303
- ],
6311
+ "title": "Check Release Updates of an org",
6304
6312
  "requiresProject": false,
6305
6313
  "isESM": true,
6306
6314
  "relativePath": [
@@ -6309,43 +6317,43 @@
6309
6317
  "hardis",
6310
6318
  "org",
6311
6319
  "diagnose",
6312
- "unused-connected-apps.js"
6320
+ "releaseupdates.js"
6313
6321
  ],
6314
6322
  "aliasPermutations": [],
6315
6323
  "permutations": [
6316
- "hardis:org:diagnose:unused-connected-apps",
6317
- "org:hardis:diagnose:unused-connected-apps",
6318
- "org:diagnose:hardis:unused-connected-apps",
6319
- "org:diagnose:unused-connected-apps:hardis",
6320
- "hardis:diagnose:org:unused-connected-apps",
6321
- "diagnose:hardis:org:unused-connected-apps",
6322
- "diagnose:org:hardis:unused-connected-apps",
6323
- "diagnose:org:unused-connected-apps:hardis",
6324
- "hardis:diagnose:unused-connected-apps:org",
6325
- "diagnose:hardis:unused-connected-apps:org",
6326
- "diagnose:unused-connected-apps:hardis:org",
6327
- "diagnose:unused-connected-apps:org:hardis",
6328
- "hardis:org:unused-connected-apps:diagnose",
6329
- "org:hardis:unused-connected-apps:diagnose",
6330
- "org:unused-connected-apps:hardis:diagnose",
6331
- "org:unused-connected-apps:diagnose:hardis",
6332
- "hardis:unused-connected-apps:org:diagnose",
6333
- "unused-connected-apps:hardis:org:diagnose",
6334
- "unused-connected-apps:org:hardis:diagnose",
6335
- "unused-connected-apps:org:diagnose:hardis",
6336
- "hardis:unused-connected-apps:diagnose:org",
6337
- "unused-connected-apps:hardis:diagnose:org",
6338
- "unused-connected-apps:diagnose:hardis:org",
6339
- "unused-connected-apps:diagnose:org:hardis"
6324
+ "hardis:org:diagnose:releaseupdates",
6325
+ "org:hardis:diagnose:releaseupdates",
6326
+ "org:diagnose:hardis:releaseupdates",
6327
+ "org:diagnose:releaseupdates:hardis",
6328
+ "hardis:diagnose:org:releaseupdates",
6329
+ "diagnose:hardis:org:releaseupdates",
6330
+ "diagnose:org:hardis:releaseupdates",
6331
+ "diagnose:org:releaseupdates:hardis",
6332
+ "hardis:diagnose:releaseupdates:org",
6333
+ "diagnose:hardis:releaseupdates:org",
6334
+ "diagnose:releaseupdates:hardis:org",
6335
+ "diagnose:releaseupdates:org:hardis",
6336
+ "hardis:org:releaseupdates:diagnose",
6337
+ "org:hardis:releaseupdates:diagnose",
6338
+ "org:releaseupdates:hardis:diagnose",
6339
+ "org:releaseupdates:diagnose:hardis",
6340
+ "hardis:releaseupdates:org:diagnose",
6341
+ "releaseupdates:hardis:org:diagnose",
6342
+ "releaseupdates:org:hardis:diagnose",
6343
+ "releaseupdates:org:diagnose:hardis",
6344
+ "hardis:releaseupdates:diagnose:org",
6345
+ "releaseupdates:hardis:diagnose:org",
6346
+ "releaseupdates:diagnose:hardis:org",
6347
+ "releaseupdates:diagnose:org:hardis"
6340
6348
  ]
6341
6349
  },
6342
- "hardis:org:diagnose:unusedlicenses": {
6350
+ "hardis:org:diagnose:unused-apex-classes": {
6343
6351
  "aliases": [],
6344
6352
  "args": {},
6345
- "description": "When you assign a Permission Set to a user, and that this Permission Set is related to a Permission Set License, a Permission Set License Assignment is automatically created for the user.\n\nBut when you unassign this Permission Set from the user, **the Permission Set License Assignment is not deleted**.\n\nThis leads that you can be **charged for Permission Set Licenses that are not used** !\n\nThis command detects such useless Permission Set Licenses Assignments and suggests to delete them.\n\nMany thanks to [Vincent Finet](https://www.linkedin.com/in/vincentfinet/) for the inspiration during his great speaker session at [French Touch Dreamin '23](https://frenchtouchdreamin.com/), and his kind agreement for reusing such inspiration in this command :)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-licenses/) and can output Grafana, Slack and MsTeams Notifications.\n",
6353
+ "description": "List all async Apex classes (Batch,Queueable,Schedulable) that has not been called for more than 365 days.\n \nThe result class list probably can be removed from the project, and that will improve your test classes performances :)\n\nThe number of unused day is overridable using --days option. \n\nThe command uses queries on AsyncApexJob and CronTrigger technical tables to build the result.\n\nApex Classes CreatedBy and CreatedOn fields are calculated from MIN(date from git, date from org)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-apex-classes/) and can output Grafana, Slack and MsTeams Notifications.\n\n![](https://sfdx-hardis.cloudity.com/assets/images/screenshot-monitoring-unused-apex-grafana.jpg)\n",
6346
6354
  "examples": [
6347
- "$ sf hardis:org:diagnose:unusedlicenses",
6348
- "$ sf hardis:org:diagnose:unusedlicenses --fix"
6355
+ "$ sf hardis:org:diagnose:unused-apex-classes",
6356
+ "$ sf hardis:org:diagnose:unused-apex-classes --days 700"
6349
6357
  ],
6350
6358
  "flags": {
6351
6359
  "json": {
@@ -6371,6 +6379,14 @@
6371
6379
  "multiple": false,
6372
6380
  "type": "option"
6373
6381
  },
6382
+ "days": {
6383
+ "char": "t",
6384
+ "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6385
+ "name": "days",
6386
+ "hasDynamicHelp": false,
6387
+ "multiple": false,
6388
+ "type": "option"
6389
+ },
6374
6390
  "debug": {
6375
6391
  "char": "d",
6376
6392
  "description": "Activate debug mode (more logs)",
@@ -6409,32 +6425,14 @@
6409
6425
  },
6410
6426
  "hasDynamicHelp": true,
6411
6427
  "hiddenAliases": [],
6412
- "id": "hardis:org:diagnose:unusedlicenses",
6428
+ "id": "hardis:org:diagnose:unused-apex-classes",
6413
6429
  "pluginAlias": "sfdx-hardis",
6414
6430
  "pluginName": "sfdx-hardis",
6415
6431
  "pluginType": "core",
6416
6432
  "strict": true,
6417
6433
  "enableJsonFlag": true,
6418
- "title": "Detect unused Permission Set Licenses (beta)",
6434
+ "title": "Detect unused Apex classes in an org",
6419
6435
  "requiresProject": false,
6420
- "additionalPermissionSetsToAlwaysGet": [
6421
- "Sales_User"
6422
- ],
6423
- "permSetsPermSetLicenses": [
6424
- {
6425
- "permSet": "Sales_User",
6426
- "permSetLicense": "SalesUserPsl"
6427
- }
6428
- ],
6429
- "profilesPermissionSetLicenses": [
6430
- {
6431
- "profile": "Salesforce API Only",
6432
- "permSetLicense": "SalesforceAPIIntegrationPsl"
6433
- }
6434
- ],
6435
- "alwaysExcludeForActiveUsersPermissionSetLicenses": [
6436
- "IdentityConnect"
6437
- ],
6438
6436
  "isESM": true,
6439
6437
  "relativePath": [
6440
6438
  "lib",
@@ -6442,46 +6440,42 @@
6442
6440
  "hardis",
6443
6441
  "org",
6444
6442
  "diagnose",
6445
- "unusedlicenses.js"
6443
+ "unused-apex-classes.js"
6446
6444
  ],
6447
6445
  "aliasPermutations": [],
6448
6446
  "permutations": [
6449
- "hardis:org:diagnose:unusedlicenses",
6450
- "org:hardis:diagnose:unusedlicenses",
6451
- "org:diagnose:hardis:unusedlicenses",
6452
- "org:diagnose:unusedlicenses:hardis",
6453
- "hardis:diagnose:org:unusedlicenses",
6454
- "diagnose:hardis:org:unusedlicenses",
6455
- "diagnose:org:hardis:unusedlicenses",
6456
- "diagnose:org:unusedlicenses:hardis",
6457
- "hardis:diagnose:unusedlicenses:org",
6458
- "diagnose:hardis:unusedlicenses:org",
6459
- "diagnose:unusedlicenses:hardis:org",
6460
- "diagnose:unusedlicenses:org:hardis",
6461
- "hardis:org:unusedlicenses:diagnose",
6462
- "org:hardis:unusedlicenses:diagnose",
6463
- "org:unusedlicenses:hardis:diagnose",
6464
- "org:unusedlicenses:diagnose:hardis",
6465
- "hardis:unusedlicenses:org:diagnose",
6466
- "unusedlicenses:hardis:org:diagnose",
6467
- "unusedlicenses:org:hardis:diagnose",
6468
- "unusedlicenses:org:diagnose:hardis",
6469
- "hardis:unusedlicenses:diagnose:org",
6470
- "unusedlicenses:hardis:diagnose:org",
6471
- "unusedlicenses:diagnose:hardis:org",
6472
- "unusedlicenses:diagnose:org:hardis"
6447
+ "hardis:org:diagnose:unused-apex-classes",
6448
+ "org:hardis:diagnose:unused-apex-classes",
6449
+ "org:diagnose:hardis:unused-apex-classes",
6450
+ "org:diagnose:unused-apex-classes:hardis",
6451
+ "hardis:diagnose:org:unused-apex-classes",
6452
+ "diagnose:hardis:org:unused-apex-classes",
6453
+ "diagnose:org:hardis:unused-apex-classes",
6454
+ "diagnose:org:unused-apex-classes:hardis",
6455
+ "hardis:diagnose:unused-apex-classes:org",
6456
+ "diagnose:hardis:unused-apex-classes:org",
6457
+ "diagnose:unused-apex-classes:hardis:org",
6458
+ "diagnose:unused-apex-classes:org:hardis",
6459
+ "hardis:org:unused-apex-classes:diagnose",
6460
+ "org:hardis:unused-apex-classes:diagnose",
6461
+ "org:unused-apex-classes:hardis:diagnose",
6462
+ "org:unused-apex-classes:diagnose:hardis",
6463
+ "hardis:unused-apex-classes:org:diagnose",
6464
+ "unused-apex-classes:hardis:org:diagnose",
6465
+ "unused-apex-classes:org:hardis:diagnose",
6466
+ "unused-apex-classes:org:diagnose:hardis",
6467
+ "hardis:unused-apex-classes:diagnose:org",
6468
+ "unused-apex-classes:hardis:diagnose:org",
6469
+ "unused-apex-classes:diagnose:hardis:org",
6470
+ "unused-apex-classes:diagnose:org:hardis"
6473
6471
  ]
6474
6472
  },
6475
- "hardis:org:diagnose:unusedusers": {
6473
+ "hardis:org:diagnose:unused-connected-apps": {
6476
6474
  "aliases": [],
6477
6475
  "args": {},
6478
- "description": "Efficient user management is vital in Salesforce to ensure resources are optimized and costs are controlled. However, inactive or unused user accounts can often go unnoticed, leading to wasted licenses and potential security risks. This tool addresses this challenge by enabling administrators to identify users who haven't logged in within a specified period.\n\nBy analyzing user login activity and last login timestamps, this feature highlights inactive user accounts, allowing administrators to take appropriate action. Whether it's deactivating dormant accounts, freeing up licenses, or ensuring compliance with security policies, this functionality empowers administrators to maintain a lean and secure Salesforce environment.\n\nlicensetypes values are the following:\n\n- all-crm: SFDC,AUL,AUL1,AULL_IGHT\n\n- all-paying: SFDC,AUL,AUL1,AULL_IGHT,PID_Customer_Community,PID_Customer_Community_Login,PID_Partner_Community,PID_Partner_Community_Login\n\nNote: You can see the full list of available license identifiers in [Salesforce Documentation](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm)\n\nUse --returnactiveusers to revert the command and retrieve active users that has logged in during the period.\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-users/) and can output Grafana, Slack and MsTeams Notifications.\n",
6476
+ "description": "Request objects ConnectedApp, LoginHistory and OAuthToken to find which connected apps might not be used anymore, and could be deleted for security / technical debt reasons.\n\nCheck with Connected Apps metadatas if the app is still active (inactive = \"Admin Users are pre-authorized + no Profile or Permission set assigned\")\n\nThe following default Salesforce Connected Apps are ignored:\n\n- Ant Migration Tool\n- Chatter Desktop\n- Chatter Mobile for BlackBerry\n- Force.com IDE\n- OIQ_Integration\n- Salesforce CLI\n- Salesforce Files\n- Salesforce Mobile Dashboards\n- Salesforce Touch\n- Salesforce for Outlook\n- SalesforceA\n- SalesforceA for Android\n- SalesforceA for iOS\n- SalesforceDX Namespace Registry\n- SalesforceIQ\n\nYou can add more ignored apps by defining a comma-separated list of names in variable ALLOWED_INACTIVE_CONNECTED_APPS\n\n_Example: ALLOWED_INACTIVE_CONNECTED_APPS=My App 1,My App 2, My App 3_\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-release-updates/) and can output Grafana, Slack and MsTeams Notifications.\n",
6479
6477
  "examples": [
6480
- "$ sf hardis:org:diagnose:unusedusers",
6481
- "$ sf hardis:org:diagnose:unusedusers --days 365",
6482
- "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm",
6483
- "$ sf hardis:org:diagnose:unusedusers --days 60 --licenseidentifiers SFDC,AUL,AUL1",
6484
- "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm --returnactiveusers"
6478
+ "$ sf hardis:org:diagnose:unused-connected-apps"
6485
6479
  ],
6486
6480
  "flags": {
6487
6481
  "json": {
@@ -6507,41 +6501,6 @@
6507
6501
  "multiple": false,
6508
6502
  "type": "option"
6509
6503
  },
6510
- "days": {
6511
- "char": "t",
6512
- "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6513
- "name": "days",
6514
- "hasDynamicHelp": false,
6515
- "multiple": false,
6516
- "type": "option"
6517
- },
6518
- "licensetypes": {
6519
- "char": "l",
6520
- "description": "Type of licenses to check. If set, do not use licenseidentifiers option. In CI, default is all-crm",
6521
- "name": "licensetypes",
6522
- "hasDynamicHelp": false,
6523
- "multiple": false,
6524
- "options": [
6525
- "all",
6526
- "all-crm",
6527
- "all-paying"
6528
- ],
6529
- "type": "option"
6530
- },
6531
- "licenseidentifiers": {
6532
- "char": "i",
6533
- "description": "Comma-separated list of license identifiers, in case licensetypes is not used.. Identifiers available at https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm",
6534
- "name": "licenseidentifiers",
6535
- "hasDynamicHelp": false,
6536
- "multiple": false,
6537
- "type": "option"
6538
- },
6539
- "returnactiveusers": {
6540
- "description": "Inverts the command by returning the active users",
6541
- "name": "returnactiveusers",
6542
- "allowNo": false,
6543
- "type": "boolean"
6544
- },
6545
6504
  "debug": {
6546
6505
  "char": "d",
6547
6506
  "description": "Activate debug mode (more logs)",
@@ -6580,57 +6539,75 @@
6580
6539
  },
6581
6540
  "hasDynamicHelp": true,
6582
6541
  "hiddenAliases": [],
6583
- "id": "hardis:org:diagnose:unusedusers",
6542
+ "id": "hardis:org:diagnose:unused-connected-apps",
6584
6543
  "pluginAlias": "sfdx-hardis",
6585
6544
  "pluginName": "sfdx-hardis",
6586
6545
  "pluginType": "core",
6587
6546
  "strict": true,
6588
6547
  "enableJsonFlag": true,
6589
- "title": "Detect unused Users in Salesforce",
6548
+ "title": "Unused Connected Apps in an org",
6549
+ "allowedInactiveConnectedApps": [
6550
+ "Ant Migration Tool",
6551
+ "Chatter Desktop",
6552
+ "Chatter Mobile for BlackBerry",
6553
+ "Force.com IDE",
6554
+ "OIQ_Integration",
6555
+ "Salesforce CLI",
6556
+ "Salesforce Files",
6557
+ "Salesforce Mobile Dashboards",
6558
+ "Salesforce Touch",
6559
+ "Salesforce for Outlook",
6560
+ "SalesforceA",
6561
+ "SalesforceA for Android",
6562
+ "SalesforceA for iOS",
6563
+ "SalesforceDX Namespace Registry",
6564
+ "SalesforceIQ"
6565
+ ],
6590
6566
  "requiresProject": false,
6591
6567
  "isESM": true,
6592
6568
  "relativePath": [
6593
6569
  "lib",
6594
6570
  "commands",
6595
6571
  "hardis",
6596
- "org",
6597
- "diagnose",
6598
- "unusedusers.js"
6599
- ],
6600
- "aliasPermutations": [],
6601
- "permutations": [
6602
- "hardis:org:diagnose:unusedusers",
6603
- "org:hardis:diagnose:unusedusers",
6604
- "org:diagnose:hardis:unusedusers",
6605
- "org:diagnose:unusedusers:hardis",
6606
- "hardis:diagnose:org:unusedusers",
6607
- "diagnose:hardis:org:unusedusers",
6608
- "diagnose:org:hardis:unusedusers",
6609
- "diagnose:org:unusedusers:hardis",
6610
- "hardis:diagnose:unusedusers:org",
6611
- "diagnose:hardis:unusedusers:org",
6612
- "diagnose:unusedusers:hardis:org",
6613
- "diagnose:unusedusers:org:hardis",
6614
- "hardis:org:unusedusers:diagnose",
6615
- "org:hardis:unusedusers:diagnose",
6616
- "org:unusedusers:hardis:diagnose",
6617
- "org:unusedusers:diagnose:hardis",
6618
- "hardis:unusedusers:org:diagnose",
6619
- "unusedusers:hardis:org:diagnose",
6620
- "unusedusers:org:hardis:diagnose",
6621
- "unusedusers:org:diagnose:hardis",
6622
- "hardis:unusedusers:diagnose:org",
6623
- "unusedusers:hardis:diagnose:org",
6624
- "unusedusers:diagnose:hardis:org",
6625
- "unusedusers:diagnose:org:hardis"
6572
+ "org",
6573
+ "diagnose",
6574
+ "unused-connected-apps.js"
6575
+ ],
6576
+ "aliasPermutations": [],
6577
+ "permutations": [
6578
+ "hardis:org:diagnose:unused-connected-apps",
6579
+ "org:hardis:diagnose:unused-connected-apps",
6580
+ "org:diagnose:hardis:unused-connected-apps",
6581
+ "org:diagnose:unused-connected-apps:hardis",
6582
+ "hardis:diagnose:org:unused-connected-apps",
6583
+ "diagnose:hardis:org:unused-connected-apps",
6584
+ "diagnose:org:hardis:unused-connected-apps",
6585
+ "diagnose:org:unused-connected-apps:hardis",
6586
+ "hardis:diagnose:unused-connected-apps:org",
6587
+ "diagnose:hardis:unused-connected-apps:org",
6588
+ "diagnose:unused-connected-apps:hardis:org",
6589
+ "diagnose:unused-connected-apps:org:hardis",
6590
+ "hardis:org:unused-connected-apps:diagnose",
6591
+ "org:hardis:unused-connected-apps:diagnose",
6592
+ "org:unused-connected-apps:hardis:diagnose",
6593
+ "org:unused-connected-apps:diagnose:hardis",
6594
+ "hardis:unused-connected-apps:org:diagnose",
6595
+ "unused-connected-apps:hardis:org:diagnose",
6596
+ "unused-connected-apps:org:hardis:diagnose",
6597
+ "unused-connected-apps:org:diagnose:hardis",
6598
+ "hardis:unused-connected-apps:diagnose:org",
6599
+ "unused-connected-apps:hardis:diagnose:org",
6600
+ "unused-connected-apps:diagnose:hardis:org",
6601
+ "unused-connected-apps:diagnose:org:hardis"
6626
6602
  ]
6627
6603
  },
6628
- "hardis:org:files:export": {
6604
+ "hardis:org:diagnose:unusedlicenses": {
6629
6605
  "aliases": [],
6630
6606
  "args": {},
6631
- "description": "Export file attachments from a Salesforce org\n\nHandles:\n\n- ContentVersion\n- Attachment\n\nSee article below:\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
6607
+ "description": "When you assign a Permission Set to a user, and that this Permission Set is related to a Permission Set License, a Permission Set License Assignment is automatically created for the user.\n\nBut when you unassign this Permission Set from the user, **the Permission Set License Assignment is not deleted**.\n\nThis leads that you can be **charged for Permission Set Licenses that are not used** !\n\nThis command detects such useless Permission Set Licenses Assignments and suggests to delete them.\n\nMany thanks to [Vincent Finet](https://www.linkedin.com/in/vincentfinet/) for the inspiration during his great speaker session at [French Touch Dreamin '23](https://frenchtouchdreamin.com/), and his kind agreement for reusing such inspiration in this command :)\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-unused-licenses/) and can output Grafana, Slack and MsTeams Notifications.\n",
6632
6608
  "examples": [
6633
- "$ sf hardis:org:files:export"
6609
+ "$ sf hardis:org:diagnose:unusedlicenses",
6610
+ "$ sf hardis:org:diagnose:unusedlicenses --fix"
6634
6611
  ],
6635
6612
  "flags": {
6636
6613
  "json": {
@@ -6648,37 +6625,10 @@
6648
6625
  "multiple": false,
6649
6626
  "type": "option"
6650
6627
  },
6651
- "path": {
6652
- "char": "p",
6653
- "description": "Path to the file export project",
6654
- "name": "path",
6655
- "hasDynamicHelp": false,
6656
- "multiple": false,
6657
- "type": "option"
6658
- },
6659
- "chunksize": {
6660
- "char": "c",
6661
- "description": "Number of records to add in a chunk before it is processed",
6662
- "name": "chunksize",
6663
- "default": 1000,
6664
- "hasDynamicHelp": false,
6665
- "multiple": false,
6666
- "type": "option"
6667
- },
6668
- "polltimeout": {
6669
- "char": "t",
6670
- "description": "Timeout in MS for Bulk API calls",
6671
- "name": "polltimeout",
6672
- "default": 300000,
6673
- "hasDynamicHelp": false,
6674
- "multiple": false,
6675
- "type": "option"
6676
- },
6677
- "startchunknumber": {
6678
- "char": "s",
6679
- "description": "Chunk number to start from",
6680
- "name": "startchunknumber",
6681
- "default": 0,
6628
+ "outputfile": {
6629
+ "char": "f",
6630
+ "description": "Force the path and name of output report file. Must end with .csv",
6631
+ "name": "outputfile",
6682
6632
  "hasDynamicHelp": false,
6683
6633
  "multiple": false,
6684
6634
  "type": "option"
@@ -6721,57 +6671,79 @@
6721
6671
  },
6722
6672
  "hasDynamicHelp": true,
6723
6673
  "hiddenAliases": [],
6724
- "id": "hardis:org:files:export",
6674
+ "id": "hardis:org:diagnose:unusedlicenses",
6725
6675
  "pluginAlias": "sfdx-hardis",
6726
6676
  "pluginName": "sfdx-hardis",
6727
6677
  "pluginType": "core",
6728
6678
  "strict": true,
6729
6679
  "enableJsonFlag": true,
6730
- "title": "Export files",
6680
+ "title": "Detect unused Permission Set Licenses (beta)",
6731
6681
  "requiresProject": false,
6682
+ "additionalPermissionSetsToAlwaysGet": [
6683
+ "Sales_User"
6684
+ ],
6685
+ "permSetsPermSetLicenses": [
6686
+ {
6687
+ "permSet": "Sales_User",
6688
+ "permSetLicense": "SalesUserPsl"
6689
+ }
6690
+ ],
6691
+ "profilesPermissionSetLicenses": [
6692
+ {
6693
+ "profile": "Salesforce API Only",
6694
+ "permSetLicense": "SalesforceAPIIntegrationPsl"
6695
+ }
6696
+ ],
6697
+ "alwaysExcludeForActiveUsersPermissionSetLicenses": [
6698
+ "IdentityConnect"
6699
+ ],
6732
6700
  "isESM": true,
6733
6701
  "relativePath": [
6734
6702
  "lib",
6735
6703
  "commands",
6736
6704
  "hardis",
6737
6705
  "org",
6738
- "files",
6739
- "export.js"
6706
+ "diagnose",
6707
+ "unusedlicenses.js"
6740
6708
  ],
6741
6709
  "aliasPermutations": [],
6742
6710
  "permutations": [
6743
- "hardis:org:files:export",
6744
- "org:hardis:files:export",
6745
- "org:files:hardis:export",
6746
- "org:files:export:hardis",
6747
- "hardis:files:org:export",
6748
- "files:hardis:org:export",
6749
- "files:org:hardis:export",
6750
- "files:org:export:hardis",
6751
- "hardis:files:export:org",
6752
- "files:hardis:export:org",
6753
- "files:export:hardis:org",
6754
- "files:export:org:hardis",
6755
- "hardis:org:export:files",
6756
- "org:hardis:export:files",
6757
- "org:export:hardis:files",
6758
- "org:export:files:hardis",
6759
- "hardis:export:org:files",
6760
- "export:hardis:org:files",
6761
- "export:org:hardis:files",
6762
- "export:org:files:hardis",
6763
- "hardis:export:files:org",
6764
- "export:hardis:files:org",
6765
- "export:files:hardis:org",
6766
- "export:files:org:hardis"
6711
+ "hardis:org:diagnose:unusedlicenses",
6712
+ "org:hardis:diagnose:unusedlicenses",
6713
+ "org:diagnose:hardis:unusedlicenses",
6714
+ "org:diagnose:unusedlicenses:hardis",
6715
+ "hardis:diagnose:org:unusedlicenses",
6716
+ "diagnose:hardis:org:unusedlicenses",
6717
+ "diagnose:org:hardis:unusedlicenses",
6718
+ "diagnose:org:unusedlicenses:hardis",
6719
+ "hardis:diagnose:unusedlicenses:org",
6720
+ "diagnose:hardis:unusedlicenses:org",
6721
+ "diagnose:unusedlicenses:hardis:org",
6722
+ "diagnose:unusedlicenses:org:hardis",
6723
+ "hardis:org:unusedlicenses:diagnose",
6724
+ "org:hardis:unusedlicenses:diagnose",
6725
+ "org:unusedlicenses:hardis:diagnose",
6726
+ "org:unusedlicenses:diagnose:hardis",
6727
+ "hardis:unusedlicenses:org:diagnose",
6728
+ "unusedlicenses:hardis:org:diagnose",
6729
+ "unusedlicenses:org:hardis:diagnose",
6730
+ "unusedlicenses:org:diagnose:hardis",
6731
+ "hardis:unusedlicenses:diagnose:org",
6732
+ "unusedlicenses:hardis:diagnose:org",
6733
+ "unusedlicenses:diagnose:hardis:org",
6734
+ "unusedlicenses:diagnose:org:hardis"
6767
6735
  ]
6768
6736
  },
6769
- "hardis:org:files:import": {
6737
+ "hardis:org:diagnose:unusedusers": {
6770
6738
  "aliases": [],
6771
6739
  "args": {},
6772
- "description": "Import file attachments into a Salesforce org\n\nSee article below to see how to Export them.\n\n[![How to mass download notes and attachments files from a Salesforce org](https://github.com/hardisgroupcom/sfdx-hardis/raw/main/docs/assets/images/article-mass-download.jpg)](https://nicolas.vuillamy.fr/how-to-mass-download-notes-and-attachments-files-from-a-salesforce-org-83a028824afd)\n",
6740
+ "description": "Efficient user management is vital in Salesforce to ensure resources are optimized and costs are controlled. However, inactive or unused user accounts can often go unnoticed, leading to wasted licenses and potential security risks. This tool addresses this challenge by enabling administrators to identify users who haven't logged in within a specified period.\n\nBy analyzing user login activity and last login timestamps, this feature highlights inactive user accounts, allowing administrators to take appropriate action. Whether it's deactivating dormant accounts, freeing up licenses, or ensuring compliance with security policies, this functionality empowers administrators to maintain a lean and secure Salesforce environment.\n\nlicensetypes values are the following:\n\n- all-crm: SFDC,AUL,AUL1,AULL_IGHT\n\n- all-paying: SFDC,AUL,AUL1,AULL_IGHT,PID_Customer_Community,PID_Customer_Community_Login,PID_Partner_Community,PID_Partner_Community_Login\n\nNote: You can see the full list of available license identifiers in [Salesforce Documentation](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm)\n\nUse --returnactiveusers to revert the command and retrieve active users that has logged in during the period.\n\nThis command is part of [sfdx-hardis Monitoring](https://sfdx-hardis.cloudity.com/salesforce-monitoring-inactive-users/) and can output Grafana, Slack and MsTeams Notifications.\n",
6773
6741
  "examples": [
6774
- "$ sf hardis:org:files:import"
6742
+ "$ sf hardis:org:diagnose:unusedusers",
6743
+ "$ sf hardis:org:diagnose:unusedusers --days 365",
6744
+ "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm",
6745
+ "$ sf hardis:org:diagnose:unusedusers --days 60 --licenseidentifiers SFDC,AUL,AUL1",
6746
+ "$ sf hardis:org:diagnose:unusedusers --days 60 --licensetypes all-crm --returnactiveusers"
6775
6747
  ],
6776
6748
  "flags": {
6777
6749
  "json": {
@@ -6789,18 +6761,46 @@
6789
6761
  "multiple": false,
6790
6762
  "type": "option"
6791
6763
  },
6792
- "path": {
6793
- "char": "p",
6794
- "description": "Path to the file export project",
6795
- "name": "path",
6764
+ "outputfile": {
6765
+ "char": "f",
6766
+ "description": "Force the path and name of output report file. Must end with .csv",
6767
+ "name": "outputfile",
6796
6768
  "hasDynamicHelp": false,
6797
6769
  "multiple": false,
6798
6770
  "type": "option"
6799
6771
  },
6800
- "overwrite": {
6801
- "char": "f",
6802
- "description": "Override existing files (doubles the number of API calls)",
6803
- "name": "overwrite",
6772
+ "days": {
6773
+ "char": "t",
6774
+ "description": "Extracts the users that have been inactive for the amount of days specified. In CI, default is 180 days",
6775
+ "name": "days",
6776
+ "hasDynamicHelp": false,
6777
+ "multiple": false,
6778
+ "type": "option"
6779
+ },
6780
+ "licensetypes": {
6781
+ "char": "l",
6782
+ "description": "Type of licenses to check. If set, do not use licenseidentifiers option. In CI, default is all-crm",
6783
+ "name": "licensetypes",
6784
+ "hasDynamicHelp": false,
6785
+ "multiple": false,
6786
+ "options": [
6787
+ "all",
6788
+ "all-crm",
6789
+ "all-paying"
6790
+ ],
6791
+ "type": "option"
6792
+ },
6793
+ "licenseidentifiers": {
6794
+ "char": "i",
6795
+ "description": "Comma-separated list of license identifiers, in case licensetypes is not used.. Identifiers available at https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_userlicense.htm",
6796
+ "name": "licenseidentifiers",
6797
+ "hasDynamicHelp": false,
6798
+ "multiple": false,
6799
+ "type": "option"
6800
+ },
6801
+ "returnactiveusers": {
6802
+ "description": "Inverts the command by returning the active users",
6803
+ "name": "returnactiveusers",
6804
6804
  "allowNo": false,
6805
6805
  "type": "boolean"
6806
6806
  },
@@ -6842,13 +6842,13 @@
6842
6842
  },
6843
6843
  "hasDynamicHelp": true,
6844
6844
  "hiddenAliases": [],
6845
- "id": "hardis:org:files:import",
6845
+ "id": "hardis:org:diagnose:unusedusers",
6846
6846
  "pluginAlias": "sfdx-hardis",
6847
6847
  "pluginName": "sfdx-hardis",
6848
6848
  "pluginType": "core",
6849
6849
  "strict": true,
6850
6850
  "enableJsonFlag": true,
6851
- "title": "Import files",
6851
+ "title": "Detect unused Users in Salesforce",
6852
6852
  "requiresProject": false,
6853
6853
  "isESM": true,
6854
6854
  "relativePath": [
@@ -6856,35 +6856,35 @@
6856
6856
  "commands",
6857
6857
  "hardis",
6858
6858
  "org",
6859
- "files",
6860
- "import.js"
6859
+ "diagnose",
6860
+ "unusedusers.js"
6861
6861
  ],
6862
6862
  "aliasPermutations": [],
6863
6863
  "permutations": [
6864
- "hardis:org:files:import",
6865
- "org:hardis:files:import",
6866
- "org:files:hardis:import",
6867
- "org:files:import:hardis",
6868
- "hardis:files:org:import",
6869
- "files:hardis:org:import",
6870
- "files:org:hardis:import",
6871
- "files:org:import:hardis",
6872
- "hardis:files:import:org",
6873
- "files:hardis:import:org",
6874
- "files:import:hardis:org",
6875
- "files:import:org:hardis",
6876
- "hardis:org:import:files",
6877
- "org:hardis:import:files",
6878
- "org:import:hardis:files",
6879
- "org:import:files:hardis",
6880
- "hardis:import:org:files",
6881
- "import:hardis:org:files",
6882
- "import:org:hardis:files",
6883
- "import:org:files:hardis",
6884
- "hardis:import:files:org",
6885
- "import:hardis:files:org",
6886
- "import:files:hardis:org",
6887
- "import:files:org:hardis"
6864
+ "hardis:org:diagnose:unusedusers",
6865
+ "org:hardis:diagnose:unusedusers",
6866
+ "org:diagnose:hardis:unusedusers",
6867
+ "org:diagnose:unusedusers:hardis",
6868
+ "hardis:diagnose:org:unusedusers",
6869
+ "diagnose:hardis:org:unusedusers",
6870
+ "diagnose:org:hardis:unusedusers",
6871
+ "diagnose:org:unusedusers:hardis",
6872
+ "hardis:diagnose:unusedusers:org",
6873
+ "diagnose:hardis:unusedusers:org",
6874
+ "diagnose:unusedusers:hardis:org",
6875
+ "diagnose:unusedusers:org:hardis",
6876
+ "hardis:org:unusedusers:diagnose",
6877
+ "org:hardis:unusedusers:diagnose",
6878
+ "org:unusedusers:hardis:diagnose",
6879
+ "org:unusedusers:diagnose:hardis",
6880
+ "hardis:unusedusers:org:diagnose",
6881
+ "unusedusers:hardis:org:diagnose",
6882
+ "unusedusers:org:hardis:diagnose",
6883
+ "unusedusers:org:diagnose:hardis",
6884
+ "hardis:unusedusers:diagnose:org",
6885
+ "unusedusers:hardis:diagnose:org",
6886
+ "unusedusers:diagnose:hardis:org",
6887
+ "unusedusers:diagnose:org:hardis"
6888
6888
  ]
6889
6889
  },
6890
6890
  "hardis:org:fix:listviewmine": {
@@ -14843,5 +14843,5 @@
14843
14843
  ]
14844
14844
  }
14845
14845
  },
14846
- "version": "5.44.2-alpha202507221146.0"
14846
+ "version": "5.44.2-alpha202507221159.0"
14847
14847
  }