@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.HelpService = void 0;
|
|
13
4
|
const path = require("path");
|
|
@@ -44,148 +35,134 @@ class HelpService {
|
|
|
44
35
|
this.pathToHtmlPages = this.$staticConfig.HTML_PAGES_DIR;
|
|
45
36
|
this.pathToManPages = this.$staticConfig.MAN_PAGES_DIR;
|
|
46
37
|
}
|
|
47
|
-
openHelpForCommandInBrowser(commandData) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
async openHelpForCommandInBrowser(commandData) {
|
|
39
|
+
const { commandName } = commandData;
|
|
40
|
+
const htmlPage = (await this.convertCommandNameToFileName(commandData)) +
|
|
41
|
+
HelpService.HTML_FILE_EXTENSION;
|
|
42
|
+
this.$logger.trace("Opening help for command '%s'. FileName is '%s'.", commandName, htmlPage);
|
|
43
|
+
this.$fs.ensureDirectoryExists(this.pathToHtmlPages);
|
|
44
|
+
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
45
|
+
this.$logger.trace("Required HTML file '%s' is missing. Let's try generating HTML files and see if we'll find it.", htmlPage);
|
|
46
|
+
await this.generateHtmlPages();
|
|
54
47
|
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
55
|
-
this.$
|
|
56
|
-
yield this.generateHtmlPages();
|
|
57
|
-
if (!this.tryOpeningSelectedPage(htmlPage)) {
|
|
58
|
-
this.$errors.fail("Unable to find help for '%s'", commandName);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
generateHtmlPages() {
|
|
64
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
const mdFiles = this.$fs.enumerateFilesInDirectorySync(this.pathToManPages);
|
|
66
|
-
const basicHtmlPage = this.$fs.readText(this.pathToBasicPage);
|
|
67
|
-
yield Promise.all(_.map(mdFiles, (markdownFile) => {
|
|
68
|
-
const htmlPageGenerationData = {
|
|
69
|
-
basicHtmlPage,
|
|
70
|
-
pathToMdFile: markdownFile,
|
|
71
|
-
pathToMdPages: this.pathToManPages,
|
|
72
|
-
pathToHtmlPages: this.pathToHtmlPages,
|
|
73
|
-
};
|
|
74
|
-
return this.createHtmlPage(htmlPageGenerationData);
|
|
75
|
-
}));
|
|
76
|
-
const installedExtensionsData = this.$extensibilityService.getInstalledExtensionsData();
|
|
77
|
-
const basicHtmlPageForExtensions = this.$fs.readText(this.pathToBasicPageForExtensions);
|
|
78
|
-
for (const extensionData of installedExtensionsData) {
|
|
79
|
-
const docsDir = extensionData.docs;
|
|
80
|
-
if (docsDir) {
|
|
81
|
-
this.$logger.trace(`Start generation of html help content for extension ${extensionData.extensionName}`);
|
|
82
|
-
if (!this.$fs.exists(docsDir)) {
|
|
83
|
-
this.$logger.warn(`Unable to generate html help pages for extension ${extensionData.extensionName} as the docs directory ${docsDir} does not exist.`);
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
const htmlDirFullPath = HelpService.getHtmlDirFullPath(docsDir);
|
|
87
|
-
this.$fs.ensureDirectoryExists(htmlDirFullPath);
|
|
88
|
-
const extensionMdFiles = this.$fs.enumerateFilesInDirectorySync(docsDir);
|
|
89
|
-
try {
|
|
90
|
-
yield Promise.all(_.map(extensionMdFiles, (markdownFile) => {
|
|
91
|
-
const htmlPageGenerationData = {
|
|
92
|
-
basicHtmlPage: basicHtmlPageForExtensions,
|
|
93
|
-
pathToMdFile: markdownFile,
|
|
94
|
-
pathToMdPages: docsDir,
|
|
95
|
-
pathToHtmlPages: htmlDirFullPath,
|
|
96
|
-
extensionName: extensionData.extensionName,
|
|
97
|
-
};
|
|
98
|
-
return this.createHtmlPage(htmlPageGenerationData);
|
|
99
|
-
}));
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
this.$logger.warn(`Unable to generate html help for extension ${extensionData.extensionName}. Error is: ${err.message}`);
|
|
103
|
-
}
|
|
104
|
-
this.$logger.trace(`Finished generation of html help content for extension ${extensionData.extensionName}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
this.$logger.trace("Finished generating HTML files.");
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
showCommandLineHelp(commandData) {
|
|
111
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
-
const help = yield this.getCommandLineHelpForCommand(commandData);
|
|
113
|
-
this.$logger.printMarkdown(help);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
getCommandLineHelpForCommand(commandData) {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
const helpText = yield this.readMdFileForCommand(commandData);
|
|
119
|
-
const commandLineHelp = (yield this.$microTemplateService.parseContent(helpText, { isHtml: false }))
|
|
120
|
-
.replace(/ /g, " ")
|
|
121
|
-
.replace(HelpService.MARKDOWN_LINK_REGEX, "$1")
|
|
122
|
-
.replace(HelpService.SPAN_REGEX, (matchingSubstring, textBeforeSpan, textInsideSpan, index, fullString) => {
|
|
123
|
-
return textBeforeSpan + textInsideSpan.replace(this.newLineRegex, "");
|
|
124
|
-
})
|
|
125
|
-
.replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
|
|
126
|
-
return commandLineHelp;
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
createHtmlPage(htmlPageGenerationData) {
|
|
130
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
|
|
132
|
-
const mdFileName = path.basename(pathToMdFile);
|
|
133
|
-
const htmlFileName = mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, HelpService.HTML_FILE_EXTENSION);
|
|
134
|
-
this.$logger.trace("Generating '%s' help topic.", htmlFileName);
|
|
135
|
-
const helpText = this.$fs.readText(pathToMdFile);
|
|
136
|
-
const outputText = yield this.$microTemplateService.parseContent(helpText, {
|
|
137
|
-
isHtml: true,
|
|
138
|
-
});
|
|
139
|
-
const htmlText = (0, marked_1.marked)(outputText);
|
|
140
|
-
const filePath = pathToMdFile
|
|
141
|
-
.replace(path.basename(pathToMdPages), path.basename(pathToHtmlPages))
|
|
142
|
-
.replace(mdFileName, htmlFileName);
|
|
143
|
-
this.$logger.trace("HTML file path for '%s' man page is: '%s'.", mdFileName, filePath);
|
|
144
|
-
let outputHtml = basicHtmlPage
|
|
145
|
-
.replace(HelpService.MAN_PAGE_NAME_REGEX, mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, ""))
|
|
146
|
-
.replace(HelpService.HTML_COMMAND_HELP_REGEX, htmlText)
|
|
147
|
-
.replace(HelpService.RELATIVE_PATH_TO_STYLES_CSS_REGEX, path.relative(path.dirname(filePath), this.pathToStylesCss))
|
|
148
|
-
.replace(HelpService.RELATIVE_PATH_TO_IMAGES_REGEX, path.relative(path.dirname(filePath), this.pathToImages))
|
|
149
|
-
.replace(HelpService.RELATIVE_PATH_TO_INDEX_REGEX, path.relative(path.dirname(filePath), this.pathToIndexHtml));
|
|
150
|
-
if (extensionName) {
|
|
151
|
-
outputHtml = outputHtml.replace(HelpService.EXTENSION_NAME_REGEX, extensionName);
|
|
48
|
+
this.$errors.fail("Unable to find help for '%s'", commandName);
|
|
152
49
|
}
|
|
153
|
-
|
|
154
|
-
this.$logger.trace("Finished writing file '%s'.", filePath);
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
convertCommandNameToFileName(commandData) {
|
|
158
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
-
let { commandName } = commandData;
|
|
160
|
-
const defaultCommandMatch = commandName && commandName.match(/([\w-]+?)\|\*/);
|
|
161
|
-
if (defaultCommandMatch) {
|
|
162
|
-
this.$logger.trace("Default command found. Replace current command name '%s' with '%s'.", commandName, defaultCommandMatch[1]);
|
|
163
|
-
commandName = defaultCommandMatch[1];
|
|
164
|
-
}
|
|
165
|
-
const availableCommands = this.$injector
|
|
166
|
-
.getRegisteredCommandsNames(true)
|
|
167
|
-
.sort();
|
|
168
|
-
this.$logger.trace("List of registered commands: %s", availableCommands.join(", "));
|
|
169
|
-
if (commandName && !_.includes(availableCommands, commandName)) {
|
|
170
|
-
yield this.throwMissingCommandError(commandData);
|
|
171
|
-
}
|
|
172
|
-
return (commandName && commandName.replace(/\|/g, "-")) || "start";
|
|
173
|
-
});
|
|
50
|
+
}
|
|
174
51
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
52
|
+
async generateHtmlPages() {
|
|
53
|
+
const mdFiles = this.$fs.enumerateFilesInDirectorySync(this.pathToManPages);
|
|
54
|
+
const basicHtmlPage = this.$fs.readText(this.pathToBasicPage);
|
|
55
|
+
await Promise.all(_.map(mdFiles, (markdownFile) => {
|
|
56
|
+
const htmlPageGenerationData = {
|
|
57
|
+
basicHtmlPage,
|
|
58
|
+
pathToMdFile: markdownFile,
|
|
59
|
+
pathToMdPages: this.pathToManPages,
|
|
60
|
+
pathToHtmlPages: this.pathToHtmlPages,
|
|
182
61
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
62
|
+
return this.createHtmlPage(htmlPageGenerationData);
|
|
63
|
+
}));
|
|
64
|
+
const installedExtensionsData = this.$extensibilityService.getInstalledExtensionsData();
|
|
65
|
+
const basicHtmlPageForExtensions = this.$fs.readText(this.pathToBasicPageForExtensions);
|
|
66
|
+
for (const extensionData of installedExtensionsData) {
|
|
67
|
+
const docsDir = extensionData.docs;
|
|
68
|
+
if (docsDir) {
|
|
69
|
+
this.$logger.trace(`Start generation of html help content for extension ${extensionData.extensionName}`);
|
|
70
|
+
if (!this.$fs.exists(docsDir)) {
|
|
71
|
+
this.$logger.warn(`Unable to generate html help pages for extension ${extensionData.extensionName} as the docs directory ${docsDir} does not exist.`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const htmlDirFullPath = HelpService.getHtmlDirFullPath(docsDir);
|
|
75
|
+
this.$fs.ensureDirectoryExists(htmlDirFullPath);
|
|
76
|
+
const extensionMdFiles = this.$fs.enumerateFilesInDirectorySync(docsDir);
|
|
77
|
+
try {
|
|
78
|
+
await Promise.all(_.map(extensionMdFiles, (markdownFile) => {
|
|
79
|
+
const htmlPageGenerationData = {
|
|
80
|
+
basicHtmlPage: basicHtmlPageForExtensions,
|
|
81
|
+
pathToMdFile: markdownFile,
|
|
82
|
+
pathToMdPages: docsDir,
|
|
83
|
+
pathToHtmlPages: htmlDirFullPath,
|
|
84
|
+
extensionName: extensionData.extensionName,
|
|
85
|
+
};
|
|
86
|
+
return this.createHtmlPage(htmlPageGenerationData);
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
this.$logger.warn(`Unable to generate html help for extension ${extensionData.extensionName}. Error is: ${err.message}`);
|
|
91
|
+
}
|
|
92
|
+
this.$logger.trace(`Finished generation of html help content for extension ${extensionData.extensionName}`);
|
|
186
93
|
}
|
|
187
|
-
|
|
94
|
+
}
|
|
95
|
+
this.$logger.trace("Finished generating HTML files.");
|
|
96
|
+
}
|
|
97
|
+
async showCommandLineHelp(commandData) {
|
|
98
|
+
const help = await this.getCommandLineHelpForCommand(commandData);
|
|
99
|
+
this.$logger.printMarkdown(help);
|
|
100
|
+
}
|
|
101
|
+
async getCommandLineHelpForCommand(commandData) {
|
|
102
|
+
const helpText = await this.readMdFileForCommand(commandData);
|
|
103
|
+
const commandLineHelp = (await this.$microTemplateService.parseContent(helpText, { isHtml: false }))
|
|
104
|
+
.replace(/ /g, " ")
|
|
105
|
+
.replace(HelpService.MARKDOWN_LINK_REGEX, "$1")
|
|
106
|
+
.replace(HelpService.SPAN_REGEX, (matchingSubstring, textBeforeSpan, textInsideSpan, index, fullString) => {
|
|
107
|
+
return textBeforeSpan + textInsideSpan.replace(this.newLineRegex, "");
|
|
108
|
+
})
|
|
109
|
+
.replace(HelpService.NEW_LINE_REGEX, os_1.EOL);
|
|
110
|
+
return commandLineHelp;
|
|
111
|
+
}
|
|
112
|
+
async createHtmlPage(htmlPageGenerationData) {
|
|
113
|
+
const { basicHtmlPage, pathToMdFile, pathToMdPages, pathToHtmlPages, extensionName, } = htmlPageGenerationData;
|
|
114
|
+
const mdFileName = path.basename(pathToMdFile);
|
|
115
|
+
const htmlFileName = mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, HelpService.HTML_FILE_EXTENSION);
|
|
116
|
+
this.$logger.trace("Generating '%s' help topic.", htmlFileName);
|
|
117
|
+
const helpText = this.$fs.readText(pathToMdFile);
|
|
118
|
+
const outputText = await this.$microTemplateService.parseContent(helpText, {
|
|
119
|
+
isHtml: true,
|
|
188
120
|
});
|
|
121
|
+
const htmlText = await (0, marked_1.marked)(outputText);
|
|
122
|
+
const filePath = pathToMdFile
|
|
123
|
+
.replace(path.basename(pathToMdPages), path.basename(pathToHtmlPages))
|
|
124
|
+
.replace(mdFileName, htmlFileName);
|
|
125
|
+
this.$logger.trace("HTML file path for '%s' man page is: '%s'.", mdFileName, filePath);
|
|
126
|
+
let outputHtml = basicHtmlPage
|
|
127
|
+
.replace(HelpService.MAN_PAGE_NAME_REGEX, mdFileName.replace(HelpService.MARKDOWN_FILE_EXTENSION, ""))
|
|
128
|
+
.replace(HelpService.HTML_COMMAND_HELP_REGEX, htmlText)
|
|
129
|
+
.replace(HelpService.RELATIVE_PATH_TO_STYLES_CSS_REGEX, path.relative(path.dirname(filePath), this.pathToStylesCss))
|
|
130
|
+
.replace(HelpService.RELATIVE_PATH_TO_IMAGES_REGEX, path.relative(path.dirname(filePath), this.pathToImages))
|
|
131
|
+
.replace(HelpService.RELATIVE_PATH_TO_INDEX_REGEX, path.relative(path.dirname(filePath), this.pathToIndexHtml));
|
|
132
|
+
if (extensionName) {
|
|
133
|
+
outputHtml = outputHtml.replace(HelpService.EXTENSION_NAME_REGEX, extensionName);
|
|
134
|
+
}
|
|
135
|
+
this.$fs.writeFile(filePath, outputHtml);
|
|
136
|
+
this.$logger.trace("Finished writing file '%s'.", filePath);
|
|
137
|
+
}
|
|
138
|
+
async convertCommandNameToFileName(commandData) {
|
|
139
|
+
let { commandName } = commandData;
|
|
140
|
+
const defaultCommandMatch = commandName && commandName.match(/([\w-]+?)\|\*/);
|
|
141
|
+
if (defaultCommandMatch) {
|
|
142
|
+
this.$logger.trace("Default command found. Replace current command name '%s' with '%s'.", commandName, defaultCommandMatch[1]);
|
|
143
|
+
commandName = defaultCommandMatch[1];
|
|
144
|
+
}
|
|
145
|
+
const availableCommands = this.$injector
|
|
146
|
+
.getRegisteredCommandsNames(true)
|
|
147
|
+
.sort();
|
|
148
|
+
this.$logger.trace("List of registered commands: %s", availableCommands.join(", "));
|
|
149
|
+
if (commandName && !_.includes(availableCommands, commandName)) {
|
|
150
|
+
await this.throwMissingCommandError(commandData);
|
|
151
|
+
}
|
|
152
|
+
return (commandName && commandName.replace(/\|/g, "-")) || "start";
|
|
153
|
+
}
|
|
154
|
+
async throwMissingCommandError(commandData) {
|
|
155
|
+
const commandName = commandData.commandName;
|
|
156
|
+
const commandInfo = {
|
|
157
|
+
inputStrings: [commandName, ...commandData.commandArguments],
|
|
158
|
+
commandDelimiter: "|",
|
|
159
|
+
defaultCommandDelimiter: "|*",
|
|
160
|
+
};
|
|
161
|
+
const extensionData = await this.$extensibilityService.getExtensionNameWhereCommandIsRegistered(commandInfo);
|
|
162
|
+
if (extensionData) {
|
|
163
|
+
this.$errors.fail(extensionData.installationMessage);
|
|
164
|
+
}
|
|
165
|
+
this.$errors.fail("Unknown command '%s'. Try '$ %s help' for a full list of supported commands.", commandName, this.$staticConfig.CLIENT_NAME.toLowerCase());
|
|
189
166
|
}
|
|
190
167
|
static getHtmlDirFullPath(docsDir) {
|
|
191
168
|
return path.join(path.dirname(docsDir), "html");
|
|
@@ -224,19 +201,18 @@ class HelpService {
|
|
|
224
201
|
this.$logger.trace("Unable to find file: '%s'", htmlPage);
|
|
225
202
|
return false;
|
|
226
203
|
}
|
|
227
|
-
readMdFileForCommand(commandData) {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
yield this.throwMissingCommandError(commandData);
|
|
237
|
-
});
|
|
204
|
+
async readMdFileForCommand(commandData) {
|
|
205
|
+
const mdFileName = (await this.convertCommandNameToFileName(commandData)) +
|
|
206
|
+
HelpService.MARKDOWN_FILE_EXTENSION;
|
|
207
|
+
this.$logger.trace("Reading help for command '%s'. FileName is '%s'.", commandData.commandName, mdFileName);
|
|
208
|
+
const markdownFile = this.getHelpFile(mdFileName, this.pathToManPages);
|
|
209
|
+
if (markdownFile) {
|
|
210
|
+
return this.$fs.readText(markdownFile);
|
|
211
|
+
}
|
|
212
|
+
await this.throwMissingCommandError(commandData);
|
|
238
213
|
}
|
|
239
214
|
}
|
|
215
|
+
exports.HelpService = HelpService;
|
|
240
216
|
HelpService.MARKDOWN_FILE_EXTENSION = ".md";
|
|
241
217
|
HelpService.HTML_FILE_EXTENSION = ".html";
|
|
242
218
|
HelpService.MAN_PAGE_NAME_REGEX = /@MAN_PAGE_NAME@/g;
|
|
@@ -248,5 +224,4 @@ HelpService.EXTENSION_NAME_REGEX = /@EXTENSION_NAME@/g;
|
|
|
248
224
|
HelpService.MARKDOWN_LINK_REGEX = /\[([\w \-\`\<\>\*\:\\]+?)\]\([\s\S]+?\)/g;
|
|
249
225
|
HelpService.SPAN_REGEX = /([\s\S]*?)(?:\r?\n)?<span.*?>([\s\S]*?)<\/span>(?:\r?\n)*/g;
|
|
250
226
|
HelpService.NEW_LINE_REGEX = /<\/?\s*?br\s*?\/?>/g;
|
|
251
|
-
exports.HelpService = HelpService;
|
|
252
227
|
yok_1.injector.register("helpService", HelpService);
|
|
@@ -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.HooksService = void 0;
|
|
19
10
|
const path = require("path");
|
|
@@ -73,117 +64,111 @@ class HooksService {
|
|
|
73
64
|
const traceMessage = `AfterHookName for command ${commandName} is ${afterHookName}`;
|
|
74
65
|
return this.executeHooks(afterHookName, traceMessage, hookArguments);
|
|
75
66
|
}
|
|
76
|
-
executeHooks(hookName, traceMessage, hookArguments) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
67
|
+
async executeHooks(hookName, traceMessage, hookArguments) {
|
|
68
|
+
if (this.$config.DISABLE_HOOKS || !this.$options.hooks) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const hookArgs = hookArguments && hookArguments[this.hookArgsName];
|
|
72
|
+
let projectDir = hookArgs && hookArgs.projectDir;
|
|
73
|
+
if (!projectDir && hookArgs) {
|
|
74
|
+
const candidate = (0, helpers_1.getValueFromNestedObject)(hookArgs, "projectDir");
|
|
75
|
+
projectDir = candidate && candidate.projectDir;
|
|
76
|
+
}
|
|
77
|
+
this.$logger.trace(`Project dir from hooksArgs is: ${projectDir}.`);
|
|
78
|
+
this.initialize(projectDir);
|
|
79
|
+
this.$logger.trace(traceMessage);
|
|
80
|
+
const results = [];
|
|
81
|
+
try {
|
|
82
|
+
for (const hooksDirectory of this.hooksDirectories) {
|
|
83
|
+
results.push(await this.executeHooksInDirectory(hooksDirectory, hookName, hookArguments));
|
|
80
84
|
}
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const candidate = (0, helpers_1.getValueFromNestedObject)(hookArgs, "projectDir");
|
|
85
|
-
projectDir = candidate && candidate.projectDir;
|
|
85
|
+
const customHooks = this.getCustomHooksByName(hookName);
|
|
86
|
+
for (const hook of customHooks) {
|
|
87
|
+
results.push(await this.executeHook(this.$projectHelper.projectDir, hookName, hook, hookArguments));
|
|
86
88
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
this.$logger.trace(
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
this.$logger.trace(`Failed during hook execution ${hookName}.`);
|
|
92
|
+
this.$errors.fail(err.stack || err.message || err);
|
|
93
|
+
}
|
|
94
|
+
return _.flatten(results);
|
|
95
|
+
}
|
|
96
|
+
async executeHook(directoryPath, hookName, hook, hookArguments) {
|
|
97
|
+
hookArguments = hookArguments || {};
|
|
98
|
+
let result;
|
|
99
|
+
const relativePath = path.relative(directoryPath, hook.fullPath);
|
|
100
|
+
const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
|
|
101
|
+
let command = this.getSheBangInterpreter(hook);
|
|
102
|
+
let inProc = false;
|
|
103
|
+
if (!command) {
|
|
104
|
+
command = hook.fullPath;
|
|
105
|
+
if (path.extname(hook.fullPath).toLowerCase() === ".js") {
|
|
106
|
+
command = process.argv[0];
|
|
107
|
+
inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
|
|
99
108
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
109
|
+
}
|
|
110
|
+
const startTime = this.$performanceService.now();
|
|
111
|
+
if (inProc) {
|
|
112
|
+
this.$logger.trace("Executing %s hook at location %s in-process", hookName, hook.fullPath);
|
|
113
|
+
const hookEntryPoint = require(hook.fullPath);
|
|
114
|
+
this.$logger.trace(`Validating ${hookName} arguments.`);
|
|
115
|
+
const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
|
|
116
|
+
if (invalidArguments.length) {
|
|
117
|
+
this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
|
|
118
|
+
return;
|
|
103
119
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
executeHook(directoryPath, hookName, hook, hookArguments) {
|
|
108
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
-
hookArguments = hookArguments || {};
|
|
110
|
-
let result;
|
|
111
|
-
const relativePath = path.relative(directoryPath, hook.fullPath);
|
|
112
|
-
const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
|
|
113
|
-
let command = this.getSheBangInterpreter(hook);
|
|
114
|
-
let inProc = false;
|
|
115
|
-
if (!command) {
|
|
116
|
-
command = hook.fullPath;
|
|
117
|
-
if (path.extname(hook.fullPath).toLowerCase() === ".js") {
|
|
118
|
-
command = process.argv[0];
|
|
119
|
-
inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
|
|
120
|
-
}
|
|
120
|
+
const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
|
|
121
|
+
if (projectDataHookArg) {
|
|
122
|
+
hookArguments["projectData"] = hookArguments["$projectData"] = projectDataHookArg;
|
|
121
123
|
}
|
|
122
|
-
const
|
|
123
|
-
if (
|
|
124
|
-
this.$logger.trace("
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
|
|
128
|
-
if (invalidArguments.length) {
|
|
129
|
-
this.$logger.warn(`${hook.fullPath} will NOT be executed because it has invalid arguments - ${color_1.color.grey(invalidArguments.join(", "))}.`);
|
|
130
|
-
return;
|
|
124
|
+
const maybePromise = this.$injector.resolve(hookEntryPoint, hookArguments);
|
|
125
|
+
if (maybePromise) {
|
|
126
|
+
this.$logger.trace("Hook promises to signal completion");
|
|
127
|
+
try {
|
|
128
|
+
result = await maybePromise;
|
|
131
129
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
if (maybePromise) {
|
|
138
|
-
this.$logger.trace("Hook promises to signal completion");
|
|
139
|
-
try {
|
|
140
|
-
result = yield maybePromise;
|
|
130
|
+
catch (err) {
|
|
131
|
+
if (err &&
|
|
132
|
+
_.isBoolean(err.stopExecution) &&
|
|
133
|
+
err.errorAsWarning === true) {
|
|
134
|
+
this.$logger.warn(err.message || err);
|
|
141
135
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
err.errorAsWarning === true) {
|
|
146
|
-
this.$logger.warn(err.message || err);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
this.$logger.error(err);
|
|
150
|
-
throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
|
|
151
|
-
}
|
|
136
|
+
else {
|
|
137
|
+
this.$logger.error(err);
|
|
138
|
+
throw err || new Error(`Failed to execute hook: ${hook.fullPath}.`);
|
|
152
139
|
}
|
|
153
|
-
this.$logger.trace("Hook completed");
|
|
154
140
|
}
|
|
141
|
+
this.$logger.trace("Hook completed");
|
|
155
142
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
this.$logger.trace("Finished executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const environment = this.prepareEnvironment(hook.fullPath);
|
|
146
|
+
this.$logger.trace("Executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
|
|
147
|
+
const output = await this.$childProcess.spawnFromEvent(command, [hook.fullPath], "close", environment, { throwError: false });
|
|
148
|
+
result = output;
|
|
149
|
+
if (output.exitCode !== 0) {
|
|
150
|
+
throw new Error(output.stdout + output.stderr);
|
|
165
151
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
152
|
+
this.$logger.trace("Finished executing %s hook at location %s with environment ", hookName, hook.fullPath, environment);
|
|
153
|
+
}
|
|
154
|
+
const endTime = this.$performanceService.now();
|
|
155
|
+
this.$performanceService.processExecutionData(trackId, startTime, endTime, [
|
|
156
|
+
hookArguments,
|
|
157
|
+
]);
|
|
158
|
+
return result;
|
|
172
159
|
}
|
|
173
|
-
executeHooksInDirectory(directoryPath, hookName, hookArguments) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
results.push(result);
|
|
183
|
-
}
|
|
160
|
+
async executeHooksInDirectory(directoryPath, hookName, hookArguments) {
|
|
161
|
+
hookArguments = hookArguments || {};
|
|
162
|
+
const results = [];
|
|
163
|
+
const hooks = this.getHooksByName(directoryPath, hookName);
|
|
164
|
+
for (let i = 0; i < hooks.length; ++i) {
|
|
165
|
+
const hook = hooks[i];
|
|
166
|
+
const result = await this.executeHook(directoryPath, hookName, hook, hookArguments);
|
|
167
|
+
if (result) {
|
|
168
|
+
results.push(result);
|
|
184
169
|
}
|
|
185
|
-
|
|
186
|
-
|
|
170
|
+
}
|
|
171
|
+
return results;
|
|
187
172
|
}
|
|
188
173
|
getCustomHooksByName(hookName) {
|
|
189
174
|
const hooks = [];
|
|
@@ -306,6 +291,7 @@ class HooksService {
|
|
|
306
291
|
return invalidArguments;
|
|
307
292
|
}
|
|
308
293
|
}
|
|
294
|
+
exports.HooksService = HooksService;
|
|
309
295
|
HooksService.HOOKS_DIRECTORY_NAME = "hooks";
|
|
310
296
|
__decorate([
|
|
311
297
|
(0, decorators_1.memoize)({
|
|
@@ -314,5 +300,4 @@ __decorate([
|
|
|
314
300
|
},
|
|
315
301
|
})
|
|
316
302
|
], HooksService.prototype, "initialize", null);
|
|
317
|
-
exports.HooksService = HooksService;
|
|
318
303
|
yok_1.injector.register("hooksService", HooksService);
|
|
@@ -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.IOSNotificationService = void 0;
|
|
13
4
|
const constants = require("../constants");
|
|
@@ -17,32 +8,28 @@ class IOSNotificationService {
|
|
|
17
8
|
constructor($iosDeviceOperations) {
|
|
18
9
|
this.$iosDeviceOperations = $iosDeviceOperations;
|
|
19
10
|
}
|
|
20
|
-
awaitNotification(deviceIdentifier, socket, timeout) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return _.first(notificationResponse[deviceIdentifier]).response;
|
|
32
|
-
});
|
|
11
|
+
async awaitNotification(deviceIdentifier, socket, timeout) {
|
|
12
|
+
const notificationResponse = await this.$iosDeviceOperations.awaitNotificationResponse([
|
|
13
|
+
{
|
|
14
|
+
deviceId: deviceIdentifier,
|
|
15
|
+
socket: socket,
|
|
16
|
+
timeout: timeout,
|
|
17
|
+
responseCommandType: constants.IOS_RELAY_NOTIFICATION_COMMAND_TYPE,
|
|
18
|
+
responsePropertyName: "Name",
|
|
19
|
+
},
|
|
20
|
+
]);
|
|
21
|
+
return _.first(notificationResponse[deviceIdentifier]).response;
|
|
33
22
|
}
|
|
34
|
-
postNotification(deviceIdentifier, notification, commandType) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return +_.first(response[deviceIdentifier]).response;
|
|
45
|
-
});
|
|
23
|
+
async postNotification(deviceIdentifier, notification, commandType) {
|
|
24
|
+
commandType = commandType || constants.IOS_POST_NOTIFICATION_COMMAND_TYPE;
|
|
25
|
+
const response = await this.$iosDeviceOperations.postNotification([
|
|
26
|
+
{
|
|
27
|
+
deviceId: deviceIdentifier,
|
|
28
|
+
commandType: commandType,
|
|
29
|
+
notificationName: notification,
|
|
30
|
+
},
|
|
31
|
+
]);
|
|
32
|
+
return +_.first(response[deviceIdentifier]).response;
|
|
46
33
|
}
|
|
47
34
|
}
|
|
48
35
|
exports.IOSNotificationService = IOSNotificationService;
|