Skip to content

Commit 5749cac

Browse files
Merge pull request #2347 from NativeScript/vladimirov/sync-api
Use sync api of fs
2 parents 8fe2f37 + 8856e4c commit 5749cac

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+1401
-1417
lines changed

lib/android-tools-info.ts

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
4242
this.showWarningsAsErrors = options.showWarningsAsErrors;
4343
}
4444
if (!this.pathToAndroidExecutable) {
45-
if (this.validateAndroidHomeEnvVariable(this.androidHome).wait()) {
45+
if (this.validateAndroidHomeEnvVariable(this.androidHome)) {
4646
let androidPath = path.join(this.androidHome, "tools", this.androidExecutableName);
4747
if (!this.trySetAndroidPath(androidPath).wait() && !this.trySetAndroidPath(this.androidExecutableName).wait()) {
4848
this.printMessage(`Unable to find "${this.androidExecutableName}" executable file. Make sure you have set ANDROID_HOME environment variable correctly.`);
@@ -100,7 +100,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
100100
let detectedErrors = false;
101101
this.showWarningsAsErrors = options && options.showWarningsAsErrors;
102102
let toolsInfoData = this.getToolsInfo().wait();
103-
let isAndroidHomeValid = this.validateAndroidHomeEnvVariable(toolsInfoData.androidHomeEnvVar).wait();
103+
let isAndroidHomeValid = this.validateAndroidHomeEnvVariable(toolsInfoData.androidHomeEnvVar);
104104
if (!toolsInfoData.compileSdkVersion) {
105105
this.printMessage(`Cannot find a compatible Android SDK for compilation. To be able to build for Android, install Android SDK ${AndroidToolsInfo.MIN_REQUIRED_COMPILE_TARGET} or later.`,
106106
"Run `$ android` to manage your Android SDK versions.");
@@ -258,32 +258,30 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
258258
}).future<number>()();
259259
}
260260

261-
private getMatchingDir(pathToDir: string, versionRange: string): IFuture<string> {
262-
return ((): string => {
263-
let selectedVersion: string;
264-
if (this.$fs.exists(pathToDir).wait()) {
265-
let subDirs = this.$fs.readDirectory(pathToDir).wait();
266-
this.$logger.trace(`Directories found in ${pathToDir} are ${subDirs.join(", ")}`);
267-
268-
let subDirsVersions = subDirs
269-
.map(dirName => {
270-
let dirNameGroups = dirName.match(AndroidToolsInfo.VERSION_REGEX);
271-
if (dirNameGroups) {
272-
return dirNameGroups[1];
273-
}
261+
private getMatchingDir(pathToDir: string, versionRange: string): string {
262+
let selectedVersion: string;
263+
if (this.$fs.exists(pathToDir)) {
264+
let subDirs = this.$fs.readDirectory(pathToDir);
265+
this.$logger.trace(`Directories found in ${pathToDir} are ${subDirs.join(", ")}`);
266+
267+
let subDirsVersions = subDirs
268+
.map(dirName => {
269+
let dirNameGroups = dirName.match(AndroidToolsInfo.VERSION_REGEX);
270+
if (dirNameGroups) {
271+
return dirNameGroups[1];
272+
}
274273

275-
return null;
276-
})
277-
.filter(dirName => !!dirName);
278-
this.$logger.trace(`Versions found in ${pathToDir} are ${subDirsVersions.join(", ")}`);
279-
let version = semver.maxSatisfying(subDirsVersions, versionRange);
280-
if (version) {
281-
selectedVersion = _.find(subDirs, dir => dir.indexOf(version) !== -1);
282-
}
274+
return null;
275+
})
276+
.filter(dirName => !!dirName);
277+
this.$logger.trace(`Versions found in ${pathToDir} are ${subDirsVersions.join(", ")}`);
278+
let version = semver.maxSatisfying(subDirsVersions, versionRange);
279+
if (version) {
280+
selectedVersion = _.find(subDirs, dir => dir.indexOf(version) !== -1);
283281
}
284-
this.$logger.trace("Selected version is: ", selectedVersion);
285-
return selectedVersion;
286-
}).future<string>()();
282+
}
283+
this.$logger.trace("Selected version is: ", selectedVersion);
284+
return selectedVersion;
287285
}
288286

289287
private getBuildToolsRange(): string {
@@ -296,7 +294,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
296294
if (this.androidHome) {
297295
let pathToBuildTools = path.join(this.androidHome, "build-tools");
298296
let buildToolsRange = this.getBuildToolsRange();
299-
buildToolsVersion = this.getMatchingDir(pathToBuildTools, buildToolsRange).wait();
297+
buildToolsVersion = this.getMatchingDir(pathToBuildTools, buildToolsRange);
300298
}
301299

302300
return buildToolsVersion;
@@ -321,7 +319,7 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
321319
let requiredAppCompatRange = this.getAppCompatRange().wait();
322320
if (this.androidHome && requiredAppCompatRange) {
323321
let pathToAppCompat = path.join(this.androidHome, "extras", "android", "m2repository", "com", "android", "support", "appcompat-v7");
324-
selectedAppCompatVersion = this.getMatchingDir(pathToAppCompat, requiredAppCompatRange).wait();
322+
selectedAppCompatVersion = this.getMatchingDir(pathToAppCompat, requiredAppCompatRange);
325323
}
326324

327325
this.$logger.trace(`Selected AppCompat version is: ${selectedAppCompatVersion}`);
@@ -366,25 +364,23 @@ export class AndroidToolsInfo implements IAndroidToolsInfo {
366364
}
367365

368366
private _cachedAndroidHomeValidationResult: boolean = null;
369-
private validateAndroidHomeEnvVariable(androidHomeEnvVar: string): IFuture<boolean> {
370-
return ((): boolean => {
371-
if (this._cachedAndroidHomeValidationResult === null) {
372-
this._cachedAndroidHomeValidationResult = true;
373-
let expectedDirectoriesInAndroidHome = ["build-tools", "tools", "platform-tools", "extras"];
374-
if (!androidHomeEnvVar || !this.$fs.exists(androidHomeEnvVar).wait()) {
375-
this.printMessage("The ANDROID_HOME environment variable is not set or it points to a non-existent directory. You will not be able to perform any build-related operations for Android.",
376-
"To be able to perform Android build-related operations, set the `ANDROID_HOME` variable to point to the root of your Android SDK installation directory.");
377-
this._cachedAndroidHomeValidationResult = false;
378-
} else if (!_.some(expectedDirectoriesInAndroidHome.map(dir => this.$fs.exists(path.join(androidHomeEnvVar, dir)).wait()))) {
379-
this.printMessage("The ANDROID_HOME environment variable points to incorrect directory. You will not be able to perform any build-related operations for Android.",
380-
"To be able to perform Android build-related operations, set the `ANDROID_HOME` variable to point to the root of your Android SDK installation directory, " +
381-
"where you will find `tools` and `platform-tools` directories.");
382-
this._cachedAndroidHomeValidationResult = false;
383-
}
367+
private validateAndroidHomeEnvVariable(androidHomeEnvVar: string): boolean {
368+
if (this._cachedAndroidHomeValidationResult === null) {
369+
this._cachedAndroidHomeValidationResult = true;
370+
let expectedDirectoriesInAndroidHome = ["build-tools", "tools", "platform-tools", "extras"];
371+
if (!androidHomeEnvVar || !this.$fs.exists(androidHomeEnvVar)) {
372+
this.printMessage("The ANDROID_HOME environment variable is not set or it points to a non-existent directory. You will not be able to perform any build-related operations for Android.",
373+
"To be able to perform Android build-related operations, set the `ANDROID_HOME` variable to point to the root of your Android SDK installation directory.");
374+
this._cachedAndroidHomeValidationResult = false;
375+
} else if (!_.some(expectedDirectoriesInAndroidHome.map(dir => this.$fs.exists(path.join(androidHomeEnvVar, dir))))) {
376+
this.printMessage("The ANDROID_HOME environment variable points to incorrect directory. You will not be able to perform any build-related operations for Android.",
377+
"To be able to perform Android build-related operations, set the `ANDROID_HOME` variable to point to the root of your Android SDK installation directory, " +
378+
"where you will find `tools` and `platform-tools` directories.");
379+
this._cachedAndroidHomeValidationResult = false;
384380
}
381+
}
385382

386-
return this._cachedAndroidHomeValidationResult;
387-
}).future<boolean>()();
383+
return this._cachedAndroidHomeValidationResult;
388384
}
389385
}
390386
$injector.register("androidToolsInfo", AndroidToolsInfo);

lib/commands/build.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export class BuildCommandBase {
77
let platform = args[0].toLowerCase();
88
this.$platformService.buildPlatform(platform, null, true).wait();
99
if(this.$options.copyTo) {
10-
this.$platformService.copyLastOutput(platform, this.$options.copyTo, {isForDevice: this.$options.forDevice}).wait();
10+
this.$platformService.copyLastOutput(platform, this.$options.copyTo, {isForDevice: this.$options.forDevice});
1111
}
1212
}).future<void>()();
1313
}

lib/commands/install.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export class InstallCommand implements ICommand {
2828
this.$projectDataService.initialize(this.$projectData.projectDir);
2929
_.each(this.$platformsData.platformsNames, platform => {
3030
let platformData = this.$platformsData.getPlatformData(platform);
31-
let frameworkPackageData = this.$projectDataService.getValue(platformData.frameworkPackageName).wait();
31+
let frameworkPackageData = this.$projectDataService.getValue(platformData.frameworkPackageName);
3232
if (frameworkPackageData && frameworkPackageData.version) {
3333
try {
3434
this.$platformService.addPlatforms([`${platform}@${frameworkPackageData.version}`]).wait();
@@ -49,7 +49,7 @@ export class InstallCommand implements ICommand {
4949
let projectDir = this.$projectData.projectDir;
5050

5151
let devPrefix = 'nativescript-dev-';
52-
if (!this.$fs.exists(moduleName).wait() && moduleName.indexOf(devPrefix) !== 0) {
52+
if (!this.$fs.exists(moduleName) && moduleName.indexOf(devPrefix) !== 0) {
5353
moduleName = devPrefix + moduleName;
5454
}
5555

lib/commands/list-platforms.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ export class ListPlatformsCommand implements ICommand {
66

77
execute(args: string[]): IFuture<void> {
88
return (() => {
9-
let installedPlatforms = this.$platformService.getInstalledPlatforms().wait();
9+
let installedPlatforms = this.$platformService.getInstalledPlatforms();
1010

1111
if(installedPlatforms.length > 0) {
12-
let preparedPlatforms = this.$platformService.getPreparedPlatforms().wait();
12+
let preparedPlatforms = this.$platformService.getPreparedPlatforms();
1313
if(preparedPlatforms.length > 0) {
1414
this.$logger.out("The project is prepared for: ", helpers.formatListOfNames(preparedPlatforms, "and"));
1515
} else {
1616
this.$logger.out("The project is not prepared for any platform");
1717
}
1818
this.$logger.out("Installed platforms: ", helpers.formatListOfNames(installedPlatforms, "and"));
1919
} else {
20-
let formattedPlatformsList = helpers.formatListOfNames(this.$platformService.getAvailablePlatforms().wait(), "and");
20+
let formattedPlatformsList = helpers.formatListOfNames(this.$platformService.getAvailablePlatforms(), "and");
2121
this.$logger.out("Available platforms for this OS: ", formattedPlatformsList);
2222
this.$logger.out("No installed platforms found. Use $ tns platform add");
2323
}

lib/commands/platform-clean.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export class CleanCommand implements ICommand {
44

55
public execute(args: string[]): IFuture<void> {
66
return (() => {
7-
this.$platformService.removePlatforms(args).wait();
7+
this.$platformService.removePlatforms(args);
88
this.$platformService.addPlatforms(args).wait();
99
}).future<void>()();
1010
}

lib/commands/plugin/list-plugins.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export class ListPluginsCommand implements ICommand {
88

99
public execute(args: string[]): IFuture<void> {
1010
return (() => {
11-
let installedPlugins: IPackageJsonDepedenciesResult = this.$pluginsService.getDependenciesFromPackageJson().wait();
11+
let installedPlugins: IPackageJsonDepedenciesResult = this.$pluginsService.getDependenciesFromPackageJson();
1212

1313
let headers: string[] = ["Plugin", "Version"];
1414
let dependenciesData: string[][] = this.createTableCells(installedPlugins.dependencies);

lib/commands/remove-platform.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export class RemovePlatformCommand implements ICommand {
44

55
execute(args: string[]): IFuture<void> {
66
return (() => {
7-
this.$platformService.removePlatforms(args).wait();
7+
this.$platformService.removePlatforms(args);
88
}).future<void>()();
99
}
1010

lib/commands/test-init.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,26 +41,26 @@ class TestInitCommand implements ICommand {
4141

4242
let testsDir = path.join(projectDir, 'app/tests');
4343
let shouldCreateSampleTests = true;
44-
if (this.$fs.exists(testsDir).wait()) {
44+
if (this.$fs.exists(testsDir)) {
4545
this.$logger.info('app/tests/ directory already exists, will not create an example test project.');
4646
shouldCreateSampleTests = false;
4747
}
4848

49-
this.$fs.ensureDirectoryExists(testsDir).wait();
49+
this.$fs.ensureDirectoryExists(testsDir);
5050

51-
let karmaConfTemplate = this.$resources.readText('test/karma.conf.js').wait();
51+
let karmaConfTemplate = this.$resources.readText('test/karma.conf.js');
5252
let karmaConf = _.template(karmaConfTemplate)({
5353
frameworks: [frameworkToInstall].concat(dependencies)
5454
.map(fw => `'${fw}'`)
5555
.join(', ')
5656
});
5757

58-
this.$fs.writeFile(path.join(projectDir, 'karma.conf.js'), karmaConf).wait();
58+
this.$fs.writeFile(path.join(projectDir, 'karma.conf.js'), karmaConf);
5959

6060
let exampleFilePath = this.$resources.resolvePath(`test/example.${frameworkToInstall}.js`);
6161

62-
if (shouldCreateSampleTests && this.$fs.exists(exampleFilePath).wait()) {
63-
this.$fs.copyFile(exampleFilePath, path.join(testsDir, 'example.js')).wait();
62+
if (shouldCreateSampleTests && this.$fs.exists(exampleFilePath)) {
63+
this.$fs.copyFile(exampleFilePath, path.join(testsDir, 'example.js'));
6464
this.$logger.info('\nExample test file created in app/tests/'.yellow);
6565
} else {
6666
this.$logger.info('\nPlace your test files under app/tests/'.yellow);

lib/commands/update.ts

Lines changed: 31 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export class UpdateCommand implements ICommand {
3030
}
3131

3232
try {
33-
this.executeCore(args, folders);
33+
this.executeCore(args, folders).wait();
3434
} catch (error) {
3535
shelljs.cp("-f", path.join(tmpDir, "package.json"), this.$projectData.projectDir);
3636
for (let folder of folders) {
@@ -51,40 +51,42 @@ export class UpdateCommand implements ICommand {
5151
}).future<boolean>()();
5252
}
5353

54-
private executeCore(args: string[], folders: string[]) {
55-
let platforms = this.$platformService.getInstalledPlatforms().wait();
56-
let availablePlatforms = this.$platformService.getAvailablePlatforms().wait();
57-
let packagePlatforms: string[] = [];
54+
private executeCore(args: string[], folders: string[]): IFuture<void> {
55+
return (() => {
56+
let platforms = this.$platformService.getInstalledPlatforms();
57+
let availablePlatforms = this.$platformService.getAvailablePlatforms();
58+
let packagePlatforms: string[] = [];
5859

59-
this.$projectDataService.initialize(this.$projectData.projectDir);
60-
for (let platform of availablePlatforms) {
61-
let platformData = this.$platformsData.getPlatformData(platform);
62-
let platformVersion = this.$projectDataService.getValue(platformData.frameworkPackageName).wait();
63-
if (platformVersion) {
64-
packagePlatforms.push(platform);
65-
this.$projectDataService.removeProperty(platformData.frameworkPackageName).wait();
60+
this.$projectDataService.initialize(this.$projectData.projectDir);
61+
for (let platform of availablePlatforms) {
62+
let platformData = this.$platformsData.getPlatformData(platform);
63+
let platformVersion = this.$projectDataService.getValue(platformData.frameworkPackageName);
64+
if (platformVersion) {
65+
packagePlatforms.push(platform);
66+
this.$projectDataService.removeProperty(platformData.frameworkPackageName);
67+
}
6668
}
67-
}
6869

69-
this.$platformService.removePlatforms(platforms).wait();
70-
this.$pluginsService.remove("tns-core-modules").wait();
71-
this.$pluginsService.remove("tns-core-modules-widgets").wait();
70+
this.$platformService.removePlatforms(platforms);
71+
this.$pluginsService.remove("tns-core-modules").wait();
72+
this.$pluginsService.remove("tns-core-modules-widgets").wait();
7273

73-
for (let folder of folders) {
74-
shelljs.rm("-fr", folder);
75-
}
74+
for (let folder of folders) {
75+
shelljs.rm("-fr", folder);
76+
}
7677

77-
platforms = platforms.concat(packagePlatforms);
78-
if (args.length === 1) {
79-
for (let platform of platforms) {
80-
this.$platformService.addPlatforms([ platform+"@"+args[0] ]).wait();
78+
platforms = platforms.concat(packagePlatforms);
79+
if (args.length === 1) {
80+
for (let platform of platforms) {
81+
this.$platformService.addPlatforms([ platform+"@"+args[0] ]).wait();
82+
}
83+
this.$pluginsService.add("tns-core-modules@" + args[0]).wait();
84+
} else {
85+
this.$platformService.addPlatforms(platforms).wait();
86+
this.$pluginsService.add("tns-core-modules").wait();
8187
}
82-
this.$pluginsService.add("tns-core-modules@" + args[0]).wait();
83-
} else {
84-
this.$platformService.addPlatforms(platforms).wait();
85-
this.$pluginsService.add("tns-core-modules").wait();
86-
}
87-
this.$pluginsService.ensureAllDependenciesAreInstalled().wait();
88+
this.$pluginsService.ensureAllDependenciesAreInstalled().wait();
89+
}).future<void>()();
8890
}
8991

9092
allowedParameters: ICommandParameter[] = [];

lib/common

Submodule common updated 50 files

0 commit comments

Comments
 (0)