@akylas/nativescript-cli 8.7.2 → 8.8.3

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 (295) hide show
  1. package/config/test-deps-versions-generated.json +1 -1
  2. package/docs/man_pages/project/configuration/native/native-add-java.md +32 -0
  3. package/docs/man_pages/project/configuration/native/native-add-kotlin.md +34 -0
  4. package/docs/man_pages/project/configuration/native/native-add-objective-c.md +34 -0
  5. package/docs/man_pages/project/configuration/native/native-add-swift.md +32 -0
  6. package/docs/man_pages/project/configuration/native/native-add.md +31 -0
  7. package/docs/man_pages/project/configuration/native/native.md +31 -0
  8. package/lib/.d.ts +2 -0
  9. package/lib/android-tools-info.js +9 -20
  10. package/lib/base-package-manager.js +47 -64
  11. package/lib/bootstrap.js +8 -0
  12. package/lib/bun-package-manager.js +65 -88
  13. package/lib/color.js +2 -2
  14. package/lib/commands/add-platform.js +14 -30
  15. package/lib/commands/apple-login.js +18 -29
  16. package/lib/commands/appstore-list.js +34 -45
  17. package/lib/commands/appstore-upload.js +55 -68
  18. package/lib/commands/build.js +57 -86
  19. package/lib/commands/clean.js +161 -176
  20. package/lib/commands/command-base.js +14 -27
  21. package/lib/commands/config.js +51 -70
  22. package/lib/commands/create-project.js +210 -229
  23. package/lib/commands/debug.js +66 -88
  24. package/lib/commands/deploy.js +28 -44
  25. package/lib/commands/embedding/embed.js +72 -0
  26. package/lib/commands/extensibility/install-extension.js +5 -16
  27. package/lib/commands/extensibility/list-extensions.js +13 -24
  28. package/lib/commands/extensibility/uninstall-extension.js +4 -15
  29. package/lib/commands/fonts.js +30 -41
  30. package/lib/commands/generate-assets.js +13 -28
  31. package/lib/commands/generate-help.js +2 -13
  32. package/lib/commands/generate.js +17 -26
  33. package/lib/commands/info.js +2 -13
  34. package/lib/commands/install.js +34 -49
  35. package/lib/commands/list-platforms.js +14 -25
  36. package/lib/commands/migrate.js +15 -26
  37. package/lib/commands/native-add.js +277 -0
  38. package/lib/commands/platform-clean.js +19 -32
  39. package/lib/commands/plugin/add-plugin.js +12 -25
  40. package/lib/commands/plugin/build-plugin.js +34 -45
  41. package/lib/commands/plugin/create-plugin.js +110 -133
  42. package/lib/commands/plugin/list-plugins.js +22 -33
  43. package/lib/commands/plugin/remove-plugin.js +20 -33
  44. package/lib/commands/plugin/update-plugin.js +20 -33
  45. package/lib/commands/post-install.js +20 -33
  46. package/lib/commands/prepare.js +28 -35
  47. package/lib/commands/preview.js +49 -62
  48. package/lib/commands/remove-platform.js +7 -18
  49. package/lib/commands/resources/resources-update.js +13 -26
  50. package/lib/commands/run.js +55 -76
  51. package/lib/commands/start.js +6 -19
  52. package/lib/commands/test-init.js +123 -134
  53. package/lib/commands/test.js +66 -89
  54. package/lib/commands/typings.js +126 -142
  55. package/lib/commands/update-platform.js +22 -35
  56. package/lib/commands/update.js +30 -43
  57. package/lib/common/child-process.js +53 -72
  58. package/lib/common/codeGeneration/code-entity.js +1 -1
  59. package/lib/common/codeGeneration/code-printer.js +1 -1
  60. package/lib/common/command-params.js +7 -18
  61. package/lib/common/commands/analytics.js +27 -40
  62. package/lib/common/commands/autocompletion.js +39 -56
  63. package/lib/common/commands/device/device-log-stream.js +12 -23
  64. package/lib/common/commands/device/get-file.js +22 -33
  65. package/lib/common/commands/device/list-applications.js +12 -23
  66. package/lib/common/commands/device/list-devices.js +72 -87
  67. package/lib/common/commands/device/list-files.js +23 -34
  68. package/lib/common/commands/device/put-file.js +22 -33
  69. package/lib/common/commands/device/run-application.js +12 -25
  70. package/lib/common/commands/device/stop-application.js +11 -22
  71. package/lib/common/commands/device/uninstall-application.js +6 -17
  72. package/lib/common/commands/generate-messages.js +17 -28
  73. package/lib/common/commands/help.js +20 -33
  74. package/lib/common/commands/package-manager-get.js +6 -17
  75. package/lib/common/commands/package-manager-set.js +9 -20
  76. package/lib/common/commands/post-install.js +2 -13
  77. package/lib/common/commands/preuninstall.js +23 -38
  78. package/lib/common/commands/proxy/proxy-base.js +8 -19
  79. package/lib/common/commands/proxy/proxy-clear.js +4 -15
  80. package/lib/common/commands/proxy/proxy-get.js +3 -14
  81. package/lib/common/commands/proxy/proxy-set.js +87 -100
  82. package/lib/common/constants.js +11 -11
  83. package/lib/common/decorators.js +10 -22
  84. package/lib/common/dispatchers.js +79 -96
  85. package/lib/common/errors.js +89 -104
  86. package/lib/common/file-system.js +106 -127
  87. package/lib/common/header.js +1 -2
  88. package/lib/common/helpers.js +149 -178
  89. package/lib/common/host-info.js +37 -50
  90. package/lib/common/http-client.js +93 -108
  91. package/lib/common/logger/appenders/cli-appender.js +1 -2
  92. package/lib/common/logger/appenders/emit-appender.js +1 -2
  93. package/lib/common/logger/layouts/cli-layout.js +1 -2
  94. package/lib/common/logger/logger.js +1 -1
  95. package/lib/common/mobile/android/android-application-manager.js +121 -142
  96. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
  97. package/lib/common/mobile/android/android-debug-bridge.js +87 -112
  98. package/lib/common/mobile/android/android-device-file-system.js +98 -131
  99. package/lib/common/mobile/android/android-device-hash-service.js +50 -75
  100. package/lib/common/mobile/android/android-device.js +74 -91
  101. package/lib/common/mobile/android/android-emulator-services.js +105 -130
  102. package/lib/common/mobile/android/android-log-filter.js +1 -1
  103. package/lib/common/mobile/android/android-virtual-device-service.js +76 -94
  104. package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
  105. package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
  106. package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
  107. package/lib/common/mobile/android/logcat-helper.js +108 -118
  108. package/lib/common/mobile/application-manager-base.js +84 -107
  109. package/lib/common/mobile/device-log-provider-base.js +7 -18
  110. package/lib/common/mobile/emulator-helper.js +1 -0
  111. package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
  112. package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
  113. package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
  114. package/lib/common/mobile/ios/device/ios-device.js +20 -36
  115. package/lib/common/mobile/ios/ios-device-base.js +58 -81
  116. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
  117. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
  118. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
  119. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
  120. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
  121. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
  122. package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
  123. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
  124. package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
  125. package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
  126. package/lib/common/mobile/mobile-core/devices-service.js +385 -436
  127. package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
  128. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
  129. package/lib/common/mobile/mobile-helper.js +15 -26
  130. package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
  131. package/lib/common/opener.js +2 -2
  132. package/lib/common/plist-parser.js +2 -2
  133. package/lib/common/prompter.js +90 -105
  134. package/lib/common/queue.js +9 -20
  135. package/lib/common/services/auto-completion-service.js +39 -52
  136. package/lib/common/services/cancellation.js +17 -28
  137. package/lib/common/services/commands-service.js +146 -169
  138. package/lib/common/services/help-service.js +132 -157
  139. package/lib/common/services/hooks-service.js +93 -108
  140. package/lib/common/services/ios-notification-service.js +21 -34
  141. package/lib/common/services/json-file-settings-service.js +52 -71
  142. package/lib/common/services/lock-service.js +35 -52
  143. package/lib/common/services/message-contract-generator.js +35 -46
  144. package/lib/common/services/micro-templating-service.js +4 -15
  145. package/lib/common/services/net-service.js +90 -107
  146. package/lib/common/services/project-files-manager.js +10 -23
  147. package/lib/common/services/proxy-service.js +13 -24
  148. package/lib/common/services/qr.js +13 -24
  149. package/lib/common/services/settings-service.js +1 -1
  150. package/lib/common/services/xcode-select-service.js +20 -35
  151. package/lib/common/utils.js +7 -0
  152. package/lib/common/validators/project-name-validator.js +1 -1
  153. package/lib/common/validators/validation-result.js +1 -1
  154. package/lib/common/verify-node-version.js +2 -3
  155. package/lib/common/yok.js +23 -36
  156. package/lib/config.js +7 -58
  157. package/lib/constants.js +24 -24
  158. package/lib/controllers/build-controller.js +82 -99
  159. package/lib/controllers/debug-controller.js +107 -128
  160. package/lib/controllers/deploy-controller.js +17 -22
  161. package/lib/controllers/migrate-controller.js +727 -800
  162. package/lib/controllers/platform-controller.js +72 -83
  163. package/lib/controllers/prepare-controller.js +264 -250
  164. package/lib/controllers/run-controller.js +392 -406
  165. package/lib/controllers/update-controller-base.js +16 -29
  166. package/lib/controllers/update-controller.js +94 -119
  167. package/lib/data/build-data.js +2 -0
  168. package/lib/data/prepare-data.js +5 -1
  169. package/lib/declarations.d.ts +14 -3
  170. package/lib/definitions/android-plugin-migrator.d.ts +1 -0
  171. package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
  172. package/lib/definitions/livesync.d.ts +1 -1
  173. package/lib/definitions/platform.d.ts +1 -0
  174. package/lib/definitions/prepare.d.ts +3 -0
  175. package/lib/definitions/project.d.ts +5 -0
  176. package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
  177. package/lib/detached-processes/cleanup-process.js +16 -25
  178. package/lib/device-path-provider.js +23 -34
  179. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
  180. package/lib/device-sockets/ios/notification.js +1 -1
  181. package/lib/device-sockets/ios/socket-request-executor.js +24 -39
  182. package/lib/helpers/android-bundle-validator-helper.js +1 -1
  183. package/lib/helpers/deploy-command-helper.js +45 -49
  184. package/lib/helpers/key-command-helper.js +4 -13
  185. package/lib/helpers/livesync-command-helper.js +137 -152
  186. package/lib/helpers/network-connectivity-validator.js +6 -17
  187. package/lib/helpers/options-track-helper.js +6 -17
  188. package/lib/helpers/platform-command-helper.js +102 -114
  189. package/lib/key-commands/index.js +161 -211
  190. package/lib/nativescript-cli.js +5 -14
  191. package/lib/node-package-manager.js +81 -104
  192. package/lib/options.js +12 -14
  193. package/lib/package-installation-manager.js +130 -165
  194. package/lib/package-manager.js +63 -86
  195. package/lib/platform-command-param.js +4 -15
  196. package/lib/pnpm-package-manager.js +59 -78
  197. package/lib/project-data.js +5 -2
  198. package/lib/providers/project-files-provider.js +2 -2
  199. package/lib/services/analytics/analytics-broker-process.js +13 -22
  200. package/lib/services/analytics/analytics-broker.js +17 -30
  201. package/lib/services/analytics/analytics-service.js +161 -198
  202. package/lib/services/analytics/google-analytics-provider.js +41 -56
  203. package/lib/services/analytics-settings-service.js +15 -32
  204. package/lib/services/android/android-bundle-tool-service.js +43 -60
  205. package/lib/services/android/gradle-build-args-service.js +13 -23
  206. package/lib/services/android/gradle-build-service.js +34 -47
  207. package/lib/services/android/gradle-command-service.js +23 -32
  208. package/lib/services/android-device-debug-service.js +90 -117
  209. package/lib/services/android-plugin-build-service.js +233 -247
  210. package/lib/services/android-project-service.js +180 -219
  211. package/lib/services/android-resources-migration-service.js +51 -64
  212. package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
  213. package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
  214. package/lib/services/assets-generation/assets-generation-service.js +100 -113
  215. package/lib/services/build-artifacts-service.js +9 -20
  216. package/lib/services/build-info-file-service.js +20 -35
  217. package/lib/services/cleanup-service.js +47 -76
  218. package/lib/services/cocoapods-service.js +118 -133
  219. package/lib/services/device/device-install-app-service.js +73 -90
  220. package/lib/services/doctor-service.js +99 -118
  221. package/lib/services/extensibility-service.js +81 -100
  222. package/lib/services/files-hash-service.js +28 -44
  223. package/lib/services/hmr-status-service.js +1 -1
  224. package/lib/services/initialize-service.js +37 -50
  225. package/lib/services/ios/export-options-plist-service.js +38 -51
  226. package/lib/services/ios/ios-signing-service.js +161 -180
  227. package/lib/services/ios/spm-service.js +40 -53
  228. package/lib/services/ios/xcodebuild-args-service.js +77 -94
  229. package/lib/services/ios/xcodebuild-command-service.js +14 -25
  230. package/lib/services/ios/xcodebuild-service.js +50 -69
  231. package/lib/services/ios-debugger-port-service.js +23 -36
  232. package/lib/services/ios-device-debug-service.js +75 -102
  233. package/lib/services/ios-entitlements-service.js +31 -42
  234. package/lib/services/ios-extensions-service.js +18 -29
  235. package/lib/services/ios-project-service.js +418 -440
  236. package/lib/services/ios-provision-service.js +108 -129
  237. package/lib/services/ios-watch-app-service.js +21 -32
  238. package/lib/services/ip-service.js +38 -53
  239. package/lib/services/itmstransporter-service.js +129 -152
  240. package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
  241. package/lib/services/livesync/android-device-livesync-service.js +120 -149
  242. package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -155
  243. package/lib/services/livesync/android-livesync-service.js +16 -37
  244. package/lib/services/livesync/android-livesync-tool.js +89 -112
  245. package/lib/services/livesync/device-livesync-service-base.js +15 -28
  246. package/lib/services/livesync/ios-device-livesync-service.js +114 -143
  247. package/lib/services/livesync/ios-livesync-service.js +44 -60
  248. package/lib/services/livesync/platform-livesync-service-base.js +96 -120
  249. package/lib/services/log-parser-service.js +1 -1
  250. package/lib/services/log-source-map-service.js +33 -43
  251. package/lib/services/marking-mode-service.js +15 -28
  252. package/lib/services/npm-config-service.js +1 -1
  253. package/lib/services/pacote-service.js +49 -64
  254. package/lib/services/performance-service.js +1 -1
  255. package/lib/services/platform/add-platform-service.js +53 -69
  256. package/lib/services/platform/platform-validation-service.js +22 -33
  257. package/lib/services/platform/prepare-native-platform-service.js +50 -60
  258. package/lib/services/platform-environment-requirements.js +29 -38
  259. package/lib/services/plugins-service.js +128 -147
  260. package/lib/services/project-backup-service.js +1 -1
  261. package/lib/services/project-changes-service.js +129 -139
  262. package/lib/services/project-cleanup-service.js +64 -77
  263. package/lib/services/project-config-service.js +71 -80
  264. package/lib/services/project-data-service.js +116 -139
  265. package/lib/services/project-name-service.js +28 -43
  266. package/lib/services/project-service.js +84 -103
  267. package/lib/services/project-templates-service.js +52 -67
  268. package/lib/services/start-service.js +41 -59
  269. package/lib/services/temp-service.js +8 -21
  270. package/lib/services/terminal-spinner-service.js +13 -24
  271. package/lib/services/test-execution-service.js +59 -72
  272. package/lib/services/test-initialization-service.js +2 -2
  273. package/lib/services/timeline-profiler-service.js +1 -1
  274. package/lib/services/versions-service.js +119 -138
  275. package/lib/services/webpack/webpack-compiler-service.js +212 -224
  276. package/lib/services/xcconfig-service.js +8 -19
  277. package/lib/services/xcproj-service.js +12 -0
  278. package/lib/sys-info.js +45 -62
  279. package/lib/tools/node-modules/node-modules-builder.js +16 -27
  280. package/lib/yarn-package-manager.js +59 -78
  281. package/lib/yarn2-package-manager.js +60 -79
  282. package/package.json +59 -57
  283. package/vendor/aab-tool/README.txt +1 -1
  284. package/vendor/aab-tool/bundletool.jar +0 -0
  285. package/vendor/gradle-app/app/build.gradle +12 -4
  286. package/vendor/gradle-plugin/build.gradle +12 -4
  287. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
  288. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  289. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
  290. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  291. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  292. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  293. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
  294. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  295. package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
