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.
- package/config/test-deps-versions-generated.json +1 -1
- package/docs/man_pages/project/configuration/widget-ios.md +24 -0
- package/docs/man_pages/project/configuration/widget.md +24 -0
- package/docs/man_pages/start.md +1 -1
- package/lib/android-tools-info.js +11 -22
- package/lib/base-package-manager.js +53 -70
- package/lib/bun-package-manager.js +75 -98
- package/lib/color.js +4 -4
- package/lib/commands/add-platform.js +14 -30
- package/lib/commands/apple-login.js +18 -29
- package/lib/commands/appstore-list.js +34 -45
- package/lib/commands/appstore-upload.js +54 -67
- package/lib/commands/build.js +55 -87
- package/lib/commands/clean.js +169 -184
- package/lib/commands/command-base.js +14 -27
- package/lib/commands/config.js +49 -68
- package/lib/commands/create-project.js +215 -234
- package/lib/commands/debug.js +66 -88
- package/lib/commands/deploy.js +28 -44
- package/lib/commands/embedding/embed.js +37 -56
- package/lib/commands/extensibility/install-extension.js +5 -16
- package/lib/commands/extensibility/list-extensions.js +13 -24
- package/lib/commands/extensibility/uninstall-extension.js +4 -15
- package/lib/commands/fonts.js +30 -41
- package/lib/commands/generate-assets.js +13 -28
- package/lib/commands/generate-help.js +2 -13
- package/lib/commands/generate.js +49 -60
- package/lib/commands/info.js +2 -13
- package/lib/commands/install.js +34 -49
- package/lib/commands/list-platforms.js +14 -25
- package/lib/commands/migrate.js +15 -26
- package/lib/commands/native-add.js +23 -46
- package/lib/commands/platform-clean.js +19 -32
- package/lib/commands/plugin/add-plugin.js +12 -25
- package/lib/commands/plugin/build-plugin.js +31 -44
- package/lib/commands/plugin/create-plugin.js +114 -137
- package/lib/commands/plugin/list-plugins.js +22 -33
- package/lib/commands/plugin/remove-plugin.js +21 -34
- package/lib/commands/plugin/update-plugin.js +20 -33
- package/lib/commands/post-install.js +25 -38
- package/lib/commands/prepare.js +19 -35
- package/lib/commands/preview.js +50 -63
- package/lib/commands/remove-platform.js +7 -18
- package/lib/commands/resources/resources-update.js +14 -27
- package/lib/commands/run.js +55 -76
- package/lib/commands/start.js +6 -19
- package/lib/commands/test-init.js +126 -137
- package/lib/commands/test.js +72 -95
- package/lib/commands/typings.js +126 -142
- package/lib/commands/update-platform.js +26 -39
- package/lib/commands/update.js +31 -44
- package/lib/commands/widget.js +408 -357
- package/lib/common/child-process.js +53 -72
- package/lib/common/codeGeneration/code-entity.js +1 -1
- package/lib/common/codeGeneration/code-printer.js +1 -1
- package/lib/common/command-params.js +7 -18
- package/lib/common/commands/analytics.js +29 -42
- package/lib/common/commands/autocompletion.js +41 -58
- package/lib/common/commands/device/device-log-stream.js +12 -23
- package/lib/common/commands/device/get-file.js +23 -34
- package/lib/common/commands/device/list-applications.js +12 -23
- package/lib/common/commands/device/list-devices.js +72 -87
- package/lib/common/commands/device/list-files.js +24 -35
- package/lib/common/commands/device/put-file.js +23 -34
- package/lib/common/commands/device/run-application.js +12 -25
- package/lib/common/commands/device/stop-application.js +11 -22
- package/lib/common/commands/device/uninstall-application.js +6 -17
- package/lib/common/commands/generate-messages.js +17 -28
- package/lib/common/commands/help.js +20 -33
- package/lib/common/commands/package-manager-get.js +6 -17
- package/lib/common/commands/package-manager-set.js +9 -20
- package/lib/common/commands/post-install.js +2 -13
- package/lib/common/commands/preuninstall.js +27 -42
- package/lib/common/commands/proxy/proxy-base.js +11 -22
- package/lib/common/commands/proxy/proxy-clear.js +4 -15
- package/lib/common/commands/proxy/proxy-get.js +3 -14
- package/lib/common/commands/proxy/proxy-set.js +87 -100
- package/lib/common/constants.js +11 -11
- package/lib/common/decorators.js +10 -22
- package/lib/common/dispatchers.js +84 -101
- package/lib/common/errors.js +92 -107
- package/lib/common/file-system.js +110 -132
- package/lib/common/header.js +1 -2
- package/lib/common/helpers.js +149 -178
- package/lib/common/host-info.js +40 -53
- package/lib/common/http-client.js +104 -119
- package/lib/common/logger/appenders/cli-appender.js +1 -2
- package/lib/common/logger/appenders/emit-appender.js +1 -2
- package/lib/common/logger/layouts/cli-layout.js +1 -2
- package/lib/common/logger/logger.js +4 -4
- package/lib/common/mobile/android/android-application-manager.js +138 -159
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
- package/lib/common/mobile/android/android-debug-bridge.js +92 -117
- package/lib/common/mobile/android/android-device-file-system.js +101 -134
- package/lib/common/mobile/android/android-device-hash-service.js +52 -77
- package/lib/common/mobile/android/android-device.js +73 -90
- package/lib/common/mobile/android/android-emulator-services.js +105 -130
- package/lib/common/mobile/android/android-log-filter.js +1 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +78 -99
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
- package/lib/common/mobile/android/genymotion/genymotion-service.js +94 -121
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +74 -91
- package/lib/common/mobile/android/logcat-helper.js +114 -133
- package/lib/common/mobile/application-manager-base.js +89 -112
- package/lib/common/mobile/device-log-provider-base.js +7 -18
- package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
- package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
- package/lib/common/mobile/ios/device/ios-device-operations.js +106 -143
- package/lib/common/mobile/ios/device/ios-device.js +20 -36
- package/lib/common/mobile/ios/ios-device-base.js +58 -81
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +66 -95
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +61 -90
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +31 -47
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
- package/lib/common/mobile/mobile-core/android-device-discovery.js +44 -63
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +23 -34
- package/lib/common/mobile/mobile-core/android-process-service.js +174 -213
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
- package/lib/common/mobile/mobile-core/devices-service.js +400 -450
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +25 -36
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +49 -64
- package/lib/common/mobile/mobile-helper.js +15 -26
- package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
- package/lib/common/opener.js +2 -2
- package/lib/common/prompter.js +91 -106
- package/lib/common/queue.js +9 -20
- package/lib/common/services/auto-completion-service.js +40 -53
- package/lib/common/services/cancellation.js +17 -28
- package/lib/common/services/commands-service.js +156 -179
- package/lib/common/services/help-service.js +130 -155
- package/lib/common/services/hooks-service.js +99 -114
- package/lib/common/services/ios-notification-service.js +21 -34
- package/lib/common/services/json-file-settings-service.js +56 -75
- package/lib/common/services/lock-service.js +35 -52
- package/lib/common/services/message-contract-generator.js +35 -46
- package/lib/common/services/micro-templating-service.js +6 -17
- package/lib/common/services/net-service.js +92 -109
- package/lib/common/services/project-files-manager.js +10 -23
- package/lib/common/services/proxy-service.js +13 -24
- package/lib/common/services/qr.js +13 -24
- package/lib/common/services/settings-service.js +1 -1
- package/lib/common/services/xcode-select-service.js +20 -35
- package/lib/common/utils.js +2 -2
- package/lib/common/validators/project-name-validator.js +1 -1
- package/lib/common/validators/validation-result.js +1 -1
- package/lib/common/verify-node-version.js +2 -3
- package/lib/common/yok.js +25 -38
- package/lib/config.js +41 -56
- package/lib/constants.js +24 -24
- package/lib/controllers/build-controller.js +82 -99
- package/lib/controllers/debug-controller.js +111 -132
- package/lib/controllers/deploy-controller.js +15 -23
- package/lib/controllers/migrate-controller.js +780 -853
- package/lib/controllers/platform-controller.js +74 -89
- package/lib/controllers/prepare-controller.js +241 -270
- package/lib/controllers/run-controller.js +411 -425
- package/lib/controllers/update-controller-base.js +16 -29
- package/lib/controllers/update-controller.js +101 -126
- package/lib/data/prepare-data.js +4 -1
- package/lib/definitions/project.d.ts +24 -24
- package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
- package/lib/detached-processes/cleanup-process.js +16 -25
- package/lib/device-path-provider.js +23 -34
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +155 -170
- package/lib/device-sockets/ios/notification.js +1 -1
- package/lib/device-sockets/ios/socket-request-executor.js +26 -41
- package/lib/helpers/android-bundle-validator-helper.js +1 -1
- package/lib/helpers/deploy-command-helper.js +44 -49
- package/lib/helpers/key-command-helper.js +4 -13
- package/lib/helpers/livesync-command-helper.js +138 -153
- package/lib/helpers/network-connectivity-validator.js +6 -17
- package/lib/helpers/options-track-helper.js +6 -17
- package/lib/helpers/platform-command-helper.js +103 -124
- package/lib/key-commands/index.js +150 -200
- package/lib/nativescript-cli.js +5 -14
- package/lib/node-package-manager.js +90 -113
- package/lib/options.js +4 -13
- package/lib/package-installation-manager.js +132 -167
- package/lib/package-manager.js +64 -87
- package/lib/platform-command-param.js +4 -15
- package/lib/pnpm-package-manager.js +60 -79
- package/lib/project-data.js +1 -1
- package/lib/providers/project-files-provider.js +1 -1
- package/lib/services/analytics/analytics-broker-process.js +13 -22
- package/lib/services/analytics/analytics-broker.js +17 -30
- package/lib/services/analytics/analytics-service.js +165 -201
- package/lib/services/analytics/google-analytics-provider.js +41 -56
- package/lib/services/analytics-settings-service.js +15 -32
- package/lib/services/android/android-bundle-tool-service.js +43 -60
- package/lib/services/android/gradle-build-args-service.js +10 -21
- package/lib/services/android/gradle-build-service.js +22 -35
- package/lib/services/android/gradle-command-service.js +22 -35
- package/lib/services/android-device-debug-service.js +92 -119
- package/lib/services/android-plugin-build-service.js +219 -245
- package/lib/services/android-project-service.js +134 -179
- package/lib/services/android-resources-migration-service.js +57 -70
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
- package/lib/services/apple-portal/apple-portal-session-service.js +196 -215
- package/lib/services/apple-portal/srp/srp-wrapper.js +45 -60
- package/lib/services/assets-generation/assets-generation-service.js +114 -128
- package/lib/services/build-artifacts-service.js +9 -20
- package/lib/services/build-info-file-service.js +20 -35
- package/lib/services/cleanup-service.js +47 -76
- package/lib/services/cocoapods-service.js +124 -145
- package/lib/services/device/device-install-app-service.js +54 -71
- package/lib/services/doctor-service.js +106 -125
- package/lib/services/extensibility-service.js +87 -106
- package/lib/services/files-hash-service.js +26 -43
- package/lib/services/hmr-status-service.js +1 -1
- package/lib/services/initialize-service.js +38 -51
- package/lib/services/ios/export-options-plist-service.js +41 -54
- package/lib/services/ios/ios-signing-service.js +171 -190
- package/lib/services/ios/spm-service.js +52 -65
- package/lib/services/ios/xcodebuild-args-service.js +77 -94
- package/lib/services/ios/xcodebuild-command-service.js +14 -25
- package/lib/services/ios/xcodebuild-service.js +52 -71
- package/lib/services/ios-debugger-port-service.js +24 -37
- package/lib/services/ios-device-debug-service.js +75 -102
- package/lib/services/ios-entitlements-service.js +31 -42
- package/lib/services/ios-extensions-service.js +18 -29
- package/lib/services/ios-project-service.js +530 -591
- package/lib/services/ios-provision-service.js +110 -131
- package/lib/services/ios-watch-app-service.js +21 -32
- package/lib/services/ip-service.js +39 -54
- package/lib/services/itmstransporter-service.js +129 -152
- package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
- package/lib/services/livesync/android-device-livesync-service.js +121 -150
- package/lib/services/livesync/android-device-livesync-sockets-service.js +123 -154
- package/lib/services/livesync/android-livesync-service.js +14 -35
- package/lib/services/livesync/android-livesync-tool.js +90 -113
- package/lib/services/livesync/device-livesync-service-base.js +16 -29
- package/lib/services/livesync/ios-device-livesync-service.js +120 -149
- package/lib/services/livesync/ios-livesync-service.js +43 -59
- package/lib/services/livesync/platform-livesync-service-base.js +98 -123
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +31 -42
- package/lib/services/marking-mode-service.js +17 -30
- package/lib/services/npm-config-service.js +1 -1
- package/lib/services/pacote-service.js +54 -69
- package/lib/services/performance-service.js +1 -1
- package/lib/services/platform/add-platform-service.js +57 -78
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +51 -64
- package/lib/services/platform-environment-requirements.js +27 -38
- package/lib/services/plugins-service.js +126 -151
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +126 -143
- package/lib/services/project-cleanup-service.js +65 -78
- package/lib/services/project-config-service.js +78 -88
- package/lib/services/project-data-service.js +112 -129
- package/lib/services/project-name-service.js +28 -43
- package/lib/services/project-service.js +90 -109
- package/lib/services/project-templates-service.js +52 -67
- package/lib/services/start-service.js +41 -59
- package/lib/services/temp-service.js +8 -21
- package/lib/services/terminal-spinner-service.js +15 -26
- package/lib/services/test-execution-service.js +64 -77
- package/lib/services/test-initialization-service.js +2 -2
- package/lib/services/timeline-profiler-service.js +1 -1
- package/lib/services/versions-service.js +120 -139
- package/lib/services/webpack/webpack-compiler-service.js +228 -251
- package/lib/services/xcconfig-service.js +8 -19
- package/lib/sys-info.js +45 -62
- package/lib/tools/node-modules/node-modules-builder.js +16 -27
- package/lib/yarn-package-manager.js +59 -78
- package/lib/yarn2-package-manager.js +62 -81
- package/package.json +67 -82
- package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
- package/node_modules/@npmcli/move-file/README.md +0 -69
- package/node_modules/@npmcli/move-file/lib/index.js +0 -185
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
- package/node_modules/@npmcli/move-file/package.json +0 -47
- package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/node_modules/balanced-match/LICENSE.md +0 -21
- package/node_modules/balanced-match/README.md +0 -97
- package/node_modules/balanced-match/index.js +0 -62
- package/node_modules/balanced-match/package.json +0 -48
- package/node_modules/concat-map/.travis.yml +0 -4
- package/node_modules/concat-map/LICENSE +0 -18
- package/node_modules/concat-map/README.markdown +0 -62
- package/node_modules/concat-map/example/map.js +0 -6
- package/node_modules/concat-map/index.js +0 -13
- package/node_modules/concat-map/package.json +0 -43
- package/node_modules/concat-map/test/map.js +0 -39
- package/node_modules/fs.realpath/LICENSE +0 -43
- package/node_modules/fs.realpath/README.md +0 -33
- package/node_modules/fs.realpath/index.js +0 -66
- package/node_modules/fs.realpath/old.js +0 -303
- package/node_modules/fs.realpath/package.json +0 -26
- package/node_modules/inflight/LICENSE +0 -15
- package/node_modules/inflight/README.md +0 -37
- package/node_modules/inflight/inflight.js +0 -54
- package/node_modules/inflight/package.json +0 -29
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/once/LICENSE +0 -15
- package/node_modules/once/README.md +0 -79
- package/node_modules/once/once.js +0 -42
- package/node_modules/once/package.json +0 -33
- package/node_modules/path-is-absolute/index.js +0 -20
- package/node_modules/path-is-absolute/license +0 -21
- package/node_modules/path-is-absolute/package.json +0 -43
- package/node_modules/path-is-absolute/readme.md +0 -59
- package/node_modules/rimraf/LICENSE +0 -15
- package/node_modules/rimraf/README.md +0 -101
- package/node_modules/rimraf/bin.js +0 -68
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
- package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/glob/README.md +0 -378
- package/node_modules/rimraf/node_modules/glob/common.js +0 -238
- package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
- package/node_modules/rimraf/node_modules/glob/package.json +0 -55
- package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
- package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
- package/node_modules/rimraf/package.json +0 -32
- package/node_modules/rimraf/rimraf.js +0 -360
- package/node_modules/stringify-package/LICENSE +0 -13
- package/node_modules/stringify-package/README.md +0 -55
- package/node_modules/stringify-package/index.js +0 -18
- package/node_modules/stringify-package/package.json +0 -38
- package/node_modules/wrappy/LICENSE +0 -15
- package/node_modules/wrappy/README.md +0 -36
- package/node_modules/wrappy/package.json +0 -29
- package/node_modules/wrappy/wrappy.js +0 -33
package/lib/commands/start.js
CHANGED
|
@@ -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.StartCommand = void 0;
|
|
13
4
|
const header_1 = require("../common/header");
|
|
@@ -16,17 +7,13 @@ class StartCommand {
|
|
|
16
7
|
constructor($startService) {
|
|
17
8
|
this.$startService = $startService;
|
|
18
9
|
}
|
|
19
|
-
execute(args) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return;
|
|
24
|
-
});
|
|
10
|
+
async execute(args) {
|
|
11
|
+
(0, header_1.printHeader)();
|
|
12
|
+
this.$startService.start();
|
|
13
|
+
return;
|
|
25
14
|
}
|
|
26
|
-
canExecute(args) {
|
|
27
|
-
return
|
|
28
|
-
return true;
|
|
29
|
-
});
|
|
15
|
+
async canExecute(args) {
|
|
16
|
+
return true;
|
|
30
17
|
}
|
|
31
18
|
}
|
|
32
19
|
exports.StartCommand = StartCommand;
|
|
@@ -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 path = require("path");
|
|
13
4
|
const _ = require("lodash");
|
|
@@ -33,138 +24,136 @@ class TestInitCommand {
|
|
|
33
24
|
};
|
|
34
25
|
this.$projectData.initializeProjectData();
|
|
35
26
|
}
|
|
36
|
-
execute(args) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
path: this.$options.path,
|
|
68
|
-
});
|
|
69
|
-
const modulePath = path.join(projectDir, "node_modules", mod.name);
|
|
70
|
-
const modulePackageJsonPath = path.join(modulePath, "package.json");
|
|
71
|
-
const modulePackageJsonContent = this.$fs.readJson(modulePackageJsonPath);
|
|
72
|
-
const modulePeerDependencies = modulePackageJsonContent.peerDependencies || {};
|
|
73
|
-
for (const peerDependency in modulePeerDependencies) {
|
|
74
|
-
const isPeerDependencyExcluded = _.includes(mod.excludedPeerDependencies, peerDependency);
|
|
75
|
-
if (isPeerDependencyExcluded) {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
const dependencyVersion = modulePeerDependencies[peerDependency] || "*";
|
|
79
|
-
// catch errors when a peerDependency is already installed
|
|
80
|
-
// e.g karma is installed; karma-jasmine depends on karma and will try to install it again
|
|
81
|
-
try {
|
|
82
|
-
yield this.$packageManager.install(`${peerDependency}@${dependencyVersion}`, projectDir, {
|
|
83
|
-
"save-dev": true,
|
|
84
|
-
"save-exact": true,
|
|
85
|
-
disableNpmInstall: false,
|
|
86
|
-
frameworkPath: this.$options.frameworkPath,
|
|
87
|
-
ignoreScripts: this.$options.ignoreScripts,
|
|
88
|
-
path: this.$options.path,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
this.$logger.error(e.message);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
yield this.$pluginsService.add("@nativescript/unit-test-runner", this.$projectData);
|
|
97
|
-
this.$logger.clearScreen();
|
|
98
|
-
const bufferedLogs = [];
|
|
99
|
-
const testsDir = path.join(this.$projectData.appDirectoryPath, "tests");
|
|
100
|
-
const projectTestsDir = path.relative(this.$projectData.projectDir, testsDir);
|
|
101
|
-
const relativeTestsDir = path.relative(this.$projectData.appDirectoryPath, testsDir);
|
|
102
|
-
let shouldCreateSampleTests = true;
|
|
103
|
-
if (this.$fs.exists(testsDir)) {
|
|
104
|
-
const specFilenamePattern = `<filename>.spec${projectFilesExtension}`;
|
|
105
|
-
bufferedLogs.push(color_1.color.yellow([
|
|
106
|
-
`Note: The "${projectTestsDir}" directory already exists, will not create example tests in the project.`,
|
|
107
|
-
`You may create "${specFilenamePattern}" files anywhere you'd like.`,
|
|
108
|
-
"",
|
|
109
|
-
].join("\n")));
|
|
110
|
-
shouldCreateSampleTests = false;
|
|
111
|
-
}
|
|
112
|
-
this.$fs.ensureDirectoryExists(testsDir);
|
|
113
|
-
const frameworks = [frameworkToInstall]
|
|
114
|
-
.concat(this.karmaConfigAdditionalFrameworks[frameworkToInstall] || [])
|
|
115
|
-
.map((fw) => `'${fw}'`)
|
|
116
|
-
.join(", ");
|
|
117
|
-
const testFiles = `'${(0, helpers_1.fromWindowsRelativePathToUnix)(relativeTestsDir)}/**/*${projectFilesExtension}'`;
|
|
118
|
-
const karmaConfTemplate = this.$resources.readText("test/karma.conf.js");
|
|
119
|
-
const karmaConf = _.template(karmaConfTemplate)({
|
|
120
|
-
frameworks,
|
|
121
|
-
testFiles,
|
|
122
|
-
basePath: this.$projectData.getAppDirectoryRelativePath(),
|
|
27
|
+
async execute(args) {
|
|
28
|
+
const projectDir = this.$projectData.projectDir;
|
|
29
|
+
const frameworkToInstall = this.$options.framework ||
|
|
30
|
+
(await this.$prompter.promptForChoice("Select testing framework:", constants_1.TESTING_FRAMEWORKS));
|
|
31
|
+
if (constants_1.TESTING_FRAMEWORKS.indexOf(frameworkToInstall) === -1) {
|
|
32
|
+
this.$errors.failWithHelp(`Unknown or unsupported unit testing framework: ${frameworkToInstall}.`);
|
|
33
|
+
}
|
|
34
|
+
const projectFilesExtension = this.$projectData.projectType === constants_1.ProjectTypes.TsFlavorName ||
|
|
35
|
+
this.$projectData.projectType === constants_1.ProjectTypes.NgFlavorName
|
|
36
|
+
? ".ts"
|
|
37
|
+
: ".js";
|
|
38
|
+
let modulesToInstall = [];
|
|
39
|
+
try {
|
|
40
|
+
modulesToInstall = this.$testInitializationService.getDependencies(frameworkToInstall);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
this.$errors.fail(`Unable to install the unit testing dependencies. Error: '${err.message}'`);
|
|
44
|
+
}
|
|
45
|
+
modulesToInstall = modulesToInstall.filter((moduleToInstall) => !moduleToInstall.projectType ||
|
|
46
|
+
moduleToInstall.projectType === projectFilesExtension);
|
|
47
|
+
for (const mod of modulesToInstall) {
|
|
48
|
+
let moduleToInstall = mod.name;
|
|
49
|
+
moduleToInstall += `@${mod.version}`;
|
|
50
|
+
await this.$packageManager.install(moduleToInstall, projectDir, {
|
|
51
|
+
"save-dev": true,
|
|
52
|
+
"save-exact": true,
|
|
53
|
+
optional: false,
|
|
54
|
+
disableNpmInstall: this.$options.disableNpmInstall,
|
|
55
|
+
frameworkPath: this.$options.frameworkPath,
|
|
56
|
+
ignoreScripts: this.$options.ignoreScripts,
|
|
57
|
+
path: this.$options.path,
|
|
123
58
|
});
|
|
124
|
-
|
|
125
|
-
const
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
59
|
+
const modulePath = path.join(projectDir, "node_modules", mod.name);
|
|
60
|
+
const modulePackageJsonPath = path.join(modulePath, "package.json");
|
|
61
|
+
const modulePackageJsonContent = this.$fs.readJson(modulePackageJsonPath);
|
|
62
|
+
const modulePeerDependencies = modulePackageJsonContent.peerDependencies || {};
|
|
63
|
+
for (const peerDependency in modulePeerDependencies) {
|
|
64
|
+
const isPeerDependencyExcluded = _.includes(mod.excludedPeerDependencies, peerDependency);
|
|
65
|
+
if (isPeerDependencyExcluded) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const dependencyVersion = modulePeerDependencies[peerDependency] || "*";
|
|
69
|
+
// catch errors when a peerDependency is already installed
|
|
70
|
+
// e.g karma is installed; karma-jasmine depends on karma and will try to install it again
|
|
71
|
+
try {
|
|
72
|
+
await this.$packageManager.install(`${peerDependency}@${dependencyVersion}`, projectDir, {
|
|
73
|
+
"save-dev": true,
|
|
74
|
+
"save-exact": true,
|
|
75
|
+
disableNpmInstall: false,
|
|
76
|
+
frameworkPath: this.$options.frameworkPath,
|
|
77
|
+
ignoreScripts: this.$options.ignoreScripts,
|
|
78
|
+
path: this.$options.path,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
this.$logger.error(e.message);
|
|
83
|
+
}
|
|
139
84
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
"",
|
|
154
|
-
...bufferedLogs,
|
|
155
|
-
"",
|
|
156
|
-
color_1.color.yellow(`Note: @nativescript/unit-test-runner was included in "dependencies" as a convenience to automatically adjust your app's Info.plist on iOS and AndroidManifest.xml on Android to ensure the socket connects properly.`),
|
|
157
|
-
"",
|
|
158
|
-
color_1.color.yellow(`For production you may want to move to "devDependencies" and manage the settings yourself.`),
|
|
85
|
+
}
|
|
86
|
+
await this.$pluginsService.add("@nativescript/unit-test-runner", this.$projectData);
|
|
87
|
+
this.$logger.clearScreen();
|
|
88
|
+
const bufferedLogs = [];
|
|
89
|
+
const testsDir = path.join(this.$projectData.appDirectoryPath, "tests");
|
|
90
|
+
const projectTestsDir = path.relative(this.$projectData.projectDir, testsDir);
|
|
91
|
+
const relativeTestsDir = path.relative(this.$projectData.appDirectoryPath, testsDir);
|
|
92
|
+
let shouldCreateSampleTests = true;
|
|
93
|
+
if (this.$fs.exists(testsDir)) {
|
|
94
|
+
const specFilenamePattern = `<filename>.spec${projectFilesExtension}`;
|
|
95
|
+
bufferedLogs.push(color_1.color.yellow([
|
|
96
|
+
`Note: The "${projectTestsDir}" directory already exists, will not create example tests in the project.`,
|
|
97
|
+
`You may create "${specFilenamePattern}" files anywhere you'd like.`,
|
|
159
98
|
"",
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
99
|
+
].join("\n")));
|
|
100
|
+
shouldCreateSampleTests = false;
|
|
101
|
+
}
|
|
102
|
+
this.$fs.ensureDirectoryExists(testsDir);
|
|
103
|
+
const frameworks = [frameworkToInstall]
|
|
104
|
+
.concat(this.karmaConfigAdditionalFrameworks[frameworkToInstall] || [])
|
|
105
|
+
.map((fw) => `'${fw}'`)
|
|
106
|
+
.join(", ");
|
|
107
|
+
const testFiles = `'${(0, helpers_1.fromWindowsRelativePathToUnix)(relativeTestsDir)}/**/*${projectFilesExtension}'`;
|
|
108
|
+
const karmaConfTemplate = this.$resources.readText("test/karma.conf.js");
|
|
109
|
+
const karmaConf = _.template(karmaConfTemplate)({
|
|
110
|
+
frameworks,
|
|
111
|
+
testFiles,
|
|
112
|
+
basePath: this.$projectData.getAppDirectoryRelativePath(),
|
|
113
|
+
});
|
|
114
|
+
this.$fs.writeFile(path.join(projectDir, "karma.conf.js"), karmaConf);
|
|
115
|
+
const exampleFilePath = this.$resources.resolvePath(`test/example.${frameworkToInstall}${projectFilesExtension}`);
|
|
116
|
+
const targetExampleTestPath = path.join(testsDir, `example.spec${projectFilesExtension}`);
|
|
117
|
+
if (shouldCreateSampleTests && this.$fs.exists(exampleFilePath)) {
|
|
118
|
+
this.$fs.copyFile(exampleFilePath, targetExampleTestPath);
|
|
119
|
+
const targetExampleTestRelativePath = path.relative(projectDir, targetExampleTestPath);
|
|
120
|
+
bufferedLogs.push(`Added example test: ${color_1.color.yellow(targetExampleTestRelativePath)}`);
|
|
121
|
+
}
|
|
122
|
+
// test main entry
|
|
123
|
+
const testMainResourcesPath = this.$resources.resolvePath(`test/test-main${projectFilesExtension}`);
|
|
124
|
+
const testMainPath = path.join(this.$projectData.appDirectoryPath, `test${projectFilesExtension}`);
|
|
125
|
+
if (!this.$fs.exists(testMainPath)) {
|
|
126
|
+
this.$fs.copyFile(testMainResourcesPath, testMainPath);
|
|
127
|
+
const testMainRelativePath = path.relative(projectDir, testMainPath);
|
|
128
|
+
bufferedLogs.push(`Main test entrypoint created: ${color_1.color.yellow(testMainRelativePath)}`);
|
|
129
|
+
}
|
|
130
|
+
const testTsConfigTemplate = this.$resources.readText("test/tsconfig.spec.json");
|
|
131
|
+
const testTsConfig = _.template(testTsConfigTemplate)({
|
|
132
|
+
basePath: this.$projectData.getAppDirectoryRelativePath(),
|
|
167
133
|
});
|
|
134
|
+
this.$fs.writeFile(path.join(projectDir, "tsconfig.spec.json"), testTsConfig);
|
|
135
|
+
bufferedLogs.push(`Added/replaced ${color_1.color.yellow("tsconfig.spec.json")}`);
|
|
136
|
+
const greyDollarSign = color_1.color.grey("$");
|
|
137
|
+
this.$logger.info([
|
|
138
|
+
[
|
|
139
|
+
color_1.color.green(`Tests using`),
|
|
140
|
+
color_1.color.cyan(frameworkToInstall),
|
|
141
|
+
color_1.color.green(`were successfully initialized.`),
|
|
142
|
+
].join(" "),
|
|
143
|
+
"",
|
|
144
|
+
...bufferedLogs,
|
|
145
|
+
"",
|
|
146
|
+
color_1.color.yellow(`Note: @nativescript/unit-test-runner was included in "dependencies" as a convenience to automatically adjust your app's Info.plist on iOS and AndroidManifest.xml on Android to ensure the socket connects properly.`),
|
|
147
|
+
"",
|
|
148
|
+
color_1.color.yellow(`For production you may want to move to "devDependencies" and manage the settings yourself.`),
|
|
149
|
+
"",
|
|
150
|
+
"",
|
|
151
|
+
`You can now run your tests:`,
|
|
152
|
+
"",
|
|
153
|
+
` ${greyDollarSign} ${color_1.color.green("ns test ios")}`,
|
|
154
|
+
` ${greyDollarSign} ${color_1.color.green("ns test android")}`,
|
|
155
|
+
"",
|
|
156
|
+
].join("\n"));
|
|
168
157
|
}
|
|
169
158
|
}
|
|
170
159
|
yok_1.injector.registerCommand("test|init", TestInitCommand);
|
package/lib/commands/test.js
CHANGED
|
@@ -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 helpers_1 = require("../common/helpers");
|
|
13
4
|
const constants_1 = require("../constants");
|
|
@@ -19,73 +10,69 @@ class TestCommandBase {
|
|
|
19
10
|
hmr: { type: "boolean" /* OptionType.Boolean */, default: false, hasSensitiveValue: false },
|
|
20
11
|
};
|
|
21
12
|
}
|
|
22
|
-
execute(args) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
process.exit(0);
|
|
56
|
-
});
|
|
13
|
+
async execute(args) {
|
|
14
|
+
let devices = [];
|
|
15
|
+
if (this.$options.debugBrk) {
|
|
16
|
+
await this.$devicesService.initialize({
|
|
17
|
+
platform: this.platform,
|
|
18
|
+
deviceId: this.$options.device,
|
|
19
|
+
emulator: this.$options.emulator,
|
|
20
|
+
skipInferPlatform: !this.platform,
|
|
21
|
+
sdk: this.$options.sdk,
|
|
22
|
+
});
|
|
23
|
+
const selectedDeviceForDebug = await this.$devicesService.pickSingleDevice({
|
|
24
|
+
onlyEmulators: this.$options.emulator,
|
|
25
|
+
onlyDevices: this.$options.forDevice,
|
|
26
|
+
deviceId: this.$options.device,
|
|
27
|
+
});
|
|
28
|
+
devices = [selectedDeviceForDebug];
|
|
29
|
+
// const debugData = this.getDebugData(platform, projectData, deployOptions, { device: selectedDeviceForDebug.deviceInfo.identifier });
|
|
30
|
+
// await this.$debugService.debug(debugData, this.$options);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
devices = await this.$liveSyncCommandHelper.getDeviceInstances(this.platform);
|
|
34
|
+
}
|
|
35
|
+
if (!this.$options.env) {
|
|
36
|
+
this.$options.env = {};
|
|
37
|
+
}
|
|
38
|
+
this.$options.env.unitTesting = true;
|
|
39
|
+
const liveSyncInfo = this.$liveSyncCommandHelper.getLiveSyncData(this.$projectData.projectDir);
|
|
40
|
+
const deviceDebugMap = {};
|
|
41
|
+
devices.forEach((device) => (deviceDebugMap[device.deviceInfo.identifier] = this.$options.debugBrk));
|
|
42
|
+
const deviceDescriptors = await this.$liveSyncCommandHelper.createDeviceDescriptors(devices, this.platform, { deviceDebugMap });
|
|
43
|
+
await this.$testExecutionService.startKarmaServer(this.platform, liveSyncInfo, deviceDescriptors);
|
|
44
|
+
// if we got here, it means karma exited with exit code 0 (success)
|
|
45
|
+
process.exit(0);
|
|
57
46
|
}
|
|
58
|
-
canExecute(args) {
|
|
59
|
-
|
|
60
|
-
if (
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.$errors.fail("The `--hmr` option is not supported for this command.");
|
|
66
|
-
}
|
|
67
|
-
yield this.$migrateController.validate({
|
|
68
|
-
projectDir: this.$projectData.projectDir,
|
|
69
|
-
platforms: [this.platform],
|
|
70
|
-
});
|
|
47
|
+
async canExecute(args) {
|
|
48
|
+
if (!this.$options.force) {
|
|
49
|
+
if (this.$options.hmr) {
|
|
50
|
+
// With HMR we are not restarting after LiveSync which is causing a 30 seconds app start on Android
|
|
51
|
+
// because the Runtime does not watch for the `/data/local/tmp<appId>-livesync-in-progress` file deletion.
|
|
52
|
+
// The App is closing itself after each test execution and the bug will be reproducible on each LiveSync.
|
|
53
|
+
this.$errors.fail("The `--hmr` option is not supported for this command.");
|
|
71
54
|
}
|
|
72
|
-
this.$
|
|
73
|
-
this.$analyticsService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
|
|
74
|
-
this.$cleanupService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
|
|
75
|
-
const output = yield this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
|
|
76
|
-
platform: this.platform,
|
|
55
|
+
await this.$migrateController.validate({
|
|
77
56
|
projectDir: this.$projectData.projectDir,
|
|
78
|
-
|
|
57
|
+
platforms: [this.platform],
|
|
79
58
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
59
|
+
}
|
|
60
|
+
this.$projectData.initializeProjectData();
|
|
61
|
+
this.$analyticsService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
|
|
62
|
+
this.$cleanupService.setShouldDispose(this.$options.justlaunch || !this.$options.watch);
|
|
63
|
+
const output = await this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
|
|
64
|
+
platform: this.platform,
|
|
65
|
+
projectDir: this.$projectData.projectDir,
|
|
66
|
+
options: this.$options,
|
|
88
67
|
});
|
|
68
|
+
const canStartKarmaServer = await this.$testExecutionService.canStartKarmaServer(this.$projectData);
|
|
69
|
+
if (!canStartKarmaServer) {
|
|
70
|
+
this.$errors.fail({
|
|
71
|
+
formatStr: "Error: In order to run unit tests, your project must already be configured by running $ ns test init.",
|
|
72
|
+
errorCode: 133 /* ErrorCodes.TESTS_INIT_REQUIRED */,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return output.canExecute && canStartKarmaServer;
|
|
89
76
|
}
|
|
90
77
|
}
|
|
91
78
|
class TestAndroidCommand extends TestCommandBase {
|
|
@@ -103,33 +90,23 @@ class TestAndroidCommand extends TestCommandBase {
|
|
|
103
90
|
this.$migrateController = $migrateController;
|
|
104
91
|
this.platform = "android";
|
|
105
92
|
}
|
|
106
|
-
execute(args) {
|
|
107
|
-
|
|
108
|
-
execute: { get: () => super.execute }
|
|
109
|
-
});
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
yield _super.execute.call(this, args);
|
|
112
|
-
});
|
|
93
|
+
async execute(args) {
|
|
94
|
+
await super.execute(args);
|
|
113
95
|
}
|
|
114
|
-
canExecute(args) {
|
|
115
|
-
const
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
this.$errors.failWithHelp(constants_1.ANDROID_RELEASE_BUILD_ERROR_MESSAGE);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
this.$errors.failWithHelp(constants_1.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE);
|
|
128
|
-
}
|
|
96
|
+
async canExecute(args) {
|
|
97
|
+
const canExecuteBase = await super.canExecute(args);
|
|
98
|
+
if (canExecuteBase) {
|
|
99
|
+
if ((this.$options.release || this.$options.aab) &&
|
|
100
|
+
!(0, helpers_1.hasValidAndroidSigning)(this.$options)) {
|
|
101
|
+
if (this.$options.release) {
|
|
102
|
+
this.$errors.failWithHelp(constants_1.ANDROID_RELEASE_BUILD_ERROR_MESSAGE);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.$errors.failWithHelp(constants_1.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE);
|
|
129
106
|
}
|
|
130
107
|
}
|
|
131
|
-
|
|
132
|
-
|
|
108
|
+
}
|
|
109
|
+
return canExecuteBase;
|
|
133
110
|
}
|
|
134
111
|
}
|
|
135
112
|
class TestIosCommand extends TestCommandBase {
|