@akylas/nativescript-cli 8.8.2 → 8.8.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/lib/android-tools-info.js +9 -20
- package/lib/base-package-manager.js +47 -64
- package/lib/bun-package-manager.js +65 -88
- package/lib/color.js +2 -2
- 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 +55 -68
- package/lib/commands/build.js +57 -86
- package/lib/commands/clean.js +161 -176
- package/lib/commands/command-base.js +14 -27
- package/lib/commands/config.js +51 -70
- package/lib/commands/create-project.js +210 -229
- package/lib/commands/debug.js +66 -88
- package/lib/commands/deploy.js +28 -44
- package/lib/commands/embedding/embed.js +33 -52
- 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 +17 -26
- 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 +34 -39
- package/lib/commands/plugin/create-plugin.js +110 -133
- package/lib/commands/plugin/list-plugins.js +22 -33
- package/lib/commands/plugin/remove-plugin.js +20 -33
- package/lib/commands/plugin/update-plugin.js +20 -33
- package/lib/commands/post-install.js +20 -33
- package/lib/commands/prepare.js +19 -35
- package/lib/commands/preview.js +49 -62
- package/lib/commands/remove-platform.js +7 -18
- package/lib/commands/resources/resources-update.js +13 -26
- package/lib/commands/run.js +55 -76
- package/lib/commands/start.js +6 -19
- package/lib/commands/test-init.js +123 -134
- package/lib/commands/test.js +66 -89
- package/lib/commands/typings.js +126 -142
- package/lib/commands/update-platform.js +22 -35
- package/lib/commands/update.js +30 -43
- 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 +27 -40
- package/lib/common/commands/autocompletion.js +39 -56
- package/lib/common/commands/device/device-log-stream.js +12 -23
- package/lib/common/commands/device/get-file.js +22 -33
- 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 +23 -34
- package/lib/common/commands/device/put-file.js +22 -33
- 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 +23 -38
- package/lib/common/commands/proxy/proxy-base.js +8 -19
- 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 +79 -96
- package/lib/common/errors.js +89 -104
- package/lib/common/file-system.js +106 -127
- package/lib/common/header.js +1 -2
- package/lib/common/helpers.js +149 -178
- package/lib/common/host-info.js +37 -50
- package/lib/common/http-client.js +93 -108
- 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 +1 -1
- package/lib/common/mobile/android/android-application-manager.js +121 -142
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
- package/lib/common/mobile/android/android-debug-bridge.js +87 -112
- package/lib/common/mobile/android/android-device-file-system.js +98 -131
- package/lib/common/mobile/android/android-device-hash-service.js +50 -75
- package/lib/common/mobile/android/android-device.js +74 -91
- 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 +76 -97
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
- package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
- package/lib/common/mobile/android/logcat-helper.js +108 -127
- package/lib/common/mobile/application-manager-base.js +84 -107
- 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 +105 -142
- 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 +63 -92
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
- 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 +43 -62
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
- package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
- package/lib/common/mobile/mobile-core/devices-service.js +385 -436
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
- 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/plist-parser.js +3 -3
- package/lib/common/prompter.js +90 -105
- package/lib/common/queue.js +9 -20
- package/lib/common/services/auto-completion-service.js +39 -52
- package/lib/common/services/cancellation.js +17 -28
- package/lib/common/services/commands-service.js +146 -169
- package/lib/common/services/help-service.js +132 -157
- package/lib/common/services/hooks-service.js +93 -108
- package/lib/common/services/ios-notification-service.js +21 -34
- package/lib/common/services/json-file-settings-service.js +52 -71
- 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 +4 -15
- package/lib/common/services/net-service.js +90 -107
- 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 +23 -36
- package/lib/config.js +7 -58
- package/lib/constants.js +24 -24
- package/lib/controllers/build-controller.js +82 -99
- package/lib/controllers/debug-controller.js +107 -128
- package/lib/controllers/deploy-controller.js +17 -22
- package/lib/controllers/migrate-controller.js +722 -795
- package/lib/controllers/platform-controller.js +72 -87
- package/lib/controllers/prepare-controller.js +266 -299
- package/lib/controllers/run-controller.js +392 -406
- package/lib/controllers/update-controller-base.js +16 -29
- package/lib/controllers/update-controller.js +94 -119
- package/lib/data/prepare-data.js +4 -1
- package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
- package/lib/definitions/livesync.d.ts +1 -1
- 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 +149 -164
- package/lib/device-sockets/ios/notification.js +1 -1
- package/lib/device-sockets/ios/socket-request-executor.js +24 -39
- package/lib/helpers/android-bundle-validator-helper.js +1 -1
- package/lib/helpers/deploy-command-helper.js +45 -49
- package/lib/helpers/key-command-helper.js +4 -13
- package/lib/helpers/livesync-command-helper.js +137 -152
- 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 +99 -120
- package/lib/key-commands/index.js +161 -211
- package/lib/nativescript-cli.js +5 -14
- package/lib/node-package-manager.js +81 -104
- package/lib/options.js +3 -12
- package/lib/package-installation-manager.js +130 -165
- package/lib/package-manager.js +63 -86
- package/lib/platform-command-param.js +4 -15
- package/lib/pnpm-package-manager.js +59 -78
- 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 +161 -198
- 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 +9 -20
- package/lib/services/android/gradle-build-service.js +34 -47
- package/lib/services/android/gradle-command-service.js +22 -35
- package/lib/services/android-device-debug-service.js +90 -117
- package/lib/services/android-plugin-build-service.js +230 -256
- package/lib/services/android-project-service.js +163 -199
- package/lib/services/android-resources-migration-service.js +51 -64
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
- package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
- package/lib/services/assets-generation/assets-generation-service.js +98 -115
- 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 +115 -136
- package/lib/services/device/device-install-app-service.js +73 -90
- package/lib/services/doctor-service.js +99 -118
- package/lib/services/extensibility-service.js +81 -100
- package/lib/services/files-hash-service.js +26 -43
- package/lib/services/hmr-status-service.js +1 -1
- package/lib/services/initialize-service.js +37 -50
- package/lib/services/ios/export-options-plist-service.js +38 -51
- package/lib/services/ios/ios-signing-service.js +161 -180
- package/lib/services/ios/spm-service.js +40 -53
- 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 +50 -69
- package/lib/services/ios-debugger-port-service.js +23 -36
- 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 +405 -460
- package/lib/services/ios-provision-service.js +108 -129
- package/lib/services/ios-watch-app-service.js +21 -32
- package/lib/services/ip-service.js +38 -53
- 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 +120 -149
- package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -152
- package/lib/services/livesync/android-livesync-service.js +14 -35
- package/lib/services/livesync/android-livesync-tool.js +89 -112
- package/lib/services/livesync/device-livesync-service-base.js +15 -28
- package/lib/services/livesync/ios-device-livesync-service.js +114 -143
- package/lib/services/livesync/ios-livesync-service.js +42 -58
- package/lib/services/livesync/platform-livesync-service-base.js +94 -119
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +30 -41
- package/lib/services/marking-mode-service.js +15 -28
- package/lib/services/npm-config-service.js +1 -1
- package/lib/services/pacote-service.js +49 -64
- package/lib/services/performance-service.js +1 -1
- package/lib/services/platform/add-platform-service.js +50 -71
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +49 -62
- package/lib/services/platform-environment-requirements.js +26 -37
- package/lib/services/plugins-service.js +122 -147
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +124 -141
- package/lib/services/project-cleanup-service.js +64 -77
- package/lib/services/project-config-service.js +71 -80
- package/lib/services/project-data-service.js +101 -118
- package/lib/services/project-name-service.js +28 -43
- package/lib/services/project-service.js +84 -103
- 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 +13 -24
- package/lib/services/test-execution-service.js +59 -72
- package/lib/services/test-initialization-service.js +2 -2
- package/lib/services/timeline-profiler-service.js +1 -1
- package/lib/services/versions-service.js +119 -138
- package/lib/services/webpack/webpack-compiler-service.js +211 -231
- 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 +60 -79
- package/package.json +56 -54
- package/vendor/aab-tool/bundletool.jar +0 -0
- package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
- package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
- package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
- package/lib/common/resources/platform-tools/android/linux/adb +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
- package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
- 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.BuildPluginCommand = void 0;
|
|
13
4
|
const os_1 = require("os");
|
|
@@ -26,38 +17,42 @@ class BuildPluginCommand {
|
|
|
26
17
|
this.allowedParameters = [];
|
|
27
18
|
this.pluginProjectPath = path.resolve(this.$options.path || ".");
|
|
28
19
|
}
|
|
29
|
-
execute(args) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
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
|
+
}
|
|
53
50
|
}
|
|
54
|
-
canExecute(args) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return true;
|
|
60
|
-
});
|
|
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;
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
:
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
160
|
-
|
|
121
|
+
}
|
|
122
|
+
return gitHubUsername;
|
|
161
123
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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;
|
|
@@ -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.UpdatePluginCommand = void 0;
|
|
13
4
|
const _ = require("lodash");
|
|
@@ -20,32 +11,28 @@ class UpdatePluginCommand {
|
|
|
20
11
|
this.allowedParameters = [];
|
|
21
12
|
this.$projectData.initializeProjectData();
|
|
22
13
|
}
|
|
23
|
-
execute(args) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
});
|
|
14
|
+
async execute(args) {
|
|
15
|
+
let pluginNames = args;
|
|
16
|
+
if (!pluginNames || args.length === 0) {
|
|
17
|
+
const installedPlugins = await this.$pluginsService.getAllInstalledPlugins(this.$projectData);
|
|
18
|
+
pluginNames = installedPlugins.map((p) => p.name);
|
|
19
|
+
}
|
|
20
|
+
for (const pluginName of pluginNames) {
|
|
21
|
+
await this.$pluginsService.remove(pluginName, this.$projectData);
|
|
22
|
+
await this.$pluginsService.add(pluginName, this.$projectData);
|
|
23
|
+
}
|
|
35
24
|
}
|
|
36
|
-
canExecute(args) {
|
|
37
|
-
|
|
38
|
-
if (!args || args.length === 0) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
const installedPlugins = yield this.$pluginsService.getAllInstalledPlugins(this.$projectData);
|
|
42
|
-
const installedPluginNames = installedPlugins.map((pl) => pl.name);
|
|
43
|
-
const pluginName = args[0].toLowerCase();
|
|
44
|
-
if (!_.some(installedPluginNames, (name) => name.toLowerCase() === pluginName)) {
|
|
45
|
-
this.$errors.fail(`Plugin "${pluginName}" is not installed.`);
|
|
46
|
-
}
|
|
25
|
+
async canExecute(args) {
|
|
26
|
+
if (!args || args.length === 0) {
|
|
47
27
|
return true;
|
|
48
|
-
}
|
|
28
|
+
}
|
|
29
|
+
const installedPlugins = await this.$pluginsService.getAllInstalledPlugins(this.$projectData);
|
|
30
|
+
const installedPluginNames = installedPlugins.map((pl) => pl.name);
|
|
31
|
+
const pluginName = args[0].toLowerCase();
|
|
32
|
+
if (!_.some(installedPluginNames, (name) => name.toLowerCase() === pluginName)) {
|
|
33
|
+
this.$errors.fail(`Plugin "${pluginName}" is not installed.`);
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
49
36
|
}
|
|
50
37
|
}
|
|
51
38
|
exports.UpdatePluginCommand = UpdatePluginCommand;
|
|
@@ -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.PostInstallCliCommand = void 0;
|
|
13
4
|
const helpers_1 = require("../common/helpers");
|
|
@@ -25,32 +16,28 @@ class PostInstallCliCommand {
|
|
|
25
16
|
this.disableAnalytics = true;
|
|
26
17
|
this.allowedParameters = [];
|
|
27
18
|
}
|
|
28
|
-
execute(args) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
yield this.$fs.setCurrentUserAsOwner(this.$settingsService.getProfileDir(), process.env.SUDO_USER);
|
|
34
|
-
}
|
|
19
|
+
async execute(args) {
|
|
20
|
+
const isRunningWithSudoUser = !!process.env.SUDO_USER;
|
|
21
|
+
if (!this.$hostInfo.isWindows) {
|
|
22
|
+
if (isRunningWithSudoUser) {
|
|
23
|
+
await this.$fs.setCurrentUserAsOwner(this.$settingsService.getProfileDir(), process.env.SUDO_USER);
|
|
35
24
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
25
|
+
}
|
|
26
|
+
const canExecutePostInstallTask = !isRunningWithSudoUser || (0, helpers_1.doesCurrentNpmCommandMatch)([/^--unsafe-perm$/]);
|
|
27
|
+
if (canExecutePostInstallTask) {
|
|
28
|
+
await this.$helpService.generateHtmlPages();
|
|
29
|
+
await this.$analyticsService.checkConsent();
|
|
30
|
+
await this.$commandsService.tryExecuteCommand("autocomplete", []);
|
|
31
|
+
}
|
|
43
32
|
}
|
|
44
|
-
postCommandAction(args) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this.$logger.printMarkdown("If you have any questions, check Stack Overflow: `https://stackoverflow.com/questions/tagged/nativescript` and our public Discord channel: `https://nativescript.org/discord`");
|
|
53
|
-
});
|
|
33
|
+
async postCommandAction(args) {
|
|
34
|
+
this.$logger.info("");
|
|
35
|
+
this.$logger.info(color_1.color.green.bold("You have successfully installed the NativeScript CLI!"));
|
|
36
|
+
this.$logger.info("");
|
|
37
|
+
this.$logger.info("Your next step is to create a new project:");
|
|
38
|
+
this.$logger.info(color_1.color.green.bold("ns create"));
|
|
39
|
+
this.$logger.info("");
|
|
40
|
+
this.$logger.printMarkdown("If you have any questions, check Stack Overflow: `https://stackoverflow.com/questions/tagged/nativescript` and our public Discord channel: `https://nativescript.org/discord`");
|
|
54
41
|
}
|
|
55
42
|
}
|
|
56
43
|
exports.PostInstallCliCommand = PostInstallCliCommand;
|