@@ -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.CleanCommand = void 0;
13
4
  const _ = require("lodash");
@@ -23,31 +14,27 @@ class CleanCommand {
23
14
  this.allowedParameters = [];
24
15
  this.$projectData.initializeProjectData();
25
16
  }
26
- execute(args) {
27
- return __awaiter(this, void 0, void 0, function* () {
28
- yield this.$platformCommandHelper.cleanPlatforms(args, this.$projectData, this.$options.frameworkPath);
29
- });
17
+ async execute(args) {
18
+ await this.$platformCommandHelper.cleanPlatforms(args, this.$projectData, this.$options.frameworkPath);
30
19
  }
31
- canExecute(args) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- if (!args || args.length === 0) {
34
- this.$errors.failWithHelp("No platform specified. Please specify a platform to clean.");
35
- }
36
- _.each(args, (platform) => {
37
- this.$platformValidationService.validatePlatform(platform, this.$projectData);
38
- });
39
- for (const platform of args) {
40
- this.$platformValidationService.validatePlatformInstalled(platform, this.$projectData);
41
- const currentRuntimeVersion = this.$platformCommandHelper.getCurrentPlatformVersion(platform, this.$projectData);
42
- yield this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
43
- platform,
44
- projectDir: this.$projectData.projectDir,
45
- runtimeVersion: currentRuntimeVersion,
46
- options: this.$options,
47
- });
48
- }
49
- return true;
20
+ async canExecute(args) {
21
+ if (!args || args.length === 0) {
22
+ this.$errors.failWithHelp("No platform specified. Please specify a platform to clean.");
23
+ }
24
+ _.each(args, (platform) => {
25
+ this.$platformValidationService.validatePlatform(platform, this.$projectData);
50
26
  });
27
+ for (const platform of args) {
28
+ this.$platformValidationService.validatePlatformInstalled(platform, this.$projectData);
29
+ const currentRuntimeVersion = this.$platformCommandHelper.getCurrentPlatformVersion(platform, this.$projectData);
30
+ await this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
31
+ platform,
32
+ projectDir: this.$projectData.projectDir,
33
+ runtimeVersion: currentRuntimeVersion,
34
+ options: this.$options,
35
+ });
36
+ }
37
+ return true;
51
38
  }
