nativescript 9.0.0-alpha.9 → 9.0.0-dev.0
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/config.json +1 -1
- package/config/test-deps-versions-generated.json +3 -3
- package/docs/build-jekyll-md.sh +1 -1
- package/docs/man_pages/config/config-get.md +36 -0
- package/docs/man_pages/config/config-set.md +40 -0
- package/docs/man_pages/config/config.md +39 -0
- package/docs/man_pages/project/hooks/hooks.md +35 -0
- package/docs/man_pages/start.md +1 -0
- package/lib/.d.ts +4 -0
- package/lib/bootstrap.js +2 -0
- package/lib/commands/build.js +22 -3
- package/lib/commands/clean.js +3 -2
- package/lib/commands/config.js +9 -3
- package/lib/commands/hooks/common.js +79 -0
- package/lib/commands/hooks/hooks-lock.js +100 -0
- package/lib/commands/hooks/hooks.js +71 -0
- package/lib/commands/plugin/build-plugin.js +6 -2
- package/lib/commands/typings.js +1 -1
- package/lib/common/declarations.d.ts +5 -0
- package/lib/common/definitions/extensibility.d.ts +2 -2
- package/lib/common/definitions/mobile.d.ts +78 -72
- package/lib/common/file-system.js +1 -1
- package/lib/common/logger/logger.js +1 -1
- package/lib/common/mobile/android/android-device.js +8 -2
- package/lib/common/mobile/mobile-core/devices-service.js +1 -1
- package/lib/common/plist-parser.js +3 -3
- package/lib/common/project-helper.js +15 -2
- package/lib/common/services/hooks-service.js +1 -1
- package/lib/config.js +2 -38
- package/lib/constants.js +3 -2
- package/lib/controllers/build-controller.js +1 -1
- package/lib/controllers/deploy-controller.js +5 -2
- package/lib/controllers/migrate-controller.js +6 -5
- package/lib/controllers/platform-controller.js +3 -1
- package/lib/controllers/prepare-controller.js +54 -13
- package/lib/controllers/run-controller.js +12 -13
- package/lib/controllers/update-controller.js +2 -2
- package/lib/data/build-data.js +2 -0
- package/lib/declarations.d.ts +3 -1
- package/lib/definitions/android-plugin-migrator.d.ts +3 -2
- package/lib/definitions/build.d.ts +4 -2
- package/lib/definitions/hooks.d.ts +1 -0
- package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
- package/lib/definitions/livesync.d.ts +1 -1
- package/lib/definitions/project.d.ts +14 -0
- package/lib/definitions/run.d.ts +2 -4
- package/lib/helpers/deploy-command-helper.js +1 -0
- package/lib/nativescript-cli.js +28 -0
- package/lib/options.js +9 -2
- package/lib/project-data.js +8 -2
- package/lib/services/analytics/analytics-broker-process.js +1 -1
- package/lib/services/analytics/analytics-service.js +1 -1
- package/lib/services/android/gradle-build-args-service.js +21 -7
- package/lib/services/android/gradle-build-service.js +15 -1
- package/lib/services/android-plugin-build-service.js +58 -44
- package/lib/services/android-project-service.js +63 -4
- package/lib/services/build-artifacts-service.js +24 -9
- package/lib/services/bundler/bundler-compiler-service.js +77 -104
- package/lib/services/cocoapods-service.js +10 -4
- package/lib/services/device/device-install-app-service.js +27 -5
- package/lib/services/extensibility-service.js +1 -1
- package/lib/services/ios/xcodebuild-args-service.js +7 -5
- package/lib/services/ios-project-service.js +5 -2
- package/lib/services/plugins-service.js +3 -2
- package/lib/services/project-data-service.js +16 -18
- package/lib/services/timeline-profiler-service.js +21 -13
- package/lib/services/versions-service.js +2 -1
- package/package.json +16 -13
- package/vendor/aab-tool/README.txt +1 -1
- package/vendor/aab-tool/bundletool.jar +0 -0
- package/vendor/gradle-app/app/build.gradle +1292 -0
- package/vendor/gradle-app/app/gradle-helpers/AnalyticsCollector.gradle +48 -0
- package/vendor/gradle-app/app/gradle-helpers/BuildToolTask.gradle +50 -0
- package/vendor/gradle-app/app/gradle-helpers/CustomExecutionLogger.gradle +52 -0
- package/vendor/gradle-app/app/gradle.properties +45 -0
- package/vendor/gradle-app/build.gradle +170 -0
- package/vendor/gradle-app/settings.gradle +78 -0
- package/vendor/gradle-plugin/build.gradle +214 -91
- package/vendor/gradle-plugin/gradle.properties +2 -18
- package/vendor/gradle-plugin/settings.gradle +23 -11
- 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
package/lib/config.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StaticConfig = exports.Configuration = void 0;
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const shelljs = require("shelljs");
|
|
6
|
-
const os = require("os");
|
|
7
4
|
const _ = require("lodash");
|
|
5
|
+
const path = require("path");
|
|
8
6
|
const yok_1 = require("./common/yok");
|
|
9
7
|
class Configuration {
|
|
10
8
|
constructor($fs) {
|
|
@@ -61,9 +59,7 @@ class StaticConfig {
|
|
|
61
59
|
async getAdbFilePath() {
|
|
62
60
|
if (!this._adbFilePath) {
|
|
63
61
|
const androidToolsInfo = this.$injector.resolve("androidToolsInfo");
|
|
64
|
-
this._adbFilePath =
|
|
65
|
-
(await androidToolsInfo.getPathToAdbFromAndroidHome()) ||
|
|
66
|
-
(await this.getAdbFilePathCore());
|
|
62
|
+
this._adbFilePath = await androidToolsInfo.getPathToAdbFromAndroidHome();
|
|
67
63
|
}
|
|
68
64
|
return this._adbFilePath;
|
|
69
65
|
}
|
|
@@ -85,38 +81,6 @@ class StaticConfig {
|
|
|
85
81
|
get HTML_COMMON_HELPERS_DIR() {
|
|
86
82
|
return path.join(__dirname, "common", "docs", "helpers");
|
|
87
83
|
}
|
|
88
|
-
async getAdbFilePathCore() {
|
|
89
|
-
const $childProcess = this.$injector.resolve("$childProcess");
|
|
90
|
-
try {
|
|
91
|
-
const proc = await $childProcess.spawnFromEvent("adb", ["version"], "exit", undefined, { throwError: false });
|
|
92
|
-
if (proc.stderr) {
|
|
93
|
-
return await this.spawnPrivateAdb();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
catch (e) {
|
|
97
|
-
if (e.code === "ENOENT") {
|
|
98
|
-
return await this.spawnPrivateAdb();
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return "adb";
|
|
102
|
-
}
|
|
103
|
-
async spawnPrivateAdb() {
|
|
104
|
-
const $fs = this.$injector.resolve("$fs"), $childProcess = this.$injector.resolve("$childProcess"), $hostInfo = this.$injector.resolve("$hostInfo");
|
|
105
|
-
const defaultAdbDirPath = path.join(__dirname, "common", "resources", "platform-tools", "android", process.platform);
|
|
106
|
-
const pathToPackageJson = path.join(__dirname, "..", "package.json");
|
|
107
|
-
const nsCliVersion = require(pathToPackageJson).version;
|
|
108
|
-
const tmpDir = path.join(os.tmpdir(), `nativescript-cli-${nsCliVersion}`);
|
|
109
|
-
$fs.createDirectory(tmpDir);
|
|
110
|
-
const targetAdb = path.join(tmpDir, "adb");
|
|
111
|
-
if (!$fs.exists(tmpDir) || !$fs.readDirectory(tmpDir).length) {
|
|
112
|
-
shelljs.cp(path.join(defaultAdbDirPath, "*"), tmpDir);
|
|
113
|
-
if (!$hostInfo.isWindows) {
|
|
114
|
-
shelljs.chmod("+x", targetAdb);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
await $childProcess.spawnFromEvent(targetAdb, ["start-server"], "exit");
|
|
118
|
-
return targetAdb;
|
|
119
|
-
}
|
|
120
84
|
}
|
|
121
85
|
exports.StaticConfig = StaticConfig;
|
|
122
86
|
yok_1.injector.register("staticConfig", StaticConfig);
|
package/lib/constants.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BUILD_XCCONFIG_FILE_NAME = exports.INCLUDE_GRADLE_NAME = exports.INFO_PLIST_FILE_NAME = exports.APP_GRADLE_FILE_NAME = exports.MANIFEST_FILE_NAME = exports.ANDROID_ANALYTICS_DATA_FILE = exports.ANDROID_ANALYTICS_DATA_DIR = exports.FONTS_DIR = exports.ASSETS_DIR = exports.MAIN_DIR = exports.SRC_DIR = exports.AWAIT_NOTIFICATION_TIMEOUT_SECONDS = exports.CODE_SIGN_ENTITLEMENTS = exports.LIB_DIR_NAME = exports.KARMA_CONFIG_NAME = exports.TSCCONFIG_TNS_JSON_NAME = exports.RSPACK_CONFIG_NAME = exports.WEBPACK_CONFIG_NAME = exports.HOOKS_DIR_NAME = exports.PLATFORMS_DIR_NAME = exports.XML_FILE_EXTENSION = exports.LIVESYNC_EXCLUDED_FILE_PATTERNS = exports.TEST_RUNNER_NAME = exports.TESTING_FRAMEWORKS = exports.LIVESYNC_EXCLUDED_DIRECTORIES = exports.DEFAULT_APP_IDENTIFIER_PREFIX = exports.NODE_MODULE_CACHE_PATH_KEY_NAME = exports.ANDROID_DEVICE_APP_ROOT_TEMPLATE = exports.PACKAGE_LOCK_JSON_FILE_NAME = exports.PACKAGE_JSON_FILE_NAME = exports.SCOPED_VISIONOS_RUNTIME_NAME = exports.SCOPED_IOS_RUNTIME_NAME = exports.SCOPED_ANDROID_RUNTIME_NAME = exports.TNS_IOS_RUNTIME_NAME = exports.TNS_ANDROID_RUNTIME_NAME = exports.UI_MOBILE_BASE_NAME = exports.TNS_CORE_MODULES_WIDGETS_NAME = exports.RSPACK_PLUGIN_NAME = exports.WEBPACK_PLUGIN_NAME = exports.SCOPED_TNS_CORE_THEME_NAME = exports.TNS_CORE_THEME_NAME = exports.SCOPED_TNS_CORE_MODULES = exports.TNS_CORE_MODULES_NAME = exports.TNS_MODULES_FOLDER_NAME = exports.NODE_MODULES_FOLDER_NAME = exports.NATIVESCRIPT_KEY_NAME = exports.NS_BASE_PODFILE = exports.PROJECT_FRAMEWORK_FOLDER_NAME = exports.APP_RESOURCES_FOLDER_NAME = exports.APP_FOLDER_NAME = void 0;
|
|
4
|
-
exports.
|
|
5
|
-
exports.PackageManagers = exports.EMIT_APPENDER_EVENT_NAME = exports.LoggerConfigData = exports.LoggerLevel = exports.DeviceConnectionType = exports.LoggerAppenders = exports.IOSNativeTargetTypes = exports.IOSNativeTargetProductTypes = exports.IOSDeviceTargets = exports.RunOnDeviceEvents = exports.AndroidAppBundleMessages = exports.AndroidBundleValidatorMessages = exports.BundleValidatorMessages = exports.IosProjectConstants = exports.EXTENSION_PROVISIONING_FILENAME = exports.PODFILE_NAME = exports.PLUGINS_BUILD_DATA_FILENAME = exports.PLUGIN_BUILD_DATA_FILENAME = exports.AddPlaformErrors = exports.PACKAGE_PLACEHOLDER_NAME = exports.AndroidBuildDefaults = exports.Hooks = exports.XcodeDeprecationStringFormat = exports.MacOSDeprecationStringFormat = exports.MacOSVersions = exports.AssetConstants = exports.CLI_RESOURCES_DIR_NAME = exports.NATIVESCRIPT_PROPS_INTERNAL_DELIMITER = exports.AnalyticsEventLabelDelimiter = exports.DebugCommandErrors = exports.BUNDLER_COMPILATION_COMPLETE = exports.PREPARE_READY_EVENT_NAME = exports.INITIAL_SYNC_EVENT_NAME = exports.FILES_CHANGE_EVENT_NAME = exports.CACACHE_DIRECTORY_NAME = exports.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE = exports.ANDROID_RELEASE_BUILD_ERROR_MESSAGE = exports.POST_INSTALL_COMMAND_NAME = exports.INSPECTOR_CACHE_DIRNAME = exports.VERSION_STRING = exports.DEBUGGER_DETACHED_EVENT_NAME = exports.DEBUGGER_ATTACHED_EVENT_NAME = exports.USER_INTERACTION_NEEDED_EVENT_NAME = exports.CONNECTION_ERROR_EVENT_NAME = exports.BUILD_OUTPUT_EVENT_NAME = void 0;
|
|
4
|
+
exports.JsFlavorName = exports.TsFlavorName = exports.SvelteFlavorName = exports.SolidFlavorName = exports.ReactFlavorName = exports.VueFlavorName = exports.NgFlavorName = exports.SVELTE_NAME = exports.SOLID_NAME = exports.REACT_NAME = exports.TYPESCRIPT_NAME = exports.JAVASCRIPT_NAME = exports.ANGULAR_NAME = exports.VUE_NAME = exports.ItunesConnectApplicationTypes = exports.androidAppResourcesFolderName = exports.iOSAppResourcesFolderName = exports.ITMSConstants = exports.ANALYTICS_LOCAL_TEMPLATE_PREFIX = exports.RESERVED_TEMPLATE_NAMES = exports.ReleaseType = exports.SaveOptions = exports.TemplatesV2PackageJsonKeysToRemove = exports.PackageJsonKeysToKeep = exports.LiveSyncTrackActionNames = exports.PackageVersion = exports.MetadataFilteringConstants = exports.IOS_WATCHAPP_EXTENSION_FOLDER = exports.IOS_WATCHAPP_FOLDER = exports.NATIVE_EXTENSION_FOLDER = exports.APPLICATION_RESPONSE_TIMEOUT_SECONDS = exports.NATIVE_SOURCE_FOLDER = exports.TNS_NATIVE_SOURCE_GROUP_NAME = exports.HASHES_FILE_NAME = exports.APKS_EXTENSION_NAME = exports.AAB_EXTENSION_NAME = exports.APK_EXTENSION_NAME = exports.DEPENDENCIES_JSON_NAME = exports.CONFIG_FILE_NAME_TS = exports.CONFIG_FILE_NAME_JS = exports.CONFIG_FILE_NAME_DISPLAY = exports.CONFIG_NS_APP_ENTRY = exports.CONFIG_NS_BUILD_ENTRY = exports.CONFIG_NS_APP_RESOURCES_ENTRY = exports.CONFIG_NS_FILE_NAME = exports.RESOURCES_DIR = exports.BUNDLE_DIR = exports.APK_DIR = exports.OUTPUTS_DIR = exports.BUILD_DIR = void 0;
|
|
5
|
+
exports.PackageManagers = exports.EMIT_APPENDER_EVENT_NAME = exports.LoggerConfigData = exports.LoggerLevel = exports.DeviceConnectionType = exports.LoggerAppenders = exports.IOSNativeTargetTypes = exports.IOSNativeTargetProductTypes = exports.IOSDeviceTargets = exports.RunOnDeviceEvents = exports.AndroidAppBundleMessages = exports.AndroidBundleValidatorMessages = exports.BundleValidatorMessages = exports.IosProjectConstants = exports.EXTENSION_PROVISIONING_FILENAME = exports.PODFILE_NAME = exports.PLUGINS_BUILD_DATA_FILENAME = exports.PLUGIN_BUILD_DATA_FILENAME = exports.AddPlaformErrors = exports.PACKAGE_PLACEHOLDER_NAME = exports.AndroidBuildDefaults = exports.Hooks = exports.XcodeDeprecationStringFormat = exports.MacOSDeprecationStringFormat = exports.MacOSVersions = exports.AssetConstants = exports.CLI_RESOURCES_DIR_NAME = exports.NATIVESCRIPT_PROPS_INTERNAL_DELIMITER = exports.AnalyticsEventLabelDelimiter = exports.DebugCommandErrors = exports.BUNDLER_COMPILATION_COMPLETE = exports.PREPARE_READY_EVENT_NAME = exports.INITIAL_SYNC_EVENT_NAME = exports.FILES_CHANGE_EVENT_NAME = exports.CACACHE_DIRECTORY_NAME = exports.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE = exports.ANDROID_RELEASE_BUILD_ERROR_MESSAGE = exports.POST_INSTALL_COMMAND_NAME = exports.INSPECTOR_CACHE_DIRNAME = exports.VERSION_STRING = exports.DEBUGGER_DETACHED_EVENT_NAME = exports.DEBUGGER_ATTACHED_EVENT_NAME = exports.USER_INTERACTION_NEEDED_EVENT_NAME = exports.CONNECTION_ERROR_EVENT_NAME = exports.BUILD_OUTPUT_EVENT_NAME = exports.ProjectTypes = void 0;
|
|
6
6
|
const path_1 = require("path");
|
|
7
7
|
exports.APP_FOLDER_NAME = "app";
|
|
8
8
|
exports.APP_RESOURCES_FOLDER_NAME = "App_Resources";
|
|
@@ -61,6 +61,7 @@ exports.BUNDLE_DIR = "bundle";
|
|
|
61
61
|
exports.RESOURCES_DIR = "res";
|
|
62
62
|
exports.CONFIG_NS_FILE_NAME = "nsconfig.json";
|
|
63
63
|
exports.CONFIG_NS_APP_RESOURCES_ENTRY = "appResourcesPath";
|
|
64
|
+
exports.CONFIG_NS_BUILD_ENTRY = "buildPath";
|
|
64
65
|
exports.CONFIG_NS_APP_ENTRY = "appPath";
|
|
65
66
|
exports.CONFIG_FILE_NAME_DISPLAY = "nativescript.config.(js|ts)";
|
|
66
67
|
exports.CONFIG_FILE_NAME_JS = "nativescript.config.js";
|
|
@@ -66,7 +66,7 @@ class BuildController extends events_1.EventEmitter {
|
|
|
66
66
|
this.$logger.info(`Build time: ${buildTime.toFixed(3)} s.`);
|
|
67
67
|
const result = await this.$buildArtifactsService.getLatestAppPackagePath(platformData, buildData);
|
|
68
68
|
if (buildData.copyTo) {
|
|
69
|
-
this.$buildArtifactsService.
|
|
69
|
+
this.$buildArtifactsService.copyAppPackages(buildData.copyTo, platformData, buildData);
|
|
70
70
|
}
|
|
71
71
|
else {
|
|
72
72
|
this.$logger.info(`The build result is located at: ${result}`);
|
|
@@ -20,8 +20,11 @@ class DeployController {
|
|
|
20
20
|
},
|
|
21
21
|
};
|
|
22
22
|
await this.$prepareController.prepare(prepareData);
|
|
23
|
-
|
|
24
|
-
await this.$deviceInstallAppService.installOnDevice(device, {
|
|
23
|
+
await deviceDescriptor.buildAction();
|
|
24
|
+
await this.$deviceInstallAppService.installOnDevice(device, {
|
|
25
|
+
...deviceDescriptor.buildData,
|
|
26
|
+
buildForDevice: !device.isEmulator,
|
|
27
|
+
});
|
|
25
28
|
};
|
|
26
29
|
await this.$devicesService.execute(executeAction, (device) => _.some(deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier));
|
|
27
30
|
}
|
|
@@ -14,7 +14,7 @@ const fs = require("fs");
|
|
|
14
14
|
const os_1 = require("os");
|
|
15
15
|
const color_1 = require("../color");
|
|
16
16
|
class MigrateController extends update_controller_base_1.UpdateControllerBase {
|
|
17
|
-
constructor($fs, $platformCommandHelper, $platformsDataService, $packageInstallationManager, $packageManager, $pacoteService, $logger, $errors, $pluginsService, $projectDataService, $projectConfigService, $options, $resources, $injector, $settingsService, $staticConfig, $terminalSpinnerService, $projectCleanupService, $projectBackupService, $childProcess) {
|
|
17
|
+
constructor($fs, $platformCommandHelper, $platformsDataService, $packageInstallationManager, $packageManager, $pacoteService, $logger, $errors, $pluginsService, $projectDataService, $projectConfigService, $projectData, $options, $resources, $injector, $settingsService, $staticConfig, $terminalSpinnerService, $projectCleanupService, $projectBackupService, $childProcess) {
|
|
18
18
|
super($fs, $platformCommandHelper, $platformsDataService, $packageInstallationManager, $packageManager, $pacoteService);
|
|
19
19
|
this.$fs = $fs;
|
|
20
20
|
this.$platformCommandHelper = $platformCommandHelper;
|
|
@@ -27,6 +27,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
|
|
|
27
27
|
this.$pluginsService = $pluginsService;
|
|
28
28
|
this.$projectDataService = $projectDataService;
|
|
29
29
|
this.$projectConfigService = $projectConfigService;
|
|
30
|
+
this.$projectData = $projectData;
|
|
30
31
|
this.$options = $options;
|
|
31
32
|
this.$resources = $resources;
|
|
32
33
|
this.$injector = $injector;
|
|
@@ -65,7 +66,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
|
|
|
65
66
|
},
|
|
66
67
|
{
|
|
67
68
|
packageName: "nativescript-dev-webpack",
|
|
68
|
-
replaceWith:
|
|
69
|
+
replaceWith: constants.WEBPACK_PLUGIN_NAME,
|
|
69
70
|
shouldRemove: true,
|
|
70
71
|
isDev: true,
|
|
71
72
|
async shouldMigrateAction() {
|
|
@@ -74,7 +75,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
|
|
|
74
75
|
migrateAction: this.migrateWebpack.bind(this),
|
|
75
76
|
},
|
|
76
77
|
{
|
|
77
|
-
packageName:
|
|
78
|
+
packageName: constants.WEBPACK_PLUGIN_NAME,
|
|
78
79
|
minVersion: "3.0.0",
|
|
79
80
|
desiredVersion: "~5.0.0",
|
|
80
81
|
shouldAddIfMissing: true,
|
|
@@ -406,7 +407,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
|
|
|
406
407
|
async cleanUpProject(projectData) {
|
|
407
408
|
await this.$projectCleanupService.clean([
|
|
408
409
|
constants.HOOKS_DIR_NAME,
|
|
409
|
-
|
|
410
|
+
this.$projectData.getBuildRelativeDirectoryPath(),
|
|
410
411
|
constants.NODE_MODULES_FOLDER_NAME,
|
|
411
412
|
constants.PACKAGE_LOCK_JSON_FILE_NAME,
|
|
412
413
|
]);
|
|
@@ -955,7 +956,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
|
|
|
955
956
|
this.spinner.info(`Initializing new ${color_1.color.yellow("webpack.config.js")}`);
|
|
956
957
|
const { desiredVersion: webpackVersion } = this.migrationDependencies.find((dep) => dep.packageName === constants.WEBPACK_PLUGIN_NAME);
|
|
957
958
|
try {
|
|
958
|
-
const scopedWebpackPackage =
|
|
959
|
+
const scopedWebpackPackage = constants.WEBPACK_PLUGIN_NAME;
|
|
959
960
|
const resolvedVersion = await this.$packageInstallationManager.getMaxSatisfyingVersion(scopedWebpackPackage, webpackVersion);
|
|
960
961
|
await this.runNPX([
|
|
961
962
|
"--package",
|
|
@@ -29,7 +29,8 @@ class PlatformController {
|
|
|
29
29
|
const packageToInstall = await this.getPackageToInstall(platformData, projectData, addPlatformData.frameworkPath, version);
|
|
30
30
|
this.$logger.trace("Determined package to install is", packageToInstall);
|
|
31
31
|
const installedPlatformVersion = await this.$addPlatformService.addPlatformSafe(projectData, platformData, packageToInstall, addPlatformData);
|
|
32
|
-
|
|
32
|
+
const buildPath = projectData.platformsDir;
|
|
33
|
+
this.$fs.ensureDirectoryExists(path.join(buildPath, platform));
|
|
33
34
|
if (this.$mobileHelper.isAndroidPlatform(platform)) {
|
|
34
35
|
const gradlePropertiesPath = path.resolve(platformData.projectRoot, "gradle.properties");
|
|
35
36
|
const commentHeader = "# App configuration";
|
|
@@ -48,6 +49,7 @@ class PlatformController {
|
|
|
48
49
|
commentHeader,
|
|
49
50
|
`appPath = ${appPath}`,
|
|
50
51
|
`appResourcesPath = ${appResourcesPath}`,
|
|
52
|
+
`buildPath = ${buildPath}`,
|
|
51
53
|
"",
|
|
52
54
|
].join("\n");
|
|
53
55
|
gradlePropertiesContents += dataToWrite;
|
|
@@ -15,6 +15,7 @@ const decorators_1 = require("../common/decorators");
|
|
|
15
15
|
const helpers_1 = require("../common/helpers");
|
|
16
16
|
const yok_1 = require("../common/yok");
|
|
17
17
|
const constants_1 = require("../constants");
|
|
18
|
+
const resolve_package_path_1 = require("@rigor789/resolve-package-path");
|
|
18
19
|
class PrepareController extends events_1.EventEmitter {
|
|
19
20
|
constructor($platformController, $hooksService, $fs, $logger, $options, $mobileHelper, $nodeModulesDependenciesBuilder, $platformsDataService, $pluginsService, $prepareNativePlatformService, $projectChangesService, $projectDataService, $bundlerCompilerService, $watchIgnoreListService, $analyticsService, $markingModeService, $projectConfigService, $projectService) {
|
|
20
21
|
super();
|
|
@@ -142,10 +143,15 @@ class PrepareController extends events_1.EventEmitter {
|
|
|
142
143
|
async startJSWatcherWithPrepare(platformData, projectData, prepareData) {
|
|
143
144
|
if (!this.watchersData[projectData.projectDir][platformData.platformNameLowerCase].hasWebpackCompilerProcess) {
|
|
144
145
|
const handler = (data) => {
|
|
146
|
+
var _a;
|
|
145
147
|
if (data.platform.toLowerCase() === platformData.platformNameLowerCase) {
|
|
146
148
|
if (this.isFileWatcherPaused())
|
|
147
149
|
return;
|
|
148
|
-
this.emitPrepareEvent({
|
|
150
|
+
this.emitPrepareEvent({
|
|
151
|
+
...data,
|
|
152
|
+
files: (_a = data.files) !== null && _a !== void 0 ? _a : [],
|
|
153
|
+
hasNativeChanges: false,
|
|
154
|
+
});
|
|
149
155
|
}
|
|
150
156
|
};
|
|
151
157
|
this.webpackCompilerHandler = handler.bind(this);
|
|
@@ -191,7 +197,7 @@ class PrepareController extends events_1.EventEmitter {
|
|
|
191
197
|
this.$logger.info(`Chokidar raised event ${event} for ${filePath}.`);
|
|
192
198
|
await this.writeRuntimePackageJson(projectData, platformData);
|
|
193
199
|
this.emitPrepareEvent({
|
|
194
|
-
files: [],
|
|
200
|
+
files: [filePath],
|
|
195
201
|
staleFiles: [],
|
|
196
202
|
hasOnlyHotUpdateFiles: false,
|
|
197
203
|
hmrData: null,
|
|
@@ -221,28 +227,63 @@ class PrepareController extends events_1.EventEmitter {
|
|
|
221
227
|
return patterns;
|
|
222
228
|
}
|
|
223
229
|
async writeRuntimePackageJson(projectData, platformData, prepareData = null) {
|
|
230
|
+
var _a, _b;
|
|
224
231
|
const configInfo = this.$projectConfigService.detectProjectConfigs(projectData.projectDir);
|
|
225
232
|
if (configInfo.usingNSConfig) {
|
|
226
233
|
return;
|
|
227
234
|
}
|
|
228
235
|
this.$logger.info("Updating runtime package.json with configuration values...");
|
|
229
|
-
const nsConfig = this.$projectConfigService.readConfig(projectData.projectDir);
|
|
236
|
+
const { hooks, ignoredNativeDependencies, webpackPackageName, webpackConfigPath, appResourcesPath, buildPath, appPath, ...nsConfig } = this.$projectConfigService.readConfig(projectData.projectDir);
|
|
237
|
+
const platform = platformData.platformNameLowerCase;
|
|
238
|
+
let installedRuntimePackageJSON;
|
|
239
|
+
let runtimePackageName;
|
|
240
|
+
if (platform === "ios") {
|
|
241
|
+
runtimePackageName = ((_a = projectData.nsConfig.ios) === null || _a === void 0 ? void 0 : _a.runtimePackageName) || constants_1.SCOPED_IOS_RUNTIME_NAME;
|
|
242
|
+
}
|
|
243
|
+
else if (platform === "android") {
|
|
244
|
+
runtimePackageName = ((_b = projectData.nsConfig.android) === null || _b === void 0 ? void 0 : _b.runtimePackageName) || constants_1.SCOPED_ANDROID_RUNTIME_NAME;
|
|
245
|
+
}
|
|
246
|
+
const installedRuntimePackageJSONPath = (0, resolve_package_path_1.resolvePackageJSONPath)(runtimePackageName, {
|
|
247
|
+
paths: [projectData.projectDir],
|
|
248
|
+
});
|
|
249
|
+
if (installedRuntimePackageJSONPath) {
|
|
250
|
+
installedRuntimePackageJSON = this.$fs.readJson(installedRuntimePackageJSONPath);
|
|
251
|
+
}
|
|
230
252
|
const packageData = {
|
|
231
253
|
..._.pick(projectData.packageJsonData, ["name"]),
|
|
232
254
|
...nsConfig,
|
|
233
255
|
main: "bundle",
|
|
256
|
+
...(installedRuntimePackageJSON ? {} : {})
|
|
234
257
|
};
|
|
235
|
-
if (
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
258
|
+
if (platform === "ios") {
|
|
259
|
+
if (installedRuntimePackageJSON) {
|
|
260
|
+
packageData.ios = packageData.ios || {};
|
|
261
|
+
packageData.ios.runtime = {
|
|
262
|
+
version: installedRuntimePackageJSON.version
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
if (packageData.ios &&
|
|
266
|
+
packageData.ios.discardUncaughtJsExceptions) {
|
|
267
|
+
packageData.discardUncaughtJsExceptions =
|
|
268
|
+
packageData.ios.discardUncaughtJsExceptions;
|
|
269
|
+
}
|
|
270
|
+
delete packageData.android;
|
|
240
271
|
}
|
|
241
|
-
if (
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
272
|
+
if (platform === "android") {
|
|
273
|
+
if (installedRuntimePackageJSON) {
|
|
274
|
+
packageData.android = packageData.android || {};
|
|
275
|
+
packageData.android.runtime = {
|
|
276
|
+
version: installedRuntimePackageJSON.version,
|
|
277
|
+
version_info: installedRuntimePackageJSON.version_info,
|
|
278
|
+
gradle: installedRuntimePackageJSON.gradle
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
if (packageData.android &&
|
|
282
|
+
packageData.android.discardUncaughtJsExceptions) {
|
|
283
|
+
packageData.discardUncaughtJsExceptions =
|
|
284
|
+
packageData.android.discardUncaughtJsExceptions;
|
|
285
|
+
}
|
|
286
|
+
delete packageData.ios;
|
|
246
287
|
}
|
|
247
288
|
let packagePath;
|
|
248
289
|
if (this.$mobileHelper.isApplePlatform(platformData.platformNameLowerCase)) {
|
|
@@ -14,6 +14,7 @@ const events_1 = require("events");
|
|
|
14
14
|
const util = require("util");
|
|
15
15
|
const _ = require("lodash");
|
|
16
16
|
const yok_1 = require("../common/yok");
|
|
17
|
+
const helpers_1 = require("../common/helpers");
|
|
17
18
|
class RunController extends events_1.EventEmitter {
|
|
18
19
|
constructor($analyticsService, $buildController, $debugController, $deviceInstallAppService, $devicesService, $errors, $injector, $hmrStatusService, $hooksService, $liveSyncServiceResolver, $liveSyncProcessDataService, $logger, $mobileHelper, $platformsDataService, $pluginsService, $prepareController, $prepareDataService, $prepareNativePlatformService, $projectChangesService, $projectDataService) {
|
|
19
20
|
super();
|
|
@@ -61,11 +62,12 @@ class RunController extends events_1.EventEmitter {
|
|
|
61
62
|
const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, data.platform, { ...liveSyncInfo, watch: !liveSyncInfo.skipWatcher });
|
|
62
63
|
const changesInfo = await this.$projectChangesService.checkForChanges(platformData, projectData, prepareData);
|
|
63
64
|
if (changesInfo.hasChanges) {
|
|
64
|
-
await this.syncChangedDataOnDevices(data, projectData, liveSyncInfo);
|
|
65
|
+
await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
else {
|
|
68
|
-
|
|
69
|
+
const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
|
|
70
|
+
await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
|
|
69
71
|
}
|
|
70
72
|
};
|
|
71
73
|
this.prepareReadyEventHandler = handler.bind(this);
|
|
@@ -276,26 +278,21 @@ class RunController extends events_1.EventEmitter {
|
|
|
276
278
|
};
|
|
277
279
|
const platformData = this.$platformsDataService.getPlatformData(device.deviceInfo.platform, projectData);
|
|
278
280
|
try {
|
|
279
|
-
let packageFilePath = null;
|
|
280
281
|
if (rebuiltInformation[platformData.platformNameLowerCase] &&
|
|
281
282
|
(this.$mobileHelper.isAndroidPlatform(platformData.platformNameLowerCase) ||
|
|
282
283
|
rebuiltInformation[platformData.platformNameLowerCase]
|
|
283
284
|
.isEmulator === device.isEmulator)) {
|
|
284
|
-
|
|
285
|
-
rebuiltInformation[platformData.platformNameLowerCase]
|
|
286
|
-
.packageFilePath;
|
|
287
|
-
await this.$deviceInstallAppService.installOnDevice(device, buildData, packageFilePath);
|
|
285
|
+
await this.$deviceInstallAppService.installOnDevice(device, buildData);
|
|
288
286
|
}
|
|
289
287
|
else {
|
|
290
288
|
const shouldBuild = prepareResultData.hasNativeChanges ||
|
|
291
289
|
buildData.nativePrepare.forceRebuildNativeApp ||
|
|
292
290
|
(await this.$buildController.shouldBuild(buildData));
|
|
293
291
|
if (shouldBuild) {
|
|
294
|
-
|
|
292
|
+
await deviceDescriptor.buildAction();
|
|
295
293
|
rebuiltInformation[platformData.platformNameLowerCase] = {
|
|
296
294
|
isEmulator: device.isEmulator,
|
|
297
295
|
platform: platformData.platformNameLowerCase,
|
|
298
|
-
packageFilePath,
|
|
299
296
|
};
|
|
300
297
|
}
|
|
301
298
|
else {
|
|
@@ -305,7 +302,7 @@ class RunController extends events_1.EventEmitter {
|
|
|
305
302
|
projectDir: projectData.projectDir,
|
|
306
303
|
});
|
|
307
304
|
}
|
|
308
|
-
await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData
|
|
305
|
+
await this.$deviceInstallAppService.installOnDeviceIfNeeded(device, buildData);
|
|
309
306
|
}
|
|
310
307
|
const platformLiveSyncService = this.$liveSyncServiceResolver.resolveLiveSyncService(platformData.platformNameLowerCase);
|
|
311
308
|
const { force, useHotModuleReload, skipWatcher } = liveSyncInfo;
|
|
@@ -343,7 +340,7 @@ class RunController extends events_1.EventEmitter {
|
|
|
343
340
|
};
|
|
344
341
|
await this.addActionToChain(projectData.projectDir, () => this.$devicesService.execute(deviceAction, (device) => _.some(deviceDescriptors, (deviceDescriptor) => deviceDescriptor.identifier === device.deviceInfo.identifier)));
|
|
345
342
|
}
|
|
346
|
-
async syncChangedDataOnDevices(data, projectData, liveSyncInfo) {
|
|
343
|
+
async syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo) {
|
|
347
344
|
const successfullySyncedMessageFormat = `Successfully synced application %s on device %s.`;
|
|
348
345
|
const rebuiltInformation = {};
|
|
349
346
|
const deviceAction = async (device) => {
|
|
@@ -392,8 +389,7 @@ class RunController extends events_1.EventEmitter {
|
|
|
392
389
|
packageFilePath: null,
|
|
393
390
|
};
|
|
394
391
|
}
|
|
395
|
-
await this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData
|
|
396
|
-
.packageFilePath);
|
|
392
|
+
await this.$deviceInstallAppService.installOnDevice(device, deviceDescriptor.buildData);
|
|
397
393
|
await platformLiveSyncService.syncAfterInstall(device, watchInfo);
|
|
398
394
|
await this.refreshApplication(projectData, {
|
|
399
395
|
deviceAppData,
|
|
@@ -509,4 +505,7 @@ __decorate([
|
|
|
509
505
|
__decorate([
|
|
510
506
|
(0, decorators_1.cache)()
|
|
511
507
|
], RunController.prototype, "attachDeviceLostHandler", null);
|
|
508
|
+
__decorate([
|
|
509
|
+
(0, helpers_1.hook)("syncChangedDataOnDevices")
|
|
510
|
+
], RunController.prototype, "syncChangedDataOnDevices", null);
|
|
512
511
|
yok_1.injector.register("runController", RunController);
|
|
@@ -123,7 +123,7 @@ class UpdateController extends update_controller_base_1.UpdateControllerBase {
|
|
|
123
123
|
async cleanUpProject() {
|
|
124
124
|
await this.$projectCleanupService.clean([
|
|
125
125
|
constants.HOOKS_DIR_NAME,
|
|
126
|
-
|
|
126
|
+
this.$projectDataService.getProjectData().getBuildRelativeDirectoryPath(),
|
|
127
127
|
constants.NODE_MODULES_FOLDER_NAME,
|
|
128
128
|
constants.PACKAGE_LOCK_JSON_FILE_NAME,
|
|
129
129
|
]);
|
|
@@ -135,7 +135,7 @@ UpdateController.updatableDependencies = [
|
|
|
135
135
|
packageName: "@nativescript/core",
|
|
136
136
|
},
|
|
137
137
|
{
|
|
138
|
-
packageName:
|
|
138
|
+
packageName: constants.WEBPACK_PLUGIN_NAME,
|
|
139
139
|
isDev: true,
|
|
140
140
|
},
|
|
141
141
|
{
|
package/lib/data/build-data.js
CHANGED
|
@@ -36,6 +36,8 @@ class AndroidBuildData extends BuildData {
|
|
|
36
36
|
this.keyStoreAliasPassword = data.keyStoreAliasPassword;
|
|
37
37
|
this.keyStorePassword = data.keyStorePassword;
|
|
38
38
|
this.androidBundle = data.androidBundle || data.aab;
|
|
39
|
+
this.buildFilterDevicesArch = !this.androidBundle && data.filterDevicesArch !== false;
|
|
40
|
+
this.gradleFlavor = data.gradleFlavor;
|
|
39
41
|
this.gradlePath = data.gradlePath;
|
|
40
42
|
this.gradleArgs = data.gradleArgs;
|
|
41
43
|
this.hostProjectPath = data.hostProjectPath;
|
package/lib/declarations.d.ts
CHANGED
|
@@ -585,7 +585,9 @@ interface IEmbedOptions {
|
|
|
585
585
|
|
|
586
586
|
interface IAndroidOptions extends IEmbedOptions {
|
|
587
587
|
gradlePath: string;
|
|
588
|
-
|
|
588
|
+
gradleFlavor: string;
|
|
589
|
+
gradleArgs: string[];
|
|
590
|
+
overrideRuntimeGradleFiles: boolean;
|
|
589
591
|
}
|
|
590
592
|
|
|
591
593
|
interface IIOSOptions extends IEmbedOptions {}
|
|
@@ -10,8 +10,9 @@ interface IAndroidBuildOptions {
|
|
|
10
10
|
pluginName: string;
|
|
11
11
|
aarOutputDir: string;
|
|
12
12
|
tempPluginDirPath: string;
|
|
13
|
+
gradleArgs?: string[];
|
|
13
14
|
gradlePath?: string;
|
|
14
|
-
|
|
15
|
+
aarSuffix?: string;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
interface IAndroidPluginBuildService {
|
|
@@ -48,5 +49,5 @@ interface IBuildAndroidPluginData extends Partial<IProjectDir> {
|
|
|
48
49
|
/**
|
|
49
50
|
* Optional custom Gradle arguments.
|
|
50
51
|
*/
|
|
51
|
-
gradleArgs?: string;
|
|
52
|
+
gradleArgs?: string[];
|
|
52
53
|
}
|
|
@@ -31,8 +31,10 @@ interface IAndroidBuildData
|
|
|
31
31
|
extends IBuildData,
|
|
32
32
|
IAndroidSigningData,
|
|
33
33
|
IHasAndroidBundle {
|
|
34
|
+
buildFilterDevicesArch?: boolean;
|
|
35
|
+
gradleArgs?: string[];
|
|
36
|
+
gradleFlavor?: string;
|
|
34
37
|
gradlePath?: string;
|
|
35
|
-
gradleArgs?: string;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
interface IAndroidSigningData {
|
|
@@ -62,7 +64,7 @@ interface IBuildArtifactsService {
|
|
|
62
64
|
platformData: IPlatformData,
|
|
63
65
|
buildOutputOptions: IBuildOutputOptions
|
|
64
66
|
): Promise<string>;
|
|
65
|
-
|
|
67
|
+
copyAppPackages(
|
|
66
68
|
targetPath: string,
|
|
67
69
|
platformData: IPlatformData,
|
|
68
70
|
buildOutputOptions: IBuildOutputOptions
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare module "@nativescript/hook";
|
|
@@ -125,6 +125,8 @@ export type BundlerType = "webpack" | "rspack" | "vite";
|
|
|
125
125
|
|
|
126
126
|
interface INsConfigIOS extends INsConfigPlaform {
|
|
127
127
|
discardUncaughtJsExceptions?: boolean;
|
|
128
|
+
runtimePackageName?: string
|
|
129
|
+
cocoapodUseBundleExec?: boolean
|
|
128
130
|
/**
|
|
129
131
|
* Swift Package Manager
|
|
130
132
|
* List packages to be included in the iOS build.
|
|
@@ -168,6 +170,14 @@ interface INsConfigAndroid extends INsConfigPlaform {
|
|
|
168
170
|
enableLineBreakpoints?: boolean;
|
|
169
171
|
|
|
170
172
|
enableMultithreadedJavascript?: boolean;
|
|
173
|
+
|
|
174
|
+
gradleVersion?: string;
|
|
175
|
+
|
|
176
|
+
gradleArgs?: string[];
|
|
177
|
+
|
|
178
|
+
plugins?:{ [k:string]: { aarSuffix?: string } }
|
|
179
|
+
|
|
180
|
+
runtimePackageName?: string
|
|
171
181
|
}
|
|
172
182
|
|
|
173
183
|
interface INsConfigHooks {
|
|
@@ -180,8 +190,10 @@ interface INsConfig {
|
|
|
180
190
|
main?: string;
|
|
181
191
|
appPath?: string;
|
|
182
192
|
appResourcesPath?: string;
|
|
193
|
+
buildPath?: string;
|
|
183
194
|
shared?: boolean;
|
|
184
195
|
overridePods?: string;
|
|
196
|
+
webpackPackageName?: string;
|
|
185
197
|
webpackConfigPath?: string;
|
|
186
198
|
bundlerConfigPath?: string;
|
|
187
199
|
bundler?: BundlerType;
|
|
@@ -191,6 +203,7 @@ interface INsConfig {
|
|
|
191
203
|
ignoredNativeDependencies?: string[];
|
|
192
204
|
hooks?: INsConfigHooks[];
|
|
193
205
|
projectName?: string;
|
|
206
|
+
corePackageName?: string;
|
|
194
207
|
}
|
|
195
208
|
|
|
196
209
|
interface IProjectData extends ICreateProjectData {
|
|
@@ -256,6 +269,7 @@ interface IProjectData extends ICreateProjectData {
|
|
|
256
269
|
getAppDirectoryRelativePath(): string;
|
|
257
270
|
getAppResourcesDirectoryPath(projectDir?: string): string;
|
|
258
271
|
getAppResourcesRelativeDirectoryPath(): string;
|
|
272
|
+
getBuildRelativeDirectoryPath(): string;
|
|
259
273
|
}
|
|
260
274
|
|
|
261
275
|
interface IProjectDataService {
|
package/lib/definitions/run.d.ts
CHANGED
|
@@ -31,13 +31,11 @@ declare global {
|
|
|
31
31
|
interface IDeviceInstallAppService {
|
|
32
32
|
installOnDevice(
|
|
33
33
|
device: Mobile.IDevice,
|
|
34
|
-
buildData: IBuildData
|
|
35
|
-
packageFile?: string
|
|
34
|
+
buildData: IBuildData
|
|
36
35
|
): Promise<void>;
|
|
37
36
|
installOnDeviceIfNeeded(
|
|
38
37
|
device: Mobile.IDevice,
|
|
39
|
-
buildData: IBuildData
|
|
40
|
-
packageFile?: string
|
|
38
|
+
buildData: IBuildData
|
|
41
39
|
): Promise<void>;
|
|
42
40
|
shouldInstall(
|
|
43
41
|
device: Mobile.IDevice,
|
|
@@ -36,6 +36,7 @@ class DeployCommandHelper {
|
|
|
36
36
|
const buildData = this.$buildDataService.getBuildData(this.$projectData.projectDir, d.deviceInfo.platform, {
|
|
37
37
|
...this.$options.argv,
|
|
38
38
|
outputPath,
|
|
39
|
+
buildFilterDevicesArch: false,
|
|
39
40
|
buildForDevice: !d.isEmulator,
|
|
40
41
|
skipWatcher: !this.$options.watch,
|
|
41
42
|
nativePrepare: {
|
package/lib/nativescript-cli.js
CHANGED
|
@@ -5,6 +5,34 @@ require("./bootstrap");
|
|
|
5
5
|
const shelljs = require("shelljs");
|
|
6
6
|
shelljs.config.silent = true;
|
|
7
7
|
shelljs.config.fatal = true;
|
|
8
|
+
if (process.platform === "win32") {
|
|
9
|
+
const realcp = shelljs.cp;
|
|
10
|
+
shelljs.cp = (...args) => {
|
|
11
|
+
if (args.length === 3) {
|
|
12
|
+
args[1] = replaceDashes(args[1]);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
args[0] = replaceDashes(args[0]);
|
|
16
|
+
}
|
|
17
|
+
if (args.length == 2) {
|
|
18
|
+
realcp(args[0], args[1]);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
realcp(args[0], args[1], args[2]);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
function replaceDashes(values) {
|
|
25
|
+
if (Array.isArray(values)) {
|
|
26
|
+
for (let i = 0; i < values.length; ++i) {
|
|
27
|
+
values[i] = replaceDashes(values[i]);
|
|
28
|
+
}
|
|
29
|
+
return values;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return values.replace(/\\/g, "/");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
8
36
|
const errors_1 = require("./common/errors");
|
|
9
37
|
const helpers_1 = require("./common/helpers");
|
|
10
38
|
const yok_1 = require("./common/yok");
|
package/lib/options.js
CHANGED
|
@@ -184,7 +184,7 @@ class Options {
|
|
|
184
184
|
default: { type: "boolean", hasSensitiveValue: false },
|
|
185
185
|
count: { type: "number", hasSensitiveValue: false },
|
|
186
186
|
analyticsLogFile: { type: "string", hasSensitiveValue: true },
|
|
187
|
-
disableAnalytics: { type: "boolean", hasSensitiveValue: false },
|
|
187
|
+
disableAnalytics: { type: "boolean", hasSensitiveValue: false, default: true },
|
|
188
188
|
cleanupLogFile: { type: "string", hasSensitiveValue: true },
|
|
189
189
|
hooks: {
|
|
190
190
|
type: "boolean",
|
|
@@ -196,8 +196,14 @@ class Options {
|
|
|
196
196
|
default: false,
|
|
197
197
|
hasSensitiveValue: false,
|
|
198
198
|
},
|
|
199
|
+
overrideRuntimeGradleFiles: { type: "boolean", hasSensitiveValue: false },
|
|
200
|
+
gradleFlavor: { type: "string", hasSensitiveValue: false },
|
|
199
201
|
gradlePath: { type: "string", hasSensitiveValue: false },
|
|
200
|
-
gradleArgs: {
|
|
202
|
+
gradleArgs: {
|
|
203
|
+
type: "string",
|
|
204
|
+
hasSensitiveValue: false,
|
|
205
|
+
array: true,
|
|
206
|
+
},
|
|
201
207
|
hostProjectPath: { type: "string", hasSensitiveValue: false },
|
|
202
208
|
hostProjectModuleName: {
|
|
203
209
|
type: "string",
|
|
@@ -205,6 +211,7 @@ class Options {
|
|
|
205
211
|
default: constants_1.APP_FOLDER_NAME,
|
|
206
212
|
},
|
|
207
213
|
aab: { type: "boolean", hasSensitiveValue: false },
|
|
214
|
+
filterDevicesArch: { type: "boolean", hasSensitiveValue: false },
|
|
208
215
|
performance: { type: "object", hasSensitiveValue: true },
|
|
209
216
|
appleApplicationSpecificPassword: {
|
|
210
217
|
type: "string",
|