nativescript 8.9.0-dev.2 → 8.9.0-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/widget-ios.md +24 -0
  3. package/docs/man_pages/project/configuration/widget.md +24 -0
  4. package/docs/man_pages/start.md +1 -1
  5. package/lib/android-tools-info.js +11 -22
  6. package/lib/base-package-manager.js +53 -70
  7. package/lib/bun-package-manager.js +75 -98
  8. package/lib/color.js +4 -4
  9. package/lib/commands/add-platform.js +14 -30
  10. package/lib/commands/apple-login.js +18 -29
  11. package/lib/commands/appstore-list.js +34 -45
  12. package/lib/commands/appstore-upload.js +54 -67
  13. package/lib/commands/build.js +55 -87
  14. package/lib/commands/clean.js +169 -184
  15. package/lib/commands/command-base.js +14 -27
  16. package/lib/commands/config.js +49 -68
  17. package/lib/commands/create-project.js +215 -234
  18. package/lib/commands/debug.js +66 -88
  19. package/lib/commands/deploy.js +28 -44
  20. package/lib/commands/embedding/embed.js +37 -56
  21. package/lib/commands/extensibility/install-extension.js +5 -16
  22. package/lib/commands/extensibility/list-extensions.js +13 -24
  23. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  24. package/lib/commands/fonts.js +30 -41
  25. package/lib/commands/generate-assets.js +13 -28
  26. package/lib/commands/generate-help.js +2 -13
  27. package/lib/commands/generate.js +49 -60
  28. package/lib/commands/info.js +2 -13
  29. package/lib/commands/install.js +34 -49
  30. package/lib/commands/list-platforms.js +14 -25
  31. package/lib/commands/migrate.js +15 -26
  32. package/lib/commands/native-add.js +23 -46
  33. package/lib/commands/platform-clean.js +19 -32
  34. package/lib/commands/plugin/add-plugin.js +12 -25
  35. package/lib/commands/plugin/build-plugin.js +31 -44
  36. package/lib/commands/plugin/create-plugin.js +114 -137
  37. package/lib/commands/plugin/list-plugins.js +22 -33
  38. package/lib/commands/plugin/remove-plugin.js +21 -34
  39. package/lib/commands/plugin/update-plugin.js +20 -33
  40. package/lib/commands/post-install.js +25 -38
  41. package/lib/commands/prepare.js +19 -35
  42. package/lib/commands/preview.js +50 -63
  43. package/lib/commands/remove-platform.js +7 -18
  44. package/lib/commands/resources/resources-update.js +14 -27
  45. package/lib/commands/run.js +55 -76
  46. package/lib/commands/start.js +6 -19
  47. package/lib/commands/test-init.js +126 -137
  48. package/lib/commands/test.js +72 -95
  49. package/lib/commands/typings.js +126 -142
  50. package/lib/commands/update-platform.js +26 -39
  51. package/lib/commands/update.js +31 -44
  52. package/lib/commands/widget.js +408 -357
  53. package/lib/common/child-process.js +53 -72
  54. package/lib/common/codeGeneration/code-entity.js +1 -1
  55. package/lib/common/codeGeneration/code-printer.js +1 -1
  56. package/lib/common/command-params.js +7 -18
  57. package/lib/common/commands/analytics.js +29 -42
  58. package/lib/common/commands/autocompletion.js +41 -58
  59. package/lib/common/commands/device/device-log-stream.js +12 -23
  60. package/lib/common/commands/device/get-file.js +23 -34
  61. package/lib/common/commands/device/list-applications.js +12 -23
  62. package/lib/common/commands/device/list-devices.js +72 -87
  63. package/lib/common/commands/device/list-files.js +24 -35
  64. package/lib/common/commands/device/put-file.js +23 -34
  65. package/lib/common/commands/device/run-application.js +12 -25
  66. package/lib/common/commands/device/stop-application.js +11 -22
  67. package/lib/common/commands/device/uninstall-application.js +6 -17
  68. package/lib/common/commands/generate-messages.js +17 -28
  69. package/lib/common/commands/help.js +20 -33
  70. package/lib/common/commands/package-manager-get.js +6 -17
  71. package/lib/common/commands/package-manager-set.js +9 -20
  72. package/lib/common/commands/post-install.js +2 -13
  73. package/lib/common/commands/preuninstall.js +27 -42
  74. package/lib/common/commands/proxy/proxy-base.js +11 -22
  75. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  76. package/lib/common/commands/proxy/proxy-get.js +3 -14
  77. package/lib/common/commands/proxy/proxy-set.js +87 -100
  78. package/lib/common/constants.js +11 -11
  79. package/lib/common/decorators.js +10 -22
  80. package/lib/common/dispatchers.js +84 -101
  81. package/lib/common/errors.js +92 -107
  82. package/lib/common/file-system.js +110 -132
  83. package/lib/common/header.js +1 -2
  84. package/lib/common/helpers.js +149 -178
  85. package/lib/common/host-info.js +40 -53
  86. package/lib/common/http-client.js +104 -119
  87. package/lib/common/logger/appenders/cli-appender.js +1 -2
  88. package/lib/common/logger/appenders/emit-appender.js +1 -2
  89. package/lib/common/logger/layouts/cli-layout.js +1 -2
  90. package/lib/common/logger/logger.js +4 -4
  91. package/lib/common/mobile/android/android-application-manager.js +138 -159
  92. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  93. package/lib/common/mobile/android/android-debug-bridge.js +92 -117
  94. package/lib/common/mobile/android/android-device-file-system.js +101 -134
  95. package/lib/common/mobile/android/android-device-hash-service.js +52 -77
  96. package/lib/common/mobile/android/android-device.js +73 -90
  97. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  98. package/lib/common/mobile/android/android-log-filter.js +1 -1
  99. package/lib/common/mobile/android/android-virtual-device-service.js +78 -99
  100. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  101. package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
  102. package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
  103. package/lib/common/mobile/android/logcat-helper.js +114 -133
  104. package/lib/common/mobile/application-manager-base.js +89 -112
  105. package/lib/common/mobile/device-log-provider-base.js +7 -18
  106. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  107. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  108. package/lib/common/mobile/ios/device/ios-device-operations.js +106 -143
  109. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  110. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  111. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +66 -95
  112. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  113. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
  114. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
  115. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  116. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  117. package/lib/common/mobile/mobile-core/android-device-discovery.js +44 -63
  118. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
  119. package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
  120. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  121. package/lib/common/mobile/mobile-core/devices-service.js +400 -450
  122. package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
  123. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
  124. package/lib/common/mobile/mobile-helper.js +15 -26
  125. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  126. package/lib/common/opener.js +2 -2
  127. package/lib/common/prompter.js +91 -106
  128. package/lib/common/queue.js +9 -20
  129. package/lib/common/services/auto-completion-service.js +40 -53
  130. package/lib/common/services/cancellation.js +17 -28
  131. package/lib/common/services/commands-service.js +156 -179
  132. package/lib/common/services/help-service.js +130 -155
  133. package/lib/common/services/hooks-service.js +99 -114
  134. package/lib/common/services/ios-notification-service.js +21 -34
  135. package/lib/common/services/json-file-settings-service.js +56 -75
  136. package/lib/common/services/lock-service.js +35 -52
  137. package/lib/common/services/message-contract-generator.js +35 -46
  138. package/lib/common/services/micro-templating-service.js +6 -17
  139. package/lib/common/services/net-service.js +92 -109
  140. package/lib/common/services/project-files-manager.js +10 -23
  141. package/lib/common/services/proxy-service.js +13 -24
  142. package/lib/common/services/qr.js +13 -24
  143. package/lib/common/services/settings-service.js +1 -1
  144. package/lib/common/services/xcode-select-service.js +20 -35
  145. package/lib/common/utils.js +2 -2
  146. package/lib/common/validators/project-name-validator.js +1 -1
  147. package/lib/common/validators/validation-result.js +1 -1
  148. package/lib/common/verify-node-version.js +2 -3
  149. package/lib/common/yok.js +25 -38
  150. package/lib/config.js +41 -56
  151. package/lib/constants.js +24 -24
  152. package/lib/controllers/build-controller.js +82 -99
  153. package/lib/controllers/debug-controller.js +111 -132
  154. package/lib/controllers/deploy-controller.js +15 -23
  155. package/lib/controllers/migrate-controller.js +780 -853
  156. package/lib/controllers/platform-controller.js +74 -89
  157. package/lib/controllers/prepare-controller.js +241 -270
  158. package/lib/controllers/run-controller.js +411 -425
  159. package/lib/controllers/update-controller-base.js +16 -29
  160. package/lib/controllers/update-controller.js +101 -126
  161. package/lib/data/prepare-data.js +4 -1
  162. package/lib/definitions/project.d.ts +24 -24
  163. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  164. package/lib/detached-processes/cleanup-process.js +16 -25
  165. package/lib/device-path-provider.js +23 -34
  166. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +155 -170
  167. package/lib/device-sockets/ios/notification.js +1 -1
  168. package/lib/device-sockets/ios/socket-request-executor.js +26 -41
  169. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  170. package/lib/helpers/deploy-command-helper.js +44 -49
  171. package/lib/helpers/key-command-helper.js +4 -13
  172. package/lib/helpers/livesync-command-helper.js +138 -153
  173. package/lib/helpers/network-connectivity-validator.js +6 -17
  174. package/lib/helpers/options-track-helper.js +6 -17
  175. package/lib/helpers/platform-command-helper.js +103 -124
  176. package/lib/key-commands/index.js +150 -200
  177. package/lib/nativescript-cli.js +5 -14
  178. package/lib/node-package-manager.js +90 -113
  179. package/lib/options.js +4 -13
  180. package/lib/package-installation-manager.js +132 -167
  181. package/lib/package-manager.js +64 -87
  182. package/lib/platform-command-param.js +4 -15
  183. package/lib/pnpm-package-manager.js +60 -79
  184. package/lib/project-data.js +1 -1
  185. package/lib/providers/project-files-provider.js +1 -1
  186. package/lib/services/analytics/analytics-broker-process.js +13 -22
  187. package/lib/services/analytics/analytics-broker.js +17 -30
  188. package/lib/services/analytics/analytics-service.js +165 -201
  189. package/lib/services/analytics/google-analytics-provider.js +41 -56
  190. package/lib/services/analytics-settings-service.js +15 -32
  191. package/lib/services/android/android-bundle-tool-service.js +43 -60
  192. package/lib/services/android/gradle-build-args-service.js +10 -21
  193. package/lib/services/android/gradle-build-service.js +22 -35
  194. package/lib/services/android/gradle-command-service.js +22 -35
  195. package/lib/services/android-device-debug-service.js +92 -119
  196. package/lib/services/android-plugin-build-service.js +219 -245
  197. package/lib/services/android-project-service.js +134 -179
  198. package/lib/services/android-resources-migration-service.js +57 -70
  199. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  200. package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
  201. package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
  202. package/lib/services/assets-generation/assets-generation-service.js +114 -128
  203. package/lib/services/build-artifacts-service.js +9 -20
  204. package/lib/services/build-info-file-service.js +20 -35
  205. package/lib/services/cleanup-service.js +47 -76
  206. package/lib/services/cocoapods-service.js +124 -145
  207. package/lib/services/device/device-install-app-service.js +54 -71
  208. package/lib/services/doctor-service.js +106 -125
  209. package/lib/services/extensibility-service.js +87 -106
  210. package/lib/services/files-hash-service.js +26 -43
  211. package/lib/services/hmr-status-service.js +1 -1
  212. package/lib/services/initialize-service.js +38 -51
  213. package/lib/services/ios/export-options-plist-service.js +41 -54
  214. package/lib/services/ios/ios-signing-service.js +171 -190
  215. package/lib/services/ios/spm-service.js +52 -65
  216. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  217. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  218. package/lib/services/ios/xcodebuild-service.js +52 -71
  219. package/lib/services/ios-debugger-port-service.js +24 -37
  220. package/lib/services/ios-device-debug-service.js +75 -102
  221. package/lib/services/ios-entitlements-service.js +31 -42
  222. package/lib/services/ios-extensions-service.js +18 -29
  223. package/lib/services/ios-project-service.js +530 -591
  224. package/lib/services/ios-provision-service.js +110 -131
  225. package/lib/services/ios-watch-app-service.js +21 -32
  226. package/lib/services/ip-service.js +39 -54
  227. package/lib/services/itmstransporter-service.js +129 -152
  228. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  229. package/lib/services/livesync/android-device-livesync-service.js +121 -150
  230. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
  231. package/lib/services/livesync/android-livesync-service.js +14 -35
  232. package/lib/services/livesync/android-livesync-tool.js +90 -113
  233. package/lib/services/livesync/device-livesync-service-base.js +16 -29
  234. package/lib/services/livesync/ios-device-livesync-service.js +120 -149
  235. package/lib/services/livesync/ios-livesync-service.js +43 -59
  236. package/lib/services/livesync/platform-livesync-service-base.js +98 -123
  237. package/lib/services/log-parser-service.js +1 -1
  238. package/lib/services/log-source-map-service.js +31 -42
  239. package/lib/services/marking-mode-service.js +17 -30
  240. package/lib/services/npm-config-service.js +1 -1
  241. package/lib/services/pacote-service.js +54 -69
  242. package/lib/services/performance-service.js +1 -1
  243. package/lib/services/platform/add-platform-service.js +57 -78
  244. package/lib/services/platform/platform-validation-service.js +22 -33
  245. package/lib/services/platform/prepare-native-platform-service.js +51 -64
  246. package/lib/services/platform-environment-requirements.js +27 -38
  247. package/lib/services/plugins-service.js +126 -151
  248. package/lib/services/project-backup-service.js +1 -1
  249. package/lib/services/project-changes-service.js +126 -143
  250. package/lib/services/project-cleanup-service.js +65 -78
  251. package/lib/services/project-config-service.js +78 -88
  252. package/lib/services/project-data-service.js +112 -129
  253. package/lib/services/project-name-service.js +28 -43
  254. package/lib/services/project-service.js +90 -109
  255. package/lib/services/project-templates-service.js +52 -67
  256. package/lib/services/start-service.js +41 -59
  257. package/lib/services/temp-service.js +8 -21
  258. package/lib/services/terminal-spinner-service.js +15 -26
  259. package/lib/services/test-execution-service.js +64 -77
  260. package/lib/services/test-initialization-service.js +2 -2
  261. package/lib/services/timeline-profiler-service.js +1 -1
  262. package/lib/services/versions-service.js +120 -139
  263. package/lib/services/webpack/webpack-compiler-service.js +228 -251
  264. package/lib/services/xcconfig-service.js +8 -19
  265. package/lib/sys-info.js +45 -62
  266. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  267. package/lib/yarn-package-manager.js +59 -78
  268. package/lib/yarn2-package-manager.js +62 -81
  269. package/package.json +67 -82
  270. package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
  271. package/node_modules/@npmcli/move-file/README.md +0 -69
  272. package/node_modules/@npmcli/move-file/lib/index.js +0 -185
  273. package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
  274. package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
  275. package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
  276. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
  277. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  278. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  279. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
  280. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
  281. package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
  282. package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
  283. package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
  284. package/node_modules/@npmcli/move-file/package.json +0 -47
  285. package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  286. package/node_modules/balanced-match/LICENSE.md +0 -21
  287. package/node_modules/balanced-match/README.md +0 -97
  288. package/node_modules/balanced-match/index.js +0 -62
  289. package/node_modules/balanced-match/package.json +0 -48
  290. package/node_modules/concat-map/.travis.yml +0 -4
  291. package/node_modules/concat-map/LICENSE +0 -18
  292. package/node_modules/concat-map/README.markdown +0 -62
  293. package/node_modules/concat-map/example/map.js +0 -6
  294. package/node_modules/concat-map/index.js +0 -13
  295. package/node_modules/concat-map/package.json +0 -43
  296. package/node_modules/concat-map/test/map.js +0 -39
  297. package/node_modules/fs.realpath/LICENSE +0 -43
  298. package/node_modules/fs.realpath/README.md +0 -33
  299. package/node_modules/fs.realpath/index.js +0 -66
  300. package/node_modules/fs.realpath/old.js +0 -303
  301. package/node_modules/fs.realpath/package.json +0 -26
  302. package/node_modules/inflight/LICENSE +0 -15
  303. package/node_modules/inflight/README.md +0 -37
  304. package/node_modules/inflight/inflight.js +0 -54
  305. package/node_modules/inflight/package.json +0 -29
  306. package/node_modules/inherits/LICENSE +0 -16
  307. package/node_modules/inherits/README.md +0 -42
  308. package/node_modules/inherits/inherits.js +0 -9
  309. package/node_modules/inherits/inherits_browser.js +0 -27
  310. package/node_modules/inherits/package.json +0 -29
  311. package/node_modules/once/LICENSE +0 -15
  312. package/node_modules/once/README.md +0 -79
  313. package/node_modules/once/once.js +0 -42
  314. package/node_modules/once/package.json +0 -33
  315. package/node_modules/path-is-absolute/index.js +0 -20
  316. package/node_modules/path-is-absolute/license +0 -21
  317. package/node_modules/path-is-absolute/package.json +0 -43
  318. package/node_modules/path-is-absolute/readme.md +0 -59
  319. package/node_modules/rimraf/LICENSE +0 -15
  320. package/node_modules/rimraf/README.md +0 -101
  321. package/node_modules/rimraf/bin.js +0 -68
  322. package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
  323. package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
  324. package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
  325. package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
  326. package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
  327. package/node_modules/rimraf/node_modules/glob/README.md +0 -378
  328. package/node_modules/rimraf/node_modules/glob/common.js +0 -238
  329. package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
  330. package/node_modules/rimraf/node_modules/glob/package.json +0 -55
  331. package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
  332. package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
  333. package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
  334. package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
  335. package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
  336. package/node_modules/rimraf/package.json +0 -32
  337. package/node_modules/rimraf/rimraf.js +0 -360
  338. package/node_modules/stringify-package/LICENSE +0 -13
  339. package/node_modules/stringify-package/README.md +0 -55
  340. package/node_modules/stringify-package/index.js +0 -18
  341. package/node_modules/stringify-package/package.json +0 -38
  342. package/node_modules/wrappy/LICENSE +0 -15
  343. package/node_modules/wrappy/README.md +0 -36
  344. package/node_modules/wrappy/package.json +0 -29
  345. package/node_modules/wrappy/wrappy.js +0 -33
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
8
  Object.defineProperty(exports, "__esModule", { value: true });