52
39
  }
53
40
  exports.CleanCommand = CleanCommand;
@@ -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.AddPluginCommand = void 0;
13
4
  const _ = require("lodash");
@@ -20,23 +11,19 @@ class AddPluginCommand {
20
11
  this.allowedParameters = [];
21
12
  this.$projectData.initializeProjectData();
22
13
  }
23
- execute(args) {
24
- return __awaiter(this, void 0, void 0, function* () {
25
- return this.$pluginsService.add(args[0], this.$projectData);
26
- });
14
+ async execute(args) {
15
+ return this.$pluginsService.add(args[0], this.$projectData);
27
16
  }
28
- canExecute(args) {
29
- return __awaiter(this, void 0, void 0, function* () {
30
- if (!args[0]) {
31
- this.$errors.failWithHelp("You must specify plugin name.");
32
- }
33
- const installedPlugins = yield this.$pluginsService.getAllInstalledPlugins(this.$projectData);
34
- const pluginName = args[0].toLowerCase();
35
- if (_.some(installedPlugins, (plugin) => plugin.name.toLowerCase() === pluginName)) {
36
- this.$errors.fail(`Plugin "${pluginName}" is already installed.`);
37
- }
38
- return true;
39
- });
17
+ async canExecute(args) {
18
+ if (!args[0]) {
19
+ this.$errors.failWithHelp("You must specify plugin name.");
20
+ }
21
+ const installedPlugins = await this.$pluginsService.getAllInstalledPlugins(this.$projectData);
22
+ const pluginName = args[0].toLowerCase();
23
+ if (_.some(installedPlugins, (plugin) => plugin.name.toLowerCase() === pluginName)) {
24
+ this.$errors.fail(`Plugin "${pluginName}" is already installed.`);
25
+ }
26
+ return true;
40
27
  }
41
28
  }
42
29
  exports.AddPluginCommand = AddPluginCommand;
@@ -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.BuildPluginCommand = void 0;
13
4
  const os_1 = require("os");
@@ -26,44 +17,42 @@ class BuildPluginCommand {
26
17
  this.allowedParameters = [];
27
18
  this.pluginProjectPath = path.resolve(this.$options.path || ".");
28
19
  }
29
- execute(args) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- const platformsAndroidPath = path.join(this.pluginProjectPath, constants.PLATFORMS_DIR_NAME, "android");
32
- let pluginName = "";
33
- const pluginPackageJsonPath = path.join(this.pluginProjectPath, constants.PACKAGE_JSON_FILE_NAME);
34
- if (this.$fs.exists(pluginPackageJsonPath)) {
35
- const packageJsonContents = this.$fs.readJson(pluginPackageJsonPath);
36
- if (packageJsonContents && packageJsonContents["name"]) {
37
- pluginName = packageJsonContents["name"];
38
- }
20
+ async execute(args) {
21
+ const platformsAndroidPath = path.join(this.pluginProjectPath, constants.PLATFORMS_DIR_NAME, "android");
22
+ let pluginName = "";
23
+ const pluginPackageJsonPath = path.join(this.pluginProjectPath, constants.PACKAGE_JSON_FILE_NAME);
24
+ if (this.$fs.exists(pluginPackageJsonPath)) {
25
+ const packageJsonContents = this.$fs.readJson(pluginPackageJsonPath);
26
+ if (packageJsonContents && packageJsonContents["name"]) {
27
+ pluginName = packageJsonContents["name"];
39
28
  }
40
- const tempAndroidProject = yield this.$tempService.mkdirSync("android-project");
41
- const gradleArgs = (this.$projectData.nsConfig.android.gradleArgs || [].concat(this.$options.gradleArgs || []));
42
- const options = {
43
- gradlePath: this.$options.gradlePath,
44
- gradleArgs,
45
- aarOutputDir: platformsAndroidPath,
46
- platformsAndroidDirPath: platformsAndroidPath,
47
- pluginName: pluginName,
48
- tempPluginDirPath: tempAndroidProject,
49
- };
50
- const androidPluginBuildResult = yield this.$androidPluginBuildService.buildAar(options);
51
- if (androidPluginBuildResult) {
52
- this.$logger.info(`${pluginName} successfully built aar at ${platformsAndroidPath}.${os_1.EOL}Temporary Android project can be found at ${tempAndroidProject}.`);
53
- }
54
- const migratedIncludeGradle = this.$androidPluginBuildService.migrateIncludeGradle(options);
55
- if (migratedIncludeGradle) {
56
- this.$logger.info(`${pluginName} include gradle updated.`);
57
- }
58
- });
29
+ }
30
+ const tempAndroidProject = await this.$tempService.mkdirSync("android-project");
31
+ const gradleArgs = (this.$projectData.nsConfig.android.gradleArgs || []).concat(this.$options.gradleArgs || []);
32
+ const pluginOptions = (this.$projectData.nsConfig.android.plugins || {})[pluginName] || {};
33
+ const options = {
34
+ gradlePath: this.$options.gradlePath,
35
+ gradleArgs,
36
+ aarOutputDir: platformsAndroidPath,
37
+ platformsAndroidDirPath: platformsAndroidPath,
38
+ pluginName: pluginName,
39
+ tempPluginDirPath: tempAndroidProject,
40
+ ...pluginOptions
41
+ };
42
+ const androidPluginBuildResult = await this.$androidPluginBuildService.buildAar(options);
43
+ if (androidPluginBuildResult) {
44
+ this.$logger.info(`${pluginName} successfully built aar at ${platformsAndroidPath}.${os_1.EOL}Temporary Android project can be found at ${tempAndroidProject}.`);
45
+ }
46
+ const migratedIncludeGradle = this.$androidPluginBuildService.migrateIncludeGradle(options);
47
+ if (migratedIncludeGradle) {
48
+ this.$logger.info(`${pluginName} include gradle updated.`);
49
+ }
59
50
  }
