Skip to content

Commit 2e4c9b5

Browse files
committed
Merge pull request #1405 from NativeScript/progress
Add spinner to long running operations
2 parents d6d17c4 + f80ecb6 commit 2e4c9b5

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

lib/services/doctor-service.ts

+8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import {EOL} from "os";
44
import * as semver from "semver";
55
import * as path from "path";
6+
let clui = require("clui");
67

78
class DoctorService implements IDoctorService {
89
private static MIN_SUPPORTED_POD_VERSION = "0.38.2";
@@ -105,14 +106,19 @@ class DoctorService implements IDoctorService {
105106
temp.track();
106107
let projDir = temp.mkdirSync("nativescript-check-cocoapods");
107108

109+
let spinner = new clui.Spinner("Installing iOS runtime.");
108110
try {
111+
spinner.start();
109112
this.$npm.install("tns-ios", projDir).wait();
113+
spinner.stop();
110114
let iosDir = path.join(projDir, "node_modules", "tns-ios", "framework");
111115
this.$fs.writeFile(
112116
path.join(iosDir, "Podfile"),
113117
"pod 'AFNetworking', '~> 1.0'\n"
114118
).wait();
115119

120+
spinner.update("Verifying CocoaPods. This may take some time, please be patient.");
121+
spinner.start();
116122
let future = this.$childProcess.spawnFromEvent(
117123
this.$config.USE_POD_SANDBOX ? "sandbox-pod": "pod",
118124
["install"],
@@ -126,6 +132,8 @@ class DoctorService implements IDoctorService {
126132
return !(this.$fs.exists(path.join(iosDir, "__PROJECT_NAME__.xcworkspace")).wait());
127133
} catch(err) {
128134
return true;
135+
} finally {
136+
spinner.stop();
129137
}
130138
}
131139
}

lib/services/platform-service.ts

+5
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import * as semver from "semver";
99
import * as minimatch from "minimatch";
1010
import Future = require("fibers/future");
1111
import {EOL} from "os";
12+
let clui = require("clui");
1213

1314
export class PlatformService implements IPlatformService {
1415
private static TNS_MODULES_FOLDER_NAME = "tns_modules";
@@ -85,7 +86,9 @@ export class PlatformService implements IPlatformService {
8586
npmOptions["version"] = version;
8687
}
8788

89+
let spinner = new clui.Spinner("Installing " + packageToInstall);
8890
try {
91+
spinner.start();
8992
let downloadedPackagePath = this.$npmInstallationManager.install(packageToInstall, npmOptions).wait();
9093
let frameworkDir = path.join(downloadedPackagePath, constants.PROJECT_FRAMEWORK_FOLDER_NAME);
9194
frameworkDir = path.resolve(frameworkDir);
@@ -94,6 +97,8 @@ export class PlatformService implements IPlatformService {
9497
} catch(err) {
9598
this.$fs.deleteDirectory(platformPath).wait();
9699
throw err;
100+
} finally {
101+
spinner.stop();
97102
}
98103

99104
this.$logger.out("Project successfully created.");

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
"byline": "4.2.1",
3434
"chalk": "1.1.0",
3535
"cli-table": "https://github.com/telerik/cli-table/tarball/v0.3.1.1",
36+
"clui": "0.3.1",
3637
"colors": "1.1.2",
3738
"esprima": "2.7.0",
3839
"ffi": "https://github.com/icenium/node-ffi/tarball/v2.0.0.1",

0 commit comments

Comments
 (0)