18
9
  exports.AutoCompletionService = void 0;
19
10
  const os_1 = require("os");
@@ -127,15 +118,13 @@ class AutoCompletionService {
127
118
  this.$logger.info("Restart your shell to disable command auto-completion.");
128
119
  }
129
120
  }
130
- enableAutoCompletion() {
131
- return __awaiter(this, void 0, void 0, function* () {
132
- yield this.updateCLIShellScript();
133
- _.each(this.shellProfiles, (shellFile) => this.addAutoCompletionToShellScript(shellFile));
134
- this.removeObsoleteAutoCompletion();
135
- if (this.scriptsOk && this.scriptsUpdated) {
136
- this.$logger.info("Restart your shell to enable command auto-completion.");
137
- }
138
- });
121
+ async enableAutoCompletion() {
122
+ await this.updateCLIShellScript();
123
+ _.each(this.shellProfiles, (shellFile) => this.addAutoCompletionToShellScript(shellFile));
124
+ this.removeObsoleteAutoCompletion();
125
+ if (this.scriptsOk && this.scriptsUpdated) {
126
+ this.$logger.info("Restart your shell to enable command auto-completion.");
127
+ }
139
128
  }
140
129
  isObsoleteAutoCompletionEnabled() {
141
130
  let result = true;
@@ -211,49 +200,48 @@ class AutoCompletionService {
211
200
  }
212
201
  }
213
202
  }
214
- updateCLIShellScript() {
215
- return __awaiter(this, void 0, void 0, function* () {
216
- const filePath = this.cliRunCommandsFile;
217
- try {
218
- let doUpdate = true;
219
- if (this.$fs.exists(filePath)) {
220
- const contents = this.$fs.readText(filePath);
221
- const regExp = new RegExp(AutoCompletionService.GENERATED_TABTAB_COMPLETION_START);
222
- let matchCondition = contents.match(regExp);
223
- if (matchCondition) {
224
- doUpdate = false;
225
- }
203
+ async updateCLIShellScript() {
204
+ const filePath = this.cliRunCommandsFile;
205
+ try {
206
+ let doUpdate = true;
207
+ if (this.$fs.exists(filePath)) {
208
+ const contents = this.$fs.readText(filePath);
209
+ const regExp = new RegExp(AutoCompletionService.GENERATED_TABTAB_COMPLETION_START);
210
+ let matchCondition = contents.match(regExp);
211
+ if (matchCondition) {
212
+ doUpdate = false;
226
213
  }
227
- if (doUpdate) {
228
- const clientExecutableFileName = (this.$staticConfig.CLIENT_NAME_ALIAS || this.$staticConfig.CLIENT_NAME).toLowerCase();
229
- const pathToExecutableFile = path.join(__dirname, `../../../bin/${clientExecutableFileName}.js`);
230
- if (this.$fs.exists(filePath)) {
231
- const existingText = this.$fs.readText(filePath);
232
- let newText = existingText.replace(this.getTabTabCompletionsRegex(), "");
233
- newText = this.removeOboleteTabTabCompletion(newText);
234
- if (newText !== existingText) {
235
- this.$logger.trace("Remove existing AutoCompletion from file %s.", filePath);
236
- this.$fs.writeFile(filePath, newText);
237
- }
214
+ }
215
+ if (doUpdate) {
216
+ const clientExecutableFileName = (this.$staticConfig.CLIENT_NAME_ALIAS || this.$staticConfig.CLIENT_NAME).toLowerCase();
217
+ const pathToExecutableFile = path.join(__dirname, `../../../bin/${clientExecutableFileName}.js`);
218
+ if (this.$fs.exists(filePath)) {
219
+ const existingText = this.$fs.readText(filePath);
220
+ let newText = existingText.replace(this.getTabTabCompletionsRegex(), "");
221
+ newText = this.removeOboleteTabTabCompletion(newText);
222
+ if (newText !== existingText) {
223
+ this.$logger.trace("Remove existing AutoCompletion from file %s.", filePath);
224
+ this.$fs.writeFile(filePath, newText);
238
225
  }
239
- // The generated seems to be inconsistent in it's start/end markers so adding our own.
240
- this.$fs.appendFile(filePath, `\n${AutoCompletionService.GENERATED_TABTAB_COMPLETION_START}\n`);
241
- yield this.$childProcess.exec(`"${process.argv[0]}" "${pathToExecutableFile}" completion_generate_script >> "${filePath}"`);
242
- this.$fs.appendFile(filePath, this.completionAliasDefinition);
243
- this.$fs.chmod(filePath, "0644");
244
226
  }
227
+ // The generated seems to be inconsistent in it's start/end markers so adding our own.
228
+ this.$fs.appendFile(filePath, `\n${AutoCompletionService.GENERATED_TABTAB_COMPLETION_START}\n`);
229
+ await this.$childProcess.exec(`"${process.argv[0]}" "${pathToExecutableFile}" completion_generate_script >> "${filePath}"`);
230
+ this.$fs.appendFile(filePath, this.completionAliasDefinition);
231
+ this.$fs.chmod(filePath, "0644");
245
232
  }
246
- catch (err) {
247
- this.$logger.info("Failed to update %s. Auto-completion may not work. ", filePath);
248
- this.$logger.trace(err);
249
- this.scriptsOk = false;
250
- }
251
- });
233
+ }
234
+ catch (err) {
235
+ this.$logger.info("Failed to update %s. Auto-completion may not work. ", filePath);
236
+ this.$logger.trace(err);
237
+ this.scriptsOk = false;
238
+ }
252
239
  }
253
240
  getHomePath(fileName) {
254
241
  return path.join((0, os_1.homedir)(), fileName);
255
242
  }
256
243
  }
244
+ exports.AutoCompletionService = AutoCompletionService;
257
245
  AutoCompletionService.COMPLETION_START_COMMENT_PATTERN = "###-%s-completion-start-###";
258
246
  AutoCompletionService.COMPLETION_END_COMMENT_PATTERN = "###-%s-completion-end-###";
259
247
  AutoCompletionService.TABTAB_COMPLETION_START_REGEX_PATTERN = "###-begin-%s-completion-###";
@@ -272,6 +260,5 @@ __decorate([
272
260
  __decorate([
273
261
  (0, decorators_1.cache)()
274
262
  ], AutoCompletionService.prototype, "completionShellScriptContent", null);
275
- exports.AutoCompletionService = AutoCompletionService;
276
263
  yok_1.injector.register("autoCompletionService", AutoCompletionService);
277
264
  //# sourceMappingURL=auto-completion-service.js.map
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  const choki = require("chokidar");
13
4
  const path = require("path");
@@ -24,26 +15,24 @@ class CancellationService {
24
15
  this.$fs.createDirectory(CancellationService.killSwitchDir);
25
16
  }
26
17
  }
27
- begin(name) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- if (!this.$hostInfo.isWindows) {
30
- return;
31
- }
32
- const triggerFile = CancellationService.makeKillSwitchFileName(name);
33
- if (!this.$fs.exists(triggerFile)) {
34
- this.$fs.writeFile(triggerFile, "");
35
- }
36
- this.$logger.trace("Starting watch on killswitch %s", triggerFile);
37
- const watcher = choki
38
- .watch(triggerFile, { ignoreInitial: true })
39
- .on("unlink", (filePath) => {
40
- this.$logger.info(`Exiting process as the file ${filePath} has been deleted. Probably reinstalling CLI while there's a working instance.`);
41
- process.exit(132 /* ErrorCodes.DELETED_KILL_FILE */);
42
- });
43
- if (watcher) {
44
- this.watches[name] = watcher;
45
- }
18
+ async begin(name) {
19
+ if (!this.$hostInfo.isWindows) {
20
+ return;
21
+ }
22
+ const triggerFile = CancellationService.makeKillSwitchFileName(name);
23
+ if (!this.$fs.exists(triggerFile)) {
24
+ this.$fs.writeFile(triggerFile, "");
25
+ }
26
+ this.$logger.trace("Starting watch on killswitch %s", triggerFile);
27
+ const watcher = choki
28
+ .watch(triggerFile, { ignoreInitial: true })
29
+ .on("unlink", (filePath) => {
30
+ this.$logger.info(`Exiting process as the file ${filePath} has been deleted. Probably reinstalling CLI while there's a working instance.`);
31
+ process.exit(132 /* ErrorCodes.DELETED_KILL_FILE */);
46
32
  });
33
+ if (watcher) {
34
+ this.watches[name] = watcher;
35
+ }
47
36
  }
48
37
  end(name) {
49
38
  const watcher = this.watches[name];
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.CommandsService = void 0;
13
4
  const jaroWinklerDistance = require("../vendor/jaro-winkler_distance");
@@ -40,49 +31,47 @@ class CommandsService {
40
31
  const commands = this.$injector.getRegisteredCommandsNames(opts.includeDevCommands);
41
32
  return _.reject(commands, (command) => _.includes(command, "|"));
42
33
  }
43
- executeCommandUnchecked(commandName, commandArguments) {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- this.commands.push({ commandName, commandArguments });
46
- const command = this.$injector.resolveCommand(commandName);
47
- if (command) {
48
- if (!this.$staticConfig.disableAnalytics &&
49
- !command.disableAnalytics &&
50
- !this.$options.disableAnalytics) {
51
- const analyticsService = this.$injector.resolve("analyticsService"); // This should be resolved here due to cyclic dependency
52
- yield analyticsService.checkConsent();
53
- const beautifiedCommandName = this.beautifyCommandName(commandName).replace(/\|/g, " ");
54
- const googleAnalyticsPageData = {
55
- googleAnalyticsDataType: "pageview" /* GoogleAnalyticsDataType.Page */,
56
- path: beautifiedCommandName,
57
- title: beautifiedCommandName,
58
- };
59
- yield analyticsService.trackInGoogleAnalytics(googleAnalyticsPageData);
60
- yield this.$optionsTracker.trackOptions(this.$options);
61
- }
62
- const shouldExecuteHooks = !this.$staticConfig.disableCommandHooks &&
63
- (command.enableHooks === undefined || command.enableHooks === true);
64
- if (shouldExecuteHooks) {
65
- // Handle correctly hierarchical commands
66
- const hierarchicalCommandName = this.$injector.buildHierarchicalCommand(commandName, commandArguments);
67
- if (hierarchicalCommandName) {
68
- commandName = helpers.stringReplaceAll(hierarchicalCommandName.commandName, "|*" /* CommandsDelimiters.DefaultHierarchicalCommand */, "-" /* CommandsDelimiters.HooksCommand */);
69
- commandName = helpers.stringReplaceAll(commandName, "|" /* CommandsDelimiters.HierarchicalCommand */, "-" /* CommandsDelimiters.HooksCommand */);
70
- }
71
- yield this.$hooksService.executeBeforeHooks(commandName);
72
- }
73
- yield command.execute(commandArguments);
74
- if (command.postCommandAction) {
75
- yield command.postCommandAction(commandArguments);
76
- }
77
- if (shouldExecuteHooks) {
78
- yield this.$hooksService.executeAfterHooks(commandName);
34
+ async executeCommandUnchecked(commandName, commandArguments) {
35
+ this.commands.push({ commandName, commandArguments });
36
+ const command = this.$injector.resolveCommand(commandName);
37
+ if (command) {
38
+ if (!this.$staticConfig.disableAnalytics &&
39
+ !command.disableAnalytics &&
40
+ !this.$options.disableAnalytics) {
41
+ const analyticsService = this.$injector.resolve("analyticsService"); // This should be resolved here due to cyclic dependency
42
+ await analyticsService.checkConsent();
43
+ const beautifiedCommandName = this.beautifyCommandName(commandName).replace(/\|/g, " ");
44
+ const googleAnalyticsPageData = {
45
+ googleAnalyticsDataType: "pageview" /* GoogleAnalyticsDataType.Page */,
46
+ path: beautifiedCommandName,
47
+ title: beautifiedCommandName,
48
+ };
49
+ await analyticsService.trackInGoogleAnalytics(googleAnalyticsPageData);
50
+ await this.$optionsTracker.trackOptions(this.$options);
51
+ }
52
+ const shouldExecuteHooks = !this.$staticConfig.disableCommandHooks &&
53
+ (command.enableHooks === undefined || command.enableHooks === true);
54
+ if (shouldExecuteHooks) {
55
+ // Handle correctly hierarchical commands
56
+ const hierarchicalCommandName = this.$injector.buildHierarchicalCommand(commandName, commandArguments);
57
+ if (hierarchicalCommandName) {
58
+ commandName = helpers.stringReplaceAll(hierarchicalCommandName.commandName, "|*" /* CommandsDelimiters.DefaultHierarchicalCommand */, "-" /* CommandsDelimiters.HooksCommand */);
59
+ commandName = helpers.stringReplaceAll(commandName, "|" /* CommandsDelimiters.HierarchicalCommand */, "-" /* CommandsDelimiters.HooksCommand */);
79
60
  }
80
- this.commands.pop();
81
- return true;
61
+ await this.$hooksService.executeBeforeHooks(commandName);
62
+ }
63
+ await command.execute(commandArguments);
64
+ if (command.postCommandAction) {
65
+ await command.postCommandAction(commandArguments);
66
+ }
67
+ if (shouldExecuteHooks) {
68
+ await this.$hooksService.executeAfterHooks(commandName);
82
69
  }
83
70
  this.commands.pop();
84
- return false;
85
- });
71
+ return true;
72
+ }
73
+ this.commands.pop();
74
+ return false;
86
75
  }
87
76
  printHelpSuggestion(commandName) {
88
77
  const command = commandName
@@ -92,154 +81,142 @@ class CommandsService {
92
81
  this.$logger.printMarkdown(`__Run \`${commandHelp}\` for more information.__`);
93
82
  return;
94
83
  }
95
- executeCommandAction(commandName, commandArguments, action) {
96
- return __awaiter(this, void 0, void 0, function* () {
97
- return this.$errors.beginCommand(() => action.apply(this, [commandName, commandArguments]), () => this.printHelpSuggestion(commandName));
98
- });
84
+ async executeCommandAction(commandName, commandArguments, action) {
85
+ return this.$errors.beginCommand(() => action.apply(this, [commandName, commandArguments]), () => this.printHelpSuggestion(commandName));
99
86
  }
100
- tryExecuteCommandAction(commandName, commandArguments) {
101
- return __awaiter(this, void 0, void 0, function* () {
102
- const command = this.$injector.resolveCommand(commandName);
103
- if (!command || !command.isHierarchicalCommand) {
104
- const dashedOptions = command ? command.dashedOptions : null;
105
- this.$options.validateOptions(dashedOptions);
106
- }
107
- return this.canExecuteCommand(commandName, commandArguments);
108
- });
109
- }
110
- tryExecuteCommand(commandName, commandArguments) {
111
- return __awaiter(this, void 0, void 0, function* () {
112
- const canExecuteResult = yield this.executeCommandAction(commandName, commandArguments, this.tryExecuteCommandAction);
113
- const canExecute = typeof canExecuteResult === "object"
114
- ? canExecuteResult.canExecute
115
- : canExecuteResult;
116
- if (canExecute) {
117
- yield this.executeCommandAction(commandName, commandArguments, this.executeCommandUnchecked);
118
- }
119
- else {
120
- // If canExecuteCommand returns false, the command cannot be executed or there's no such command at all.
121
- const command = this.$injector.resolveCommand(commandName);
122
- if (command) {
123
- let commandWithArgs = commandName;
124
- if (commandArguments && commandArguments.length) {
125
- commandWithArgs += ` ${commandArguments.join(" ")}`;
126
- }
127
- this.$logger.error(`Command '${commandWithArgs}' cannot be executed.`);
128
- yield this.printHelpSuggestion(commandName);
129
- }
130
- }
131
- });
87
+ async tryExecuteCommandAction(commandName, commandArguments) {
88
+ const command = this.$injector.resolveCommand(commandName);
89
+ if (!command || !command.isHierarchicalCommand) {
90
+ const dashedOptions = command ? command.dashedOptions : null;
91
+ this.$options.validateOptions(dashedOptions);
92
+ }
93
+ return this.canExecuteCommand(commandName, commandArguments);
132
94
  }
133
- canExecuteCommand(commandName, commandArguments, isDynamicCommand) {
134
- return __awaiter(this, void 0, void 0, function* () {
95
+ async tryExecuteCommand(commandName, commandArguments) {
96
+ const canExecuteResult = await this.executeCommandAction(commandName, commandArguments, this.tryExecuteCommandAction);
97
+ const canExecute = typeof canExecuteResult === "object"
98
+ ? canExecuteResult.canExecute
99
+ : canExecuteResult;
100
+ if (canExecute) {
101
+ await this.executeCommandAction(commandName, commandArguments, this.executeCommandUnchecked);
102
+ }
103
+ else {
104
+ // If canExecuteCommand returns false, the command cannot be executed or there's no such command at all.
135
105
  const command = this.$injector.resolveCommand(commandName);
136
- const beautifiedName = helpers.stringReplaceAll(commandName, "|", " ");
137
106
  if (command) {
138
- // Verify command is enabled
139
- if (command.isDisabled) {
140
- this.$errors.fail("This command is not applicable to your environment.");
141
- }
142
- // If command wants to handle canExecute logic on its own.
143
- if (command.canExecute) {
144
- return yield command.canExecute(commandArguments);
145
- }
146
- // First part of hierarchical commands should be validated in specific way.
147
- if (yield this.$injector.isValidHierarchicalCommand(commandName, commandArguments)) {
148
- return true;
107
+ let commandWithArgs = commandName;
108
+ if (commandArguments && commandArguments.length) {
109
+ commandWithArgs += ` ${commandArguments.join(" ")}`;
149
110
  }
150
- if (yield this.validateCommandArguments(command, commandArguments)) {
151
- return true;
152
- }
153
- this.$errors.fail(`Unable to execute command '${beautifiedName}'.`);
154
- return false;
111
+ this.$logger.error(`Command '${commandWithArgs}' cannot be executed.`);
112
+ await this.printHelpSuggestion(commandName);
155
113
  }
156
- const commandInfo = {
157
- inputStrings: [commandName, ...commandArguments],
158
- commandDelimiter: "|" /* CommandsDelimiters.HierarchicalCommand */,
159
- defaultCommandDelimiter: "|*" /* CommandsDelimiters.DefaultHierarchicalCommand */,
160
- };
161
- const extensionData = yield this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
162
- if (extensionData) {
163
- this.$logger.warn(extensionData.installationMessage);
114
+ }
115
+ }
116
+ async canExecuteCommand(commandName, commandArguments, isDynamicCommand) {
117
+ const command = this.$injector.resolveCommand(commandName);
118
+ const beautifiedName = helpers.stringReplaceAll(commandName, "|", " ");
119
+ if (command) {
120
+ // Verify command is enabled
121
+ if (command.isDisabled) {
122
+ this.$errors.fail("This command is not applicable to your environment.");
164
123
  }
165
- else {
166
- this.$logger.error("Unknown command '%s'.", beautifiedName);
167
- yield this.printHelpSuggestion();
168
- this.tryMatchCommand(commandName);
124
+ // If command wants to handle canExecute logic on its own.
125
+ if (command.canExecute) {
126
+ return await command.canExecute(commandArguments);
169
127
  }
128
+ // First part of hierarchical commands should be validated in specific way.
129
+ if (await this.$injector.isValidHierarchicalCommand(commandName, commandArguments)) {
130
+ return true;
131
+ }
132
+ if (await this.validateCommandArguments(command, commandArguments)) {
133
+ return true;
134
+ }
135
+ this.$errors.fail(`Unable to execute command '${beautifiedName}'.`);
170
136
  return false;
171
- });
137
+ }
138
+ const commandInfo = {
139
+ inputStrings: [commandName, ...commandArguments],
140
+ commandDelimiter: "|" /* CommandsDelimiters.HierarchicalCommand */,
141
+ defaultCommandDelimiter: "|*" /* CommandsDelimiters.DefaultHierarchicalCommand */,
142
+ };
143
+ const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
144
+ if (extensionData) {
145
+ this.$logger.warn(extensionData.installationMessage);
146
+ }
147
+ else {
148
+ this.$logger.error("Unknown command '%s'.", beautifiedName);
149
+ await this.printHelpSuggestion();
150
+ this.tryMatchCommand(commandName);
151
+ }
152
+ return false;
172
153
  }
173
- validateMandatoryParams(commandArguments, mandatoryParams) {
174
- return __awaiter(this, void 0, void 0, function* () {
175
- const commandArgsHelper = new CommandArgumentsValidationHelper(true, commandArguments);
176
- if (mandatoryParams.length > 0) {
177
- // If command has more mandatory params than the passed ones, we shouldn't execute it
178
- if (mandatoryParams.length > commandArguments.length) {
179
- const customErrorMessages = _.map(mandatoryParams, (mp) => mp.errorMessage);
180
- customErrorMessages.splice(0, 0, "You need to provide all the required parameters.");
181
- this.$errors.failWithHelp(customErrorMessages.join(os_1.EOL));
182
- }
183
- // If we reach here, the commandArguments are at least as much as mandatoryParams. Now we should verify that we have each of them.
184
- for (let mandatoryParamIndex = 0; mandatoryParamIndex < mandatoryParams.length; ++mandatoryParamIndex) {
185
- const mandatoryParam = mandatoryParams[mandatoryParamIndex];
186
- let argument = null;
187
- for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
188
- const c = commandArgsHelper.remainingArguments[remainingArgsIndex];
189
- if (yield mandatoryParam.validate(c)) {
190
- argument = c;
191
- break;
192
- }
193
- }
194
- if (argument) {
195
- helpers.remove(commandArgsHelper.remainingArguments, (arg) => arg === argument);
196
- }
197
- else {
198
- this.$errors.failWithHelp("Missing mandatory parameter.");
154
+ async validateMandatoryParams(commandArguments, mandatoryParams) {
155
+ const commandArgsHelper = new CommandArgumentsValidationHelper(true, commandArguments);
156
+ if (mandatoryParams.length > 0) {
157
+ // If command has more mandatory params than the passed ones, we shouldn't execute it
158
+ if (mandatoryParams.length > commandArguments.length) {
159
+ const customErrorMessages = _.map(mandatoryParams, (mp) => mp.errorMessage);
160
+ customErrorMessages.splice(0, 0, "You need to provide all the required parameters.");
161
+ this.$errors.failWithHelp(customErrorMessages.join(os_1.EOL));
162
+ }
163
+ // If we reach here, the commandArguments are at least as much as mandatoryParams. Now we should verify that we have each of them.
164
+ for (let mandatoryParamIndex = 0; mandatoryParamIndex < mandatoryParams.length; ++mandatoryParamIndex) {
165
+ const mandatoryParam = mandatoryParams[mandatoryParamIndex];
166
+ let argument = null;
167
+ for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
168
+ const c = commandArgsHelper.remainingArguments[remainingArgsIndex];
169
+ if (await mandatoryParam.validate(c)) {
170
+ argument = c;
171
+ break;
199
172
  }
200
173
  }
174
+ if (argument) {
175
+ helpers.remove(commandArgsHelper.remainingArguments, (arg) => arg === argument);
176
+ }
177
+ else {
178
+ this.$errors.failWithHelp("Missing mandatory parameter.");
179
+ }
201
180
  }
202
- return commandArgsHelper;
203
- });
181
+ }
182
+ return commandArgsHelper;
204
183
  }
205
- validateCommandArguments(command, commandArguments) {
206
- return __awaiter(this, void 0, void 0, function* () {
207
- const mandatoryParams = _.filter(command.allowedParameters, (param) => param.mandatory);
208
- const commandArgsHelper = yield this.validateMandatoryParams(commandArguments, mandatoryParams);
209
- if (!commandArgsHelper.isValid) {
210
- return false;
211
- }
212
- // Command doesn't have any allowedParameters
213
- if (!command.allowedParameters || command.allowedParameters.length === 0) {
214
- if (commandArguments.length > 0) {
215
- this.$errors.failWithHelp("This command doesn't accept parameters.");
216
- }
184
+ async validateCommandArguments(command, commandArguments) {
185
+ const mandatoryParams = _.filter(command.allowedParameters, (param) => param.mandatory);
186
+ const commandArgsHelper = await this.validateMandatoryParams(commandArguments, mandatoryParams);
187
+ if (!commandArgsHelper.isValid) {
188
+ return false;
189
+ }
190
+ // Command doesn't have any allowedParameters
191
+ if (!command.allowedParameters || command.allowedParameters.length === 0) {
192
+ if (commandArguments.length > 0) {
193
+ this.$errors.failWithHelp("This command doesn't accept parameters.");
217
194
  }
218
- else {
219
- // Exclude mandatory params, we've already checked them
220
- const unverifiedAllowedParams = command.allowedParameters.filter((param) => !param.mandatory);
221
- for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
222
- const argument = commandArgsHelper.remainingArguments[remainingArgsIndex];
223
- let parameter = null;
224
- for (let unverifiedIndex = 0; unverifiedIndex < unverifiedAllowedParams.length; ++unverifiedIndex) {
225
- const c = unverifiedAllowedParams[unverifiedIndex];
226
- if (yield c.validate(argument)) {
227
- parameter = c;
228
- break;
229
- }
230
- }
231
- if (parameter) {
232
- const index = unverifiedAllowedParams.indexOf(parameter);
233
- // Remove the matched parameter from unverifiedAllowedParams collection, so it will not be used to verify another argument.
234
- unverifiedAllowedParams.splice(index, 1);
235
- }
236
- else {
237
- this.$errors.failWithHelp(`The parameter ${argument} is not valid for this command.`);
195
+ }
196
+ else {
197
+ // Exclude mandatory params, we've already checked them
198
+ const unverifiedAllowedParams = command.allowedParameters.filter((param) => !param.mandatory);
199
+ for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
200
+ const argument = commandArgsHelper.remainingArguments[remainingArgsIndex];
201
+ let parameter = null;
202
+ for (let unverifiedIndex = 0; unverifiedIndex < unverifiedAllowedParams.length; ++unverifiedIndex) {
203
+ const c = unverifiedAllowedParams[unverifiedIndex];
204
+ if (await c.validate(argument)) {
205
+ parameter = c;
206
+ break;
238
207
  }
239
208
  }
209
+ if (parameter) {
210
+ const index = unverifiedAllowedParams.indexOf(parameter);
211
+ // Remove the matched parameter from unverifiedAllowedParams collection, so it will not be used to verify another argument.
212
+ unverifiedAllowedParams.splice(index, 1);
213
+ }
214
+ else {
215
+ this.$errors.failWithHelp(`The parameter ${argument} is not valid for this command.`);
216
+ }
240
217
  }
241
- return true;
242
- });
218
+ }
219
+ return true;
243
220
  }
244
221
  tryMatchCommand(commandName) {
245
222
  const allCommands = this.allCommands({ includeDevCommands: false });