60
- canExecute(args) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- if (!this.$fs.exists(path.join(this.pluginProjectPath, constants.PLATFORMS_DIR_NAME, "android"))) {
63
- this.$errors.fail("No plugin found at the current directory, or the plugin does not need to have its platforms/android components built into an `.aar`.");
64
- }
65
- return true;
66
- });
51
+ async canExecute(args) {
52
+ if (!this.$fs.exists(path.join(this.pluginProjectPath, constants.PLATFORMS_DIR_NAME, "android"))) {
53
+ this.$errors.fail("No plugin found at the current directory, or the plugin does not need to have its platforms/android components built into an `.aar`.");
54
+ }
55
+ return true;
67
56
  }
68
57
  }
69
58
  exports.BuildPluginCommand = BuildPluginCommand;
@@ -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.CreatePluginCommand = void 0;
13
4
  const path = require("path");
@@ -31,72 +22,66 @@ class CreatePluginCommand {
31
22
  this.includeAngularDemoMessage = 'Do you want to include an "Angular NativeScript" application linked with your plugin to make development easier?';
32
23
  this.pathAlreadyExistsMessageTemplate = "Path already exists and is not empty %s";
33
24
  }
34
- execute(args) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const pluginRepoName = args[0];
37
- const pathToProject = this.$options.path;
38
- const selectedTemplate = this.$options.template;
39
- const selectedPath = path.resolve(pathToProject || ".");
40
- const projectDir = path.join(selectedPath, pluginRepoName);
41
- this.ensurePackageDir(projectDir);
42
- try {
43
- yield this.downloadPackage(selectedTemplate, projectDir);
44
- yield this.setupSeed(projectDir, pluginRepoName);
45
- }
46
- catch (err) {
47
- this.$fs.deleteDirectory(projectDir);
48
- throw err;
49
- }
50
- this.$logger.printMarkdown("Solution for `%s` was successfully created.", pluginRepoName);
51
- });
25
+ async execute(args) {
26
+ const pluginRepoName = args[0];
27
+ const pathToProject = this.$options.path;
28
+ const selectedTemplate = this.$options.template;
29
+ const selectedPath = path.resolve(pathToProject || ".");
30
+ const projectDir = path.join(selectedPath, pluginRepoName);
31
+ this.ensurePackageDir(projectDir);
32
+ try {
33
+ await this.downloadPackage(selectedTemplate, projectDir);
34
+ await this.setupSeed(projectDir, pluginRepoName);
35
+ }
36
+ catch (err) {
37
+ this.$fs.deleteDirectory(projectDir);
38
+ throw err;
39
+ }
40
+ this.$logger.printMarkdown("Solution for `%s` was successfully created.", pluginRepoName);
52
41
  }
