17
17
under the License.
18
18
*/
19
19
20
- const path = require ( 'path' ) ;
21
- const fs = require ( 'fs-extra ' ) ;
20
+ const path = require ( 'node: path' ) ;
21
+ const fs = require ( 'node:fs ' ) ;
22
22
const xmlescape = require ( 'xml-escape' ) ;
23
23
const { CordovaError, events } = require ( 'cordova-common' ) ;
24
24
const pkg = require ( '../package' ) ;
@@ -55,7 +55,7 @@ exports.createProject = async (project_path, package_name, project_name, opts) =
55
55
id : package_name
56
56
} ,
57
57
options : {
58
- templatePath : opts . customTemplate || path . join ( ROOT , 'templates/ project' ) ,
58
+ templatePath : opts . customTemplate || path . join ( ROOT , 'templates' , ' project') ,
59
59
linkLib : ! ! opts . link
60
60
}
61
61
} ) . create ( ) ;
@@ -77,18 +77,18 @@ class ProjectCreator {
77
77
}
78
78
79
79
provideProjectTemplate ( ) {
80
- fs . copySync ( this . options . templatePath , this . project . path ) ;
80
+ fs . cpSync ( this . options . templatePath , this . project . path , { recursive : true } ) ;
81
81
82
82
// TODO: why two .gitignores?
83
83
const r = this . projectPath ( '__PROJECT_NAME__' ) ;
84
- fs . moveSync ( path . join ( r , 'gitignore' ) , path . join ( r , '.gitignore' ) ) ;
85
- fs . copySync ( path . join ( r , '.gitignore' ) , this . projectPath ( '.gitignore' ) ) ;
84
+ fs . renameSync ( path . join ( r , 'gitignore' ) , path . join ( r , '.gitignore' ) ) ;
85
+ fs . cpSync ( path . join ( r , '.gitignore' ) , this . projectPath ( '.gitignore' ) ) ;
86
86
}
87
87
88
88
provideCordovaJs ( ) {
89
- fs . copySync (
90
- this . projectPath ( 'www/ cordova.js' ) ,
91
- this . projectPath ( 'platform_www/ cordova.js' )
89
+ fs . cpSync (
90
+ this . projectPath ( 'www' , ' cordova.js') ,
91
+ this . projectPath ( 'platform_www' , ' cordova.js')
92
92
) ;
93
93
}
94
94
@@ -98,9 +98,9 @@ class ProjectCreator {
98
98
}
99
99
100
100
provideBuildScripts ( ) {
101
- const srcScriptsDir = path . join ( ROOT , 'templates/ cordova' ) ;
101
+ const srcScriptsDir = path . join ( ROOT , 'templates' , ' cordova') ;
102
102
const destScriptsDir = this . projectPath ( 'cordova' ) ;
103
- fs . copySync ( srcScriptsDir , destScriptsDir ) ;
103
+ fs . cpSync ( srcScriptsDir , destScriptsDir , { recursive : true } ) ;
104
104
}
105
105
106
106
expandTokens ( ) {
@@ -118,7 +118,7 @@ class ProjectCreator {
118
118
// like it should).
119
119
fs . symlinkSync ( cordovaLibPathSrc , cordovaLibPathDest ) ;
120
120
} else {
121
- fs . copySync ( cordovaLibPathSrc , cordovaLibPathDest ) ;
121
+ fs . cpSync ( cordovaLibPathSrc , cordovaLibPathDest , { recursive : true } ) ;
122
122
}
123
123
}
124
124
@@ -137,7 +137,7 @@ class ProjectCreator {
137
137
}
138
138
139
139
// Replace magic line in project.pbxproj
140
- const pbxprojPath = this . projectPath ( '__PROJECT_NAME__.xcodeproj/ project.pbxproj' ) ;
140
+ const pbxprojPath = this . projectPath ( '__PROJECT_NAME__.xcodeproj' , ' project.pbxproj') ;
141
141
transformFileContents ( pbxprojPath , contents => {
142
142
const regex = / ( .+ C o r d o v a L i b .x c o d e p r o j .+ P B X F i l e R e f e r e n c e .+ w r a p p e r .p b - p r o j e c t .+ ) ( p a t h = .+ ?; ) ( .* ) ( s o u r c e T r e e .+ ; ) ( .+ ) / ;
143
143
const line = contents . split ( / \r ? \n / )
@@ -162,47 +162,47 @@ class ProjectCreator {
162
162
expandTokensInFileContents ( ) {
163
163
// Expand __PROJECT_ID__ token in file contents
164
164
transformFileContents (
165
- this . projectPath ( '__PROJECT_NAME__.xcodeproj/ project.pbxproj' ) ,
165
+ this . projectPath ( '__PROJECT_NAME__.xcodeproj' , ' project.pbxproj') ,
166
166
contents => contents . replace ( / _ _ P R O J E C T _ I D _ _ / g, this . project . id )
167
167
) ;
168
168
169
169
// Expand __PROJECT_NAME__ token in file contents
170
170
for ( const p of [
171
- 'cordova/ build-debug.xcconfig' ,
172
- 'cordova/ build-release.xcconfig' ,
173
- '__PROJECT_NAME__.xcworkspace/ contents.xcworkspacedata' ,
174
- '__PROJECT_NAME__.xcworkspace/ xcshareddata/ xcschemes/ __PROJECT_NAME__.xcscheme' ,
175
- '__PROJECT_NAME__.xcodeproj/ project.pbxproj' ,
176
- '__PROJECT_NAME__/ AppDelegate.h' ,
177
- '__PROJECT_NAME__/ AppDelegate.m' ,
178
- '__PROJECT_NAME__/ MainViewController.h' ,
179
- '__PROJECT_NAME__/ MainViewController.m' ,
180
- '__PROJECT_NAME__/ main.m' ,
181
- '__PROJECT_NAME__/ __PROJECT_NAME__-Info.plist' ,
182
- '__PROJECT_NAME__/ __PROJECT_NAME__-Prefix.pch'
171
+ [ 'cordova' , ' build-debug.xcconfig'] ,
172
+ [ 'cordova' , ' build-release.xcconfig'] ,
173
+ [ '__PROJECT_NAME__.xcworkspace' , ' contents.xcworkspacedata'] ,
174
+ [ '__PROJECT_NAME__.xcworkspace' , ' xcshareddata' , ' xcschemes' , ' __PROJECT_NAME__.xcscheme'] ,
175
+ [ '__PROJECT_NAME__.xcodeproj' , ' project.pbxproj'] ,
176
+ [ '__PROJECT_NAME__' , ' AppDelegate.h'] ,
177
+ [ '__PROJECT_NAME__' , ' AppDelegate.m'] ,
178
+ [ '__PROJECT_NAME__' , ' MainViewController.h'] ,
179
+ [ '__PROJECT_NAME__' , ' MainViewController.m'] ,
180
+ [ '__PROJECT_NAME__' , ' main.m'] ,
181
+ [ '__PROJECT_NAME__' , ' __PROJECT_NAME__-Info.plist'] ,
182
+ [ '__PROJECT_NAME__' , ' __PROJECT_NAME__-Prefix.pch']
183
183
] ) {
184
- this . expandProjectNameInFileContents ( this . projectPath ( p ) ) ;
184
+ this . expandProjectNameInFileContents ( this . projectPath ( ... p ) ) ;
185
185
}
186
186
}
187
187
188
188
expandTokensInFileNames ( ) {
189
189
// Expand __PROJECT_NAME__ token in file & folder names
190
190
for ( const p of [
191
- '__PROJECT_NAME__.xcworkspace/ xcshareddata/ xcschemes/ __PROJECT_NAME__.xcscheme' ,
192
- '__PROJECT_NAME__.xcworkspace' ,
193
- '__PROJECT_NAME__.xcodeproj' ,
194
- '__PROJECT_NAME__/ __PROJECT_NAME__-Info.plist' ,
195
- '__PROJECT_NAME__/ __PROJECT_NAME__-Prefix.pch' ,
196
- '__PROJECT_NAME__'
191
+ [ '__PROJECT_NAME__.xcworkspace' , ' xcshareddata' , ' xcschemes' , ' __PROJECT_NAME__.xcscheme'] ,
192
+ [ '__PROJECT_NAME__.xcworkspace' ] ,
193
+ [ '__PROJECT_NAME__.xcodeproj' ] ,
194
+ [ '__PROJECT_NAME__' , ' __PROJECT_NAME__-Info.plist'] ,
195
+ [ '__PROJECT_NAME__' , ' __PROJECT_NAME__-Prefix.pch'] ,
196
+ [ '__PROJECT_NAME__' ]
197
197
] ) {
198
- this . expandProjectNameInBaseName ( this . projectPath ( p ) ) ;
198
+ this . expandProjectNameInBaseName ( this . projectPath ( ... p ) ) ;
199
199
}
200
200
}
201
201
202
202
expandProjectNameInBaseName ( f ) {
203
203
const { dir, base } = path . parse ( f ) ;
204
204
const newBase = base . replace ( '__PROJECT_NAME__' , this . project . name ) ;
205
- return fs . moveSync ( f , path . join ( dir , newBase ) ) ;
205
+ return fs . renameSync ( f , path . join ( dir , newBase ) ) ;
206
206
}
207
207
208
208
expandProjectNameInFileContents ( f ) {
@@ -217,8 +217,8 @@ class ProjectCreator {
217
217
) ;
218
218
}
219
219
220
- projectPath ( projectRelativePath ) {
221
- return path . join ( this . project . path , projectRelativePath ) ;
220
+ projectPath ( ... projectRelativePaths ) {
221
+ return path . join ( this . project . path , ... projectRelativePaths ) ;
222
222
}
223
223
}
224
224
0 commit comments