@@ -5,50 +5,59 @@ import { addElectron } from '../electron/add';
55import { addIOS , addIOSChecks } from '../ios/add' ;
66import { editProjectSettingsAndroid } from '../android/common' ;
77import { editProjectSettingsIOS } from '../ios/common' ;
8- import { check , checkAppConfig , checkPackage , checkWebDir , log , logError , logFatal , logInfo , runTask , writePrettyJSON } from '../common' ;
8+ import { check , checkAppConfig , checkPackage , checkWebDir , hasYarn , log , logError , logFatal , logInfo , resolvePlatform , runCommand , runPlatformHook , runTask , writePrettyJSON } from '../common' ;
99import { sync } from './sync' ;
1010
1111import chalk from 'chalk' ;
1212import { resolve } from 'path' ;
1313
1414export async function addCommand ( config : Config , selectedPlatformName : string ) {
15+ if ( selectedPlatformName && ! config . isValidPlatform ( selectedPlatformName ) ) {
16+ const platformFolder = resolvePlatform ( config , selectedPlatformName ) ;
17+ if ( platformFolder ) {
18+ const result = await runPlatformHook ( `cd "${ platformFolder } " && ${ await hasYarn ( config ) ? 'yarn' : 'npm' } run capacitor:add` ) ;
19+ log ( result ) ;
20+ } else {
21+ logError ( `platform ${ selectedPlatformName } not found` ) ;
22+ }
23+ } else {
24+ const platformName = await config . askPlatform (
25+ selectedPlatformName ,
26+ `Please choose a platform to add:`
27+ ) ;
1528
16- const platformName = await config . askPlatform (
17- selectedPlatformName ,
18- `Please choose a platform to add:`
19- ) ;
20-
21- if ( platformName === config . web . name ) {
22- webWarning ( ) ;
23- return ;
24- }
29+ if ( platformName === config . web . name ) {
30+ webWarning ( ) ;
31+ return ;
32+ }
2533
26- const existingPlatformDir = config . platformDirExists ( platformName ) ;
27- if ( existingPlatformDir ) {
28- logFatal ( `"${ platformName } " platform already exists.
29- To add a new "${ platformName } " platform, please remove "${ existingPlatformDir } " and run this command again.
30- WARNING! your native IDE project will be completely removed.` ) ;
31- }
34+ const existingPlatformDir = config . platformDirExists ( platformName ) ;
35+ if ( existingPlatformDir ) {
36+ logFatal ( `"${ platformName } " platform already exists.
37+ To add a new "${ platformName } " platform, please remove "${ existingPlatformDir } " and run this command again.
38+ WARNING! your native IDE project will be completely removed.` ) ;
39+ }
3240
33- try {
34- await check (
35- config ,
36- [ checkPackage , checkAppConfig , ...addChecks ( config , platformName ) ]
37- ) ;
38- await generateCapacitorConfig ( config ) ;
39- await check ( config , [ checkWebDir ] ) ;
40- await doAdd ( config , platformName ) ;
41- await editPlatforms ( config , platformName ) ;
41+ try {
42+ await check (
43+ config ,
44+ [ checkPackage , checkAppConfig , ...addChecks ( config , platformName ) ]
45+ ) ;
46+ await generateCapacitorConfig ( config ) ;
47+ await check ( config , [ checkWebDir ] ) ;
48+ await doAdd ( config , platformName ) ;
49+ await editPlatforms ( config , platformName ) ;
4250
43- if ( shouldSync ( config , platformName ) ) {
44- await sync ( config , platformName , false ) ;
45- }
51+ if ( shouldSync ( config , platformName ) ) {
52+ await sync ( config , platformName , false ) ;
53+ }
4654
47- if ( platformName === config . ios . name || platformName === config . android . name ) {
48- log ( chalk `\nNow you can run {green {bold npx cap open ${ platformName } }} to launch ${ platformName === config . ios . name ? 'Xcode' : 'Android Studio' } ` ) ;
55+ if ( platformName === config . ios . name || platformName === config . android . name ) {
56+ log ( chalk `\nNow you can run {green {bold npx cap open ${ platformName } }} to launch ${ platformName === config . ios . name ? 'Xcode' : 'Android Studio' } ` ) ;
57+ }
58+ } catch ( e ) {
59+ logFatal ( e ) ;
4960 }
50- } catch ( e ) {
51- logFatal ( e ) ;
5261 }
5362}
5463
0 commit comments