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