53
- canExecute(args) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- if (!args[0]) {
56
- this.$errors.failWithHelp("You must specify the plugin repository name.");
57
- }
58
- return true;
59
- });
42
+ async canExecute(args) {
43
+ if (!args[0]) {
44
+ this.$errors.failWithHelp("You must specify the plugin repository name.");
45
+ }
46
+ return true;
60
47
  }
61
- setupSeed(projectDir, pluginRepoName) {
62
- return __awaiter(this, void 0, void 0, function* () {
63
- this.$logger.printMarkdown("Executing initial plugin configuration script...");
64
- const config = this.$options;
65
- const spinner = this.$terminalSpinnerService.createSpinner();
66
- const cwd = path.join(projectDir, "src");
67
- try {
68
- spinner.start();
69
- const npmOptions = { silent: true };
70
- yield this.$packageManager.install(cwd, cwd, npmOptions);
71
- }
72
- finally {
73
- spinner.stop();
74
- }
75
- const gitHubUsername = yield this.getGitHubUsername(config.username);
76
- const pluginNameSource = yield this.getPluginNameSource(config.pluginName, pluginRepoName);
77
- const includeTypescriptDemo = yield this.getShouldIncludeDemoResult(config.includeTypeScriptDemo, this.includeTypeScriptDemoMessage);
78
- const includeAngularDemo = yield this.getShouldIncludeDemoResult(config.includeAngularDemo, this.includeAngularDemoMessage);
79
- if (!(0, helpers_1.isInteractive)() &&
80
- (!config.username ||
81
- !config.pluginName ||
82
- !config.includeAngularDemo ||
83
- !config.includeTypeScriptDemo)) {
84
- this.$logger.printMarkdown("Using default values for plugin creation options since your shell is not interactive.");
85
- }
86
- const pathToPostCloneScript = path.join("scripts", "postclone");
87
- const params = [
88
- pathToPostCloneScript,
89
- `gitHubUsername=${gitHubUsername}`,
90
- `pluginName=${pluginNameSource}`,
91
- "initGit=y",
92
- `includeTypeScriptDemo=${includeTypescriptDemo}`,
93
- `includeAngularDemo=${includeAngularDemo}`,
94
- ];
95
- const outputScript = yield this.$childProcess.spawnFromEvent(process.execPath, params, "close", { stdio: "inherit", cwd, timeout: 10000 });
96
- if (outputScript && outputScript.stdout) {
97
- this.$logger.printMarkdown(outputScript.stdout);
98
- }
99
- });
48
+ async setupSeed(projectDir, pluginRepoName) {
49
+ this.$logger.printMarkdown("Executing initial plugin configuration script...");
50
+ const config = this.$options;
51
+ const spinner = this.$terminalSpinnerService.createSpinner();
52
+ const cwd = path.join(projectDir, "src");
53
+ try {
54
+ spinner.start();
55
+ const npmOptions = { silent: true };
56
+ await this.$packageManager.install(cwd, cwd, npmOptions);
57
+ }
58
+ finally {
59
+ spinner.stop();
60
+ }
61
+ const gitHubUsername = await this.getGitHubUsername(config.username);
62
+ const pluginNameSource = await this.getPluginNameSource(config.pluginName, pluginRepoName);
63
+ const includeTypescriptDemo = await this.getShouldIncludeDemoResult(config.includeTypeScriptDemo, this.includeTypeScriptDemoMessage);
64
+ const includeAngularDemo = await this.getShouldIncludeDemoResult(config.includeAngularDemo, this.includeAngularDemoMessage);
65
+ if (!(0, helpers_1.isInteractive)() &&
66
+ (!config.username ||
67
+ !config.pluginName ||
68
+ !config.includeAngularDemo ||
69
+ !config.includeTypeScriptDemo)) {
70
+ this.$logger.printMarkdown("Using default values for plugin creation options since your shell is not interactive.");
71
+ }
72
+ const pathToPostCloneScript = path.join("scripts", "postclone");
73
+ const params = [
74
+ pathToPostCloneScript,
75
+ `gitHubUsername=${gitHubUsername}`,
76
+ `pluginName=${pluginNameSource}`,
77
+ "initGit=y",
78
+ `includeTypeScriptDemo=${includeTypescriptDemo}`,
79
+ `includeAngularDemo=${includeAngularDemo}`,
80
+ ];
81
+ const outputScript = await this.$childProcess.spawnFromEvent(process.execPath, params, "close", { stdio: "inherit", cwd, timeout: 10000 });
82
+ if (outputScript && outputScript.stdout) {
83
+ this.$logger.printMarkdown(outputScript.stdout);
84
+ }
100
85
  }
101
86
  ensurePackageDir(projectDir) {
102
87
  this.$fs.createDirectory(projectDir);
@@ -104,71 +89,63 @@ class CreatePluginCommand {
104
89
  this.$errors.fail(this.pathAlreadyExistsMessageTemplate, projectDir);
105
90
  }
106
91
  }
107
- downloadPackage(selectedTemplate, projectDir) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- if (selectedTemplate) {
110
- this.$logger.printMarkdown("Make sure your custom template is compatible with the Plugin Seed at https://github.com/NativeScript/nativescript-plugin-seed/");
111
- }
112
- else {
113
- this.$logger.printMarkdown("Downloading the latest version of NativeScript Plugin Seed...");
114
- }
115
- const spinner = this.$terminalSpinnerService.createSpinner();
116
- const packageToInstall = selectedTemplate ||
117
- "https://github.com/NativeScript/nativescript-plugin-seed/archive/master.tar.gz";
118
- try {
119
- spinner.start();
120
- yield this.$pacoteService.extractPackage(packageToInstall, projectDir);
121
- }
122
- finally {
123
- spinner.stop();
124
- }
125
- });
126
- }
127
- getGitHubUsername(gitHubUsername) {
128
- return __awaiter(this, void 0, void 0, function* () {
129
- if (!gitHubUsername) {
130
- gitHubUsername = "NativeScriptDeveloper";
131
- if ((0, helpers_1.isInteractive)()) {
132
- gitHubUsername = yield this.$prompter.getString(this.userMessage, {
133
- allowEmpty: false,
134
- defaultAction: () => {
135
- return gitHubUsername;
136
- },
137
- });
138
- }
139
- }
140
- return gitHubUsername;
141
- });
92
+ async downloadPackage(selectedTemplate, projectDir) {
93
+ if (selectedTemplate) {
94
+ this.$logger.printMarkdown("Make sure your custom template is compatible with the Plugin Seed at https://github.com/NativeScript/nativescript-plugin-seed/");
95
+ }
96
+ else {
97
+ this.$logger.printMarkdown("Downloading the latest version of NativeScript Plugin Seed...");
98
+ }
99
+ const spinner = this.$terminalSpinnerService.createSpinner();
100
+ const packageToInstall = selectedTemplate ||
101
+ "https://github.com/NativeScript/nativescript-plugin-seed/archive/master.tar.gz";
102
+ try {
103
+ spinner.start();
104
+ await this.$pacoteService.extractPackage(packageToInstall, projectDir);
105
+ }
106
+ finally {
107
+ spinner.stop();
108
+ }
142
109
  }
143
- getPluginNameSource(pluginNameSource, pluginRepoName) {
144
- return __awaiter(this, void 0, void 0, function* () {
145
- if (!pluginNameSource) {
146
- const prefix = "nativescript-";
147
- pluginNameSource = pluginRepoName.toLowerCase().startsWith(prefix)
148
- ? pluginRepoName.slice(prefix.length, pluginRepoName.length)
149
- : pluginRepoName;
150
- if ((0, helpers_1.isInteractive)()) {
151
- pluginNameSource = yield this.$prompter.getString(this.nameMessage, {
152
- allowEmpty: false,
153
- defaultAction: () => {
154
- return pluginNameSource;
155
- },
156
- });
157
- }
110
+ async getGitHubUsername(gitHubUsername) {
111
+ if (!gitHubUsername) {
112
+ gitHubUsername = "NativeScriptDeveloper";
113
+ if ((0, helpers_1.isInteractive)()) {
114
+ gitHubUsername = await this.$prompter.getString(this.userMessage, {
115
+ allowEmpty: false,
116
+ defaultAction: () => {
117
+ return gitHubUsername;
118
+ },
119
+ });
158
120
  }
159
- return pluginNameSource;
160
- });
121
+ }
122
+ return gitHubUsername;
161
123
  }
162
- getShouldIncludeDemoResult(includeDemoOption, message) {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- let shouldIncludeDemo = !!includeDemoOption;
165
- if (!includeDemoOption && (0, helpers_1.isInteractive)()) {
166
- shouldIncludeDemo = yield this.$prompter.confirm(message, () => {
167
- return true;
124
+ async getPluginNameSource(pluginNameSource, pluginRepoName) {
125
+ if (!pluginNameSource) {
126
+ const prefix = "nativescript-";
127
+ pluginNameSource = pluginRepoName.toLowerCase().startsWith(prefix)
128
+ ? pluginRepoName.slice(prefix.length, pluginRepoName.length)
129
+ : pluginRepoName;
130
+ if ((0, helpers_1.isInteractive)()) {
131
+ pluginNameSource = await this.$prompter.getString(this.nameMessage, {
132
+ allowEmpty: false,
133
+ defaultAction: () => {
134
+ return pluginNameSource;
135
+ },
168
136
  });
169
137
  }
170
- return shouldIncludeDemo ? "y" : "n";
171
- });
138
+ }
139
+ return pluginNameSource;
140
+ }
141
+ async getShouldIncludeDemoResult(includeDemoOption, message) {
142
+ let shouldIncludeDemo = !!includeDemoOption;
143
+ if (!includeDemoOption && (0, helpers_1.isInteractive)()) {
144
+ shouldIncludeDemo = await this.$prompter.confirm(message, () => {
145
+ return true;
146
+ });
147
+ }
148
+ return shouldIncludeDemo ? "y" : "n";
172
149
  }
173
150
  }
174
151
  exports.CreatePluginCommand = CreatePluginCommand;
@@ -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.ListPluginsCommand = void 0;
13
4
  const helpers_1 = require("../../common/helpers");
@@ -21,30 +12,28 @@ class ListPluginsCommand {
21
12
  this.allowedParameters = [];
22
13
  this.$projectData.initializeProjectData();
23
14
  }
24
- execute(args) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const installedPlugins = this.$pluginsService.getDependenciesFromPackageJson(this.$projectData.projectDir);
27
- const headers = ["Plugin", "Version"];
28
- const dependenciesData = this.createTableCells(installedPlugins.dependencies);
29
- const dependenciesTable = (0, helpers_1.createTable)(headers, dependenciesData);
30
- this.$logger.info("Dependencies:");
31
- this.$logger.info(dependenciesTable.toString());
32
- if (installedPlugins.devDependencies &&
33
- installedPlugins.devDependencies.length) {
34
- const devDependenciesData = this.createTableCells(installedPlugins.devDependencies);
35
- const devDependenciesTable = (0, helpers_1.createTable)(headers, devDependenciesData);
36
- this.$logger.info("Dev Dependencies:");
37
- this.$logger.info(devDependenciesTable.toString());
38
- }
39
- else {
40
- this.$logger.info("There are no dev dependencies.");
41
- }
42
- const viewDependenciesCommand = color_1.color.cyan("npm view <pluginName> grep dependencies");
43
- const viewDevDependenciesCommand = color_1.color.cyan("npm view <pluginName> grep devDependencies");
44
- this.$logger.warn("NOTE:");
45
- this.$logger.warn(`If you want to check the dependencies of installed plugin use ${viewDependenciesCommand}`);
46
- this.$logger.warn(`If you want to check the dev dependencies of installed plugin use ${viewDevDependenciesCommand}`);
47
- });
15
+ async execute(args) {
16
+ const installedPlugins = this.$pluginsService.getDependenciesFromPackageJson(this.$projectData.projectDir);
17
+ const headers = ["Plugin", "Version"];
18
+ const dependenciesData = this.createTableCells(installedPlugins.dependencies);
19
+ const dependenciesTable = (0, helpers_1.createTable)(headers, dependenciesData);
20
+ this.$logger.info("Dependencies:");
21
+ this.$logger.info(dependenciesTable.toString());
22
+ if (installedPlugins.devDependencies &&
23
+ installedPlugins.devDependencies.length) {
24
+ const devDependenciesData = this.createTableCells(installedPlugins.devDependencies);
25
+ const devDependenciesTable = (0, helpers_1.createTable)(headers, devDependenciesData);
26
+ this.$logger.info("Dev Dependencies:");
27
+ this.$logger.info(devDependenciesTable.toString());
28
+ }
29
+ else {
30
+ this.$logger.info("There are no dev dependencies.");
31
+ }
32
+ const viewDependenciesCommand = color_1.color.cyan("npm view <pluginName> grep dependencies");
33
+ const viewDevDependenciesCommand = color_1.color.cyan("npm view <pluginName> grep devDependencies");
34
+ this.$logger.warn("NOTE:");
35
+ this.$logger.warn(`If you want to check the dependencies of installed plugin use ${viewDependenciesCommand}`);
36
+ this.$logger.warn(`If you want to check the dev dependencies of installed plugin use ${viewDevDependenciesCommand}`);
48
37
  }
49
38
  createTableCells(items) {
50
39
  return items.map((item) => [item.name, item.version]);
@@ -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.RemovePluginCommand = void 0;
13
4
  const _ = require("lodash");
@@ -21,31 +12,27 @@ class RemovePluginCommand {
21
12
  this.allowedParameters = [];
22
13
  this.$projectData.initializeProjectData();
23
14
  }
24
- execute(args) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- return this.$pluginsService.remove(args[0], this.$projectData);
27
- });
15
+ async execute(args) {
16
+ return this.$pluginsService.remove(args[0], this.$projectData);
28
17
  }
29
- canExecute(args) {
30
- return __awaiter(this, void 0, void 0, function* () {
31
- if (!args[0]) {
32
- this.$errors.failWithHelp("You must specify plugin name.");
33
- }
34
- let pluginNames = [];
35
- try {
36
- const installedPlugins = yield this.$pluginsService.getAllInstalledPlugins(this.$projectData);
37
- pluginNames = installedPlugins.map((pl) => pl.name);
38
- }
39
- catch (err) {
40
- this.$logger.trace("Error while installing plugins. Error is:", err);
41
- pluginNames = _.keys(this.$projectData.dependencies);
42
- }
43
- const pluginName = args[0].toLowerCase();
44
- if (!_.some(pluginNames, (name) => name.toLowerCase() === pluginName)) {
45
- this.$errors.fail(`Plugin "${pluginName}" is not installed.`);
46
- }
47
- return true;
48
- });
18
+ async canExecute(args) {
19
+ if (!args[0]) {
20
+ this.$errors.failWithHelp("You must specify plugin name.");
21
+ }
22
+ let pluginNames = [];
23
+ try {
24
+ const installedPlugins = await this.$pluginsService.getAllInstalledPlugins(this.$projectData);
25
+ pluginNames = installedPlugins.map((pl) => pl.name);
26
+ }
27
+ catch (err) {
28
+ this.$logger.trace("Error while installing plugins. Error is:", err);
29
+ pluginNames = _.keys(this.$projectData.dependencies);
30
+ }
31
+ const pluginName = args[0].toLowerCase();
32
+ if (!_.some(pluginNames, (name) => name.toLowerCase() === pluginName)) {
33
+ this.$errors.fail(`Plugin "${pluginName}" is not installed.`);
34
+ }
35
+ return true;
49
36
  }
50
37
  }
51
38
  exports.RemovePluginCommand = RemovePluginCommand;