Skip to content

Commit c916ae6

Browse files
committed
Merge pull request #15 from NativeScript/fatme/delete-project-directory
Delete project directory if project creation doesn't succeed
2 parents 6d0a921 + 583df35 commit c916ae6

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

lib/services/platform-service.ts

+17-6
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,27 @@ export class PlatformService implements IPlatformService {
9999
path.join(this.$projectData.platformsDir, platform)).wait();
100100
frameworkDir = path.join(frameworkDir, constants.PROJECT_FRAMEWORK_FOLDER_NAME);
101101

102-
platformProjectService.createProject(platformData.projectRoot, frameworkDir).wait();
102+
try {
103+
this.addPlatformCore(platformData, frameworkDir).wait();
104+
} catch(err) {
105+
this.$fs.deleteDirectory(platformPath).wait();
106+
throw err;
107+
}
103108

104-
// Need to remove unneeded node_modules folder
105-
this.$fs.deleteDirectory(path.join("../", frameworkDir)).wait();
109+
this.$logger.out("Project successfully created.");
106110

107-
platformProjectService.interpolateData(platformData.projectRoot);
108-
platformProjectService.afterCreateProject(platformData.projectRoot);
111+
}).future<void>()();
112+
}
109113

110-
this.$logger.out("Project successfully created.");
114+
private addPlatformCore(platformData: IPlatformData, frameworkDir: string): IFuture<void> {
115+
return (() => {
116+
platformData.platformProjectService.createProject(platformData.projectRoot, frameworkDir).wait();
117+
118+
// Need to remove unneeded node_modules folder
119+
this.$fs.deleteDirectory(path.join("../", frameworkDir)).wait();
111120

121+
platformData.platformProjectService.interpolateData(platformData.projectRoot);
122+
platformData.platformProjectService.afterCreateProject(platformData.projectRoot);
112123
}).future<void>()();
113124
}
114125

lib/services/project-service.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,10 @@ export class ProjectService implements IProjectService {
5454

5555
public createProject(projectName: string, projectId: string): IFuture<void> {
5656
return(() => {
57-
var projectDir = path.resolve(options.path || ".");
58-
5957
projectName = projectName || constants.DEFAULT_PROJECT_NAME;
6058
projectId = options.appid || this.$projectHelper.generateDefaultAppId(projectName);
6159

62-
projectDir = path.join(projectDir, projectName);
60+
var projectDir = path.join(path.resolve(options.path || "."), projectName);
6361
this.$fs.createDirectory(projectDir).wait();
6462

6563
var customAppPath = this.getCustomAppPath();
@@ -99,9 +97,15 @@ export class ProjectService implements IProjectService {
9997
appPath = defaultTemplatePath;
10098
}
10199

102-
this.createProjectCore(projectDir, appPath, projectId, false).wait();
100+
try {
101+
this.createProjectCore(projectDir, appPath, projectId, false).wait();
102+
} catch(err) {
103+
this.$fs.deleteDirectory(projectDir).wait();
104+
throw err;
105+
}
103106

104107
this.$logger.out("Project %s was successfully created", projectName);
108+
105109
}).future<void>()();
106110
}
107111

0 commit comments

Comments
 (0)