@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
|
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
9
|
exports.AutoCompletionService = void 0;
|
|
19
10
|
const os_1 = require("os");
|
|
@@ -121,15 +112,13 @@ class AutoCompletionService {
|
|
|
121
112
|
this.$logger.info("Restart your shell to disable command auto-completion.");
|
|
122
113
|
}
|
|
123
114
|
}
|
|
124
|
-
enableAutoCompletion() {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
});
|
|
115
|
+
async enableAutoCompletion() {
|
|
116
|
+
await this.updateCLIShellScript();
|
|
117
|
+
_.each(this.shellProfiles, (shellFile) => this.addAutoCompletionToShellScript(shellFile));
|
|
118
|
+
this.removeObsoleteAutoCompletion();
|
|
119
|
+
if (this.scriptsOk && this.scriptsUpdated) {
|
|
120
|
+
this.$logger.info("Restart your shell to enable command auto-completion.");
|
|
121
|
+
}
|
|
133
122
|
}
|
|
134
123
|
isObsoleteAutoCompletionEnabled() {
|
|
135
124
|
let result = true;
|
|
@@ -201,48 +190,47 @@ class AutoCompletionService {
|
|
|
201
190
|
}
|
|
202
191
|
}
|
|
203
192
|
}
|
|
204
|
-
updateCLIShellScript() {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
doUpdate = false;
|
|
215
|
-
}
|
|
193
|
+
async updateCLIShellScript() {
|
|
194
|
+
const filePath = this.cliRunCommandsFile;
|
|
195
|
+
try {
|
|
196
|
+
let doUpdate = true;
|
|
197
|
+
if (this.$fs.exists(filePath)) {
|
|
198
|
+
const contents = this.$fs.readText(filePath);
|
|
199
|
+
const regExp = new RegExp(AutoCompletionService.GENERATED_TABTAB_COMPLETION_START);
|
|
200
|
+
let matchCondition = contents.match(regExp);
|
|
201
|
+
if (matchCondition) {
|
|
202
|
+
doUpdate = false;
|
|
216
203
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
204
|
+
}
|
|
205
|
+
if (doUpdate) {
|
|
206
|
+
const clientExecutableFileName = (this.$staticConfig.CLIENT_NAME_ALIAS || this.$staticConfig.CLIENT_NAME).toLowerCase();
|
|
207
|
+
const pathToExecutableFile = path.join(__dirname, `../../../bin/${clientExecutableFileName}.js`);
|
|
208
|
+
if (this.$fs.exists(filePath)) {
|
|
209
|
+
const existingText = this.$fs.readText(filePath);
|
|
210
|
+
let newText = existingText.replace(this.getTabTabCompletionsRegex(), "");
|
|
211
|
+
newText = this.removeOboleteTabTabCompletion(newText);
|
|
212
|
+
if (newText !== existingText) {
|
|
213
|
+
this.$logger.trace("Remove existing AutoCompletion from file %s.", filePath);
|
|
214
|
+
this.$fs.writeFile(filePath, newText);
|
|
228
215
|
}
|
|
229
|
-
this.$fs.appendFile(filePath, `\n${AutoCompletionService.GENERATED_TABTAB_COMPLETION_START}\n`);
|
|
230
|
-
yield this.$childProcess.exec(`"${process.argv[0]}" "${pathToExecutableFile}" completion_generate_script >> "${filePath}"`);
|
|
231
|
-
this.$fs.appendFile(filePath, this.completionAliasDefinition);
|
|
232
|
-
this.$fs.chmod(filePath, "0644");
|
|
233
216
|
}
|
|
217
|
+
this.$fs.appendFile(filePath, `\n${AutoCompletionService.GENERATED_TABTAB_COMPLETION_START}\n`);
|
|
218
|
+
await this.$childProcess.exec(`"${process.argv[0]}" "${pathToExecutableFile}" completion_generate_script >> "${filePath}"`);
|
|
219
|
+
this.$fs.appendFile(filePath, this.completionAliasDefinition);
|
|
220
|
+
this.$fs.chmod(filePath, "0644");
|
|
234
221
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
}
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
this.$logger.info("Failed to update %s. Auto-completion may not work. ", filePath);
|
|
225
|
+
this.$logger.trace(err);
|
|
226
|
+
this.scriptsOk = false;
|
|
227
|
+
}
|
|
241
228
|
}
|
|
242
229
|
getHomePath(fileName) {
|
|
243
230
|
return path.join((0, os_1.homedir)(), fileName);
|
|
244
231
|
}
|
|
245
232
|
}
|
|
233
|
+
exports.AutoCompletionService = AutoCompletionService;
|
|
246
234
|
AutoCompletionService.COMPLETION_START_COMMENT_PATTERN = "###-%s-completion-start-###";
|
|
247
235
|
AutoCompletionService.COMPLETION_END_COMMENT_PATTERN = "###-%s-completion-end-###";
|
|
248
236
|
AutoCompletionService.TABTAB_COMPLETION_START_REGEX_PATTERN = "###-begin-%s-completion-###";
|
|
@@ -261,5 +249,4 @@ __decorate([
|
|
|
261
249
|
__decorate([
|
|
262
250
|
(0, decorators_1.cache)()
|
|
263
251
|
], AutoCompletionService.prototype, "completionShellScriptContent", null);
|
|
264
|
-
exports.AutoCompletionService = AutoCompletionService;
|
|
265
252
|
yok_1.injector.register("autoCompletionService", AutoCompletionService);
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const choki = require("chokidar");
|
|
13
4
|
const path = require("path");
|
|
@@ -24,26 +15,24 @@ class CancellationService {
|
|
|
24
15
|
this.$fs.createDirectory(CancellationService.killSwitchDir);
|
|
25
16
|
}
|
|
26
17
|
}
|
|
27
|
-
begin(name) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
process.exit(132);
|
|
42
|
-
});
|
|
43
|
-
if (watcher) {
|
|
44
|
-
this.watches[name] = watcher;
|
|
45
|
-
}
|
|
18
|
+
async begin(name) {
|
|
19
|
+
if (!this.$hostInfo.isWindows) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const triggerFile = CancellationService.makeKillSwitchFileName(name);
|
|
23
|
+
if (!this.$fs.exists(triggerFile)) {
|
|
24
|
+
this.$fs.writeFile(triggerFile, "");
|
|
25
|
+
}
|
|
26
|
+
this.$logger.trace("Starting watch on killswitch %s", triggerFile);
|
|
27
|
+
const watcher = choki
|
|
28
|
+
.watch(triggerFile, { ignoreInitial: true })
|
|
29
|
+
.on("unlink", (filePath) => {
|
|
30
|
+
this.$logger.info(`Exiting process as the file ${filePath} has been deleted. Probably reinstalling CLI while there's a working instance.`);
|
|
31
|
+
process.exit(132);
|
|
46
32
|
});
|
|
33
|
+
if (watcher) {
|
|
34
|
+
this.watches[name] = watcher;
|
|
35
|
+
}
|
|
47
36
|
}
|
|
48
37
|
end(name) {
|
|
49
38
|
const watcher = this.watches[name];
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.CommandsService = void 0;
|
|
13
4
|
const jaroWinklerDistance = require("../vendor/jaro-winkler_distance");
|
|
@@ -40,48 +31,46 @@ class CommandsService {
|
|
|
40
31
|
const commands = this.$injector.getRegisteredCommandsNames(opts.includeDevCommands);
|
|
41
32
|
return _.reject(commands, (command) => _.includes(command, "|"));
|
|
42
33
|
}
|
|
43
|
-
executeCommandUnchecked(commandName, commandArguments) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
commandName = helpers.stringReplaceAll(commandName, "|", "-");
|
|
69
|
-
}
|
|
70
|
-
yield this.$hooksService.executeBeforeHooks(commandName);
|
|
71
|
-
}
|
|
72
|
-
yield command.execute(commandArguments);
|
|
73
|
-
if (command.postCommandAction) {
|
|
74
|
-
yield command.postCommandAction(commandArguments);
|
|
75
|
-
}
|
|
76
|
-
if (shouldExecuteHooks) {
|
|
77
|
-
yield this.$hooksService.executeAfterHooks(commandName);
|
|
34
|
+
async executeCommandUnchecked(commandName, commandArguments) {
|
|
35
|
+
this.commands.push({ commandName, commandArguments });
|
|
36
|
+
const command = this.$injector.resolveCommand(commandName);
|
|
37
|
+
if (command) {
|
|
38
|
+
if (!this.$staticConfig.disableAnalytics &&
|
|
39
|
+
!command.disableAnalytics &&
|
|
40
|
+
!this.$options.disableAnalytics) {
|
|
41
|
+
const analyticsService = this.$injector.resolve("analyticsService");
|
|
42
|
+
await analyticsService.checkConsent();
|
|
43
|
+
const beautifiedCommandName = this.beautifyCommandName(commandName).replace(/\|/g, " ");
|
|
44
|
+
const googleAnalyticsPageData = {
|
|
45
|
+
googleAnalyticsDataType: "pageview",
|
|
46
|
+
path: beautifiedCommandName,
|
|
47
|
+
title: beautifiedCommandName,
|
|
48
|
+
};
|
|
49
|
+
await analyticsService.trackInGoogleAnalytics(googleAnalyticsPageData);
|
|
50
|
+
await this.$optionsTracker.trackOptions(this.$options);
|
|
51
|
+
}
|
|
52
|
+
const shouldExecuteHooks = !this.$staticConfig.disableCommandHooks &&
|
|
53
|
+
(command.enableHooks === undefined || command.enableHooks === true);
|
|
54
|
+
if (shouldExecuteHooks) {
|
|
55
|
+
const hierarchicalCommandName = this.$injector.buildHierarchicalCommand(commandName, commandArguments);
|
|
56
|
+
if (hierarchicalCommandName) {
|
|
57
|
+
commandName = helpers.stringReplaceAll(hierarchicalCommandName.commandName, "|*", "-");
|
|
58
|
+
commandName = helpers.stringReplaceAll(commandName, "|", "-");
|
|
78
59
|
}
|
|
79
|
-
this.
|
|
80
|
-
|
|
60
|
+
await this.$hooksService.executeBeforeHooks(commandName);
|
|
61
|
+
}
|
|
62
|
+
await command.execute(commandArguments);
|
|
63
|
+
if (command.postCommandAction) {
|
|
64
|
+
await command.postCommandAction(commandArguments);
|
|
65
|
+
}
|
|
66
|
+
if (shouldExecuteHooks) {
|
|
67
|
+
await this.$hooksService.executeAfterHooks(commandName);
|
|
81
68
|
}
|
|
82
69
|
this.commands.pop();
|
|
83
|
-
return
|
|
84
|
-
}
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
this.commands.pop();
|
|
73
|
+
return false;
|
|
85
74
|
}
|
|
86
75
|
printHelpSuggestion(commandName) {
|
|
87
76
|
const command = commandName
|
|
@@ -91,145 +80,133 @@ class CommandsService {
|
|
|
91
80
|
this.$logger.printMarkdown(`__Run \`${commandHelp}\` for more information.__`);
|
|
92
81
|
return;
|
|
93
82
|
}
|
|
94
|
-
executeCommandAction(commandName, commandArguments, action) {
|
|
95
|
-
return
|
|
96
|
-
return this.$errors.beginCommand(() => action.apply(this, [commandName, commandArguments]), () => this.printHelpSuggestion(commandName));
|
|
97
|
-
});
|
|
83
|
+
async executeCommandAction(commandName, commandArguments, action) {
|
|
84
|
+
return this.$errors.beginCommand(() => action.apply(this, [commandName, commandArguments]), () => this.printHelpSuggestion(commandName));
|
|
98
85
|
}
|
|
99
|
-
tryExecuteCommandAction(commandName, commandArguments) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
return this.canExecuteCommand(commandName, commandArguments);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
tryExecuteCommand(commandName, commandArguments) {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
const canExecuteResult = yield this.executeCommandAction(commandName, commandArguments, this.tryExecuteCommandAction);
|
|
112
|
-
const canExecute = typeof canExecuteResult === "object"
|
|
113
|
-
? canExecuteResult.canExecute
|
|
114
|
-
: canExecuteResult;
|
|
115
|
-
if (canExecute) {
|
|
116
|
-
yield this.executeCommandAction(commandName, commandArguments, this.executeCommandUnchecked);
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
const command = this.$injector.resolveCommand(commandName);
|
|
120
|
-
if (command) {
|
|
121
|
-
let commandWithArgs = commandName;
|
|
122
|
-
if (commandArguments && commandArguments.length) {
|
|
123
|
-
commandWithArgs += ` ${commandArguments.join(" ")}`;
|
|
124
|
-
}
|
|
125
|
-
this.$logger.error(`Command '${commandWithArgs}' cannot be executed.`);
|
|
126
|
-
yield this.printHelpSuggestion(commandName);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
});
|
|
86
|
+
async tryExecuteCommandAction(commandName, commandArguments) {
|
|
87
|
+
const command = this.$injector.resolveCommand(commandName);
|
|
88
|
+
if (!command || !command.isHierarchicalCommand) {
|
|
89
|
+
const dashedOptions = command ? command.dashedOptions : null;
|
|
90
|
+
this.$options.validateOptions(dashedOptions);
|
|
91
|
+
}
|
|
92
|
+
return this.canExecuteCommand(commandName, commandArguments);
|
|
130
93
|
}
|
|
131
|
-
|
|
132
|
-
|
|
94
|
+
async tryExecuteCommand(commandName, commandArguments) {
|
|
95
|
+
const canExecuteResult = await this.executeCommandAction(commandName, commandArguments, this.tryExecuteCommandAction);
|
|
96
|
+
const canExecute = typeof canExecuteResult === "object"
|
|
97
|
+
? canExecuteResult.canExecute
|
|
98
|
+
: canExecuteResult;
|
|
99
|
+
if (canExecute) {
|
|
100
|
+
await this.executeCommandAction(commandName, commandArguments, this.executeCommandUnchecked);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
133
103
|
const command = this.$injector.resolveCommand(commandName);
|
|
134
|
-
const beautifiedName = helpers.stringReplaceAll(commandName, "|", " ");
|
|
135
104
|
if (command) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if (command.canExecute) {
|
|
140
|
-
return yield command.canExecute(commandArguments);
|
|
141
|
-
}
|
|
142
|
-
if (yield this.$injector.isValidHierarchicalCommand(commandName, commandArguments)) {
|
|
143
|
-
return true;
|
|
105
|
+
let commandWithArgs = commandName;
|
|
106
|
+
if (commandArguments && commandArguments.length) {
|
|
107
|
+
commandWithArgs += ` ${commandArguments.join(" ")}`;
|
|
144
108
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
this.$errors.fail(`Unable to execute command '${beautifiedName}'.`);
|
|
149
|
-
return false;
|
|
109
|
+
this.$logger.error(`Command '${commandWithArgs}' cannot be executed.`);
|
|
110
|
+
await this.printHelpSuggestion(commandName);
|
|
150
111
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (
|
|
158
|
-
this.$
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
async canExecuteCommand(commandName, commandArguments, isDynamicCommand) {
|
|
115
|
+
const command = this.$injector.resolveCommand(commandName);
|
|
116
|
+
const beautifiedName = helpers.stringReplaceAll(commandName, "|", " ");
|
|
117
|
+
if (command) {
|
|
118
|
+
if (command.isDisabled) {
|
|
119
|
+
this.$errors.fail("This command is not applicable to your environment.");
|
|
159
120
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
yield this.printHelpSuggestion();
|
|
163
|
-
this.tryMatchCommand(commandName);
|
|
121
|
+
if (command.canExecute) {
|
|
122
|
+
return await command.canExecute(commandArguments);
|
|
164
123
|
}
|
|
124
|
+
if (await this.$injector.isValidHierarchicalCommand(commandName, commandArguments)) {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
if (await this.validateCommandArguments(command, commandArguments)) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
this.$errors.fail(`Unable to execute command '${beautifiedName}'.`);
|
|
165
131
|
return false;
|
|
166
|
-
}
|
|
132
|
+
}
|
|
133
|
+
const commandInfo = {
|
|
134
|
+
inputStrings: [commandName, ...commandArguments],
|
|
135
|
+
commandDelimiter: "|",
|
|
136
|
+
defaultCommandDelimiter: "|*",
|
|
137
|
+
};
|
|
138
|
+
const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
|
|
139
|
+
if (extensionData) {
|
|
140
|
+
this.$logger.warn(extensionData.installationMessage);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.$logger.error("Unknown command '%s'.", beautifiedName);
|
|
144
|
+
await this.printHelpSuggestion();
|
|
145
|
+
this.tryMatchCommand(commandName);
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
167
148
|
}
|
|
168
|
-
validateMandatoryParams(commandArguments, mandatoryParams) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (mandatoryParams.length >
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
if (argument) {
|
|
188
|
-
helpers.remove(commandArgsHelper.remainingArguments, (arg) => arg === argument);
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
this.$errors.failWithHelp("Missing mandatory parameter.");
|
|
149
|
+
async validateMandatoryParams(commandArguments, mandatoryParams) {
|
|
150
|
+
const commandArgsHelper = new CommandArgumentsValidationHelper(true, commandArguments);
|
|
151
|
+
if (mandatoryParams.length > 0) {
|
|
152
|
+
if (mandatoryParams.length > commandArguments.length) {
|
|
153
|
+
const customErrorMessages = _.map(mandatoryParams, (mp) => mp.errorMessage);
|
|
154
|
+
customErrorMessages.splice(0, 0, "You need to provide all the required parameters.");
|
|
155
|
+
this.$errors.failWithHelp(customErrorMessages.join(os_1.EOL));
|
|
156
|
+
}
|
|
157
|
+
for (let mandatoryParamIndex = 0; mandatoryParamIndex < mandatoryParams.length; ++mandatoryParamIndex) {
|
|
158
|
+
const mandatoryParam = mandatoryParams[mandatoryParamIndex];
|
|
159
|
+
let argument = null;
|
|
160
|
+
for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
|
|
161
|
+
const c = commandArgsHelper.remainingArguments[remainingArgsIndex];
|
|
162
|
+
if (await mandatoryParam.validate(c)) {
|
|
163
|
+
argument = c;
|
|
164
|
+
break;
|
|
192
165
|
}
|
|
193
166
|
}
|
|
167
|
+
if (argument) {
|
|
168
|
+
helpers.remove(commandArgsHelper.remainingArguments, (arg) => arg === argument);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
this.$errors.failWithHelp("Missing mandatory parameter.");
|
|
172
|
+
}
|
|
194
173
|
}
|
|
195
|
-
|
|
196
|
-
|
|
174
|
+
}
|
|
175
|
+
return commandArgsHelper;
|
|
197
176
|
}
|
|
198
|
-
validateCommandArguments(command, commandArguments) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
if (
|
|
206
|
-
|
|
207
|
-
this.$errors.failWithHelp("This command doesn't accept parameters.");
|
|
208
|
-
}
|
|
177
|
+
async validateCommandArguments(command, commandArguments) {
|
|
178
|
+
const mandatoryParams = _.filter(command.allowedParameters, (param) => param.mandatory);
|
|
179
|
+
const commandArgsHelper = await this.validateMandatoryParams(commandArguments, mandatoryParams);
|
|
180
|
+
if (!commandArgsHelper.isValid) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
if (!command.allowedParameters || command.allowedParameters.length === 0) {
|
|
184
|
+
if (commandArguments.length > 0) {
|
|
185
|
+
this.$errors.failWithHelp("This command doesn't accept parameters.");
|
|
209
186
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
222
|
-
if (parameter) {
|
|
223
|
-
const index = unverifiedAllowedParams.indexOf(parameter);
|
|
224
|
-
unverifiedAllowedParams.splice(index, 1);
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
this.$errors.failWithHelp(`The parameter ${argument} is not valid for this command.`);
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const unverifiedAllowedParams = command.allowedParameters.filter((param) => !param.mandatory);
|
|
190
|
+
for (let remainingArgsIndex = 0; remainingArgsIndex < commandArgsHelper.remainingArguments.length; ++remainingArgsIndex) {
|
|
191
|
+
const argument = commandArgsHelper.remainingArguments[remainingArgsIndex];
|
|
192
|
+
let parameter = null;
|
|
193
|
+
for (let unverifiedIndex = 0; unverifiedIndex < unverifiedAllowedParams.length; ++unverifiedIndex) {
|
|
194
|
+
const c = unverifiedAllowedParams[unverifiedIndex];
|
|
195
|
+
if (await c.validate(argument)) {
|
|
196
|
+
parameter = c;
|
|
197
|
+
break;
|
|
228
198
|
}
|
|
229
199
|
}
|
|
200
|
+
if (parameter) {
|
|
201
|
+
const index = unverifiedAllowedParams.indexOf(parameter);
|
|
202
|
+
unverifiedAllowedParams.splice(index, 1);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
this.$errors.failWithHelp(`The parameter ${argument} is not valid for this command.`);
|
|
206
|
+
}
|
|
230
207
|
}
|
|
231
|
-
|
|
232
|
-
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
233
210
|
}
|
|
234
211
|
tryMatchCommand(commandName) {
|
|
235
212
|
const allCommands = this.allCommands({ includeDevCommands: false });
|