@@ -30,15 +30,17 @@ export function commonExecutor(options: ExecutorSchema, context: ExecutorContext
3030 const platformCheck = [ context . configurationName , options . platform ] . concat ( options ?. [ '_' ] ) ;
3131 let isIos = platformCheck . some ( ( overrides ) => overrides === 'ios' ) ;
3232 let isAndroid = platformCheck . some ( ( overrides ) => overrides === 'android' ) ;
33+ let isVision = platformCheck . some ( ( overrides ) => overrides === 'vision' || overrides === 'visionos' ) ;
3334
34- if ( ! isClean && ! isSilent && ! isIos && ! isAndroid ) {
35+ if ( ! isClean && ! isSilent && ! isIos && ! isAndroid && ! isVision ) {
3536 const platform = await selectPlatform ( options ) ;
3637 isIos = platform === 'ios' ;
3738 isAndroid = platform === 'android' ;
39+ isVision = platform === 'visionos' ;
3840 }
3941
4042 if ( ! isClean ) {
41- options . platform = isAndroid ? 'android' : 'ios' ;
43+ options . platform = isAndroid ? 'android' : ( isIos ? 'ios' : 'visionos' ) ;
4244 }
4345
4446 const projectConfig = context . projectsConfigurations . projects [ context . projectName ] ;
@@ -64,7 +66,7 @@ export function commonExecutor(options: ExecutorSchema, context: ExecutorContext
6466 }
6567
6668 if ( options . android ?. xmlUpdates ) updateXml ( options . android . xmlUpdates , 'android' ) ;
67- if ( options . ios ?. plistUpdates ) updateXml ( options . ios . plistUpdates , 'android ' ) ;
69+ if ( options . ios ?. plistUpdates ) updateXml ( options . ios . plistUpdates , 'ios ' ) ;
6870
6971 await checkOptions ( ) ;
7072
@@ -84,7 +86,7 @@ export function commonExecutor(options: ExecutorSchema, context: ExecutorContext
8486 return 'ios' ;
8587 }
8688
87- const platformChoices : Platform [ ] = [ 'ios' , 'android' ] ;
89+ const platformChoices : Platform [ ] = [ 'ios' , 'android' , 'visionos' ] ;
8890 const { platform } = await prompt < { platform : Platform } > ( {
8991 type : 'select' ,
9092 name : 'platform' ,
@@ -166,6 +168,8 @@ export function commonExecutor(options: ExecutorSchema, context: ExecutorContext
166168 let defaultDir : string [ ] ;
167169 if ( type === 'ios' ) {
168170 defaultDir = [ 'App_Resources' , 'iOS' ] ;
171+ } else if ( type === 'visionos' ) {
172+ defaultDir = [ 'App_Resources' , 'visionOS' ] ;
169173 } else if ( type === 'android' ) {
170174 defaultDir = [ 'App_Resources' , 'Android' ] ;
171175 }
@@ -176,7 +180,7 @@ export function commonExecutor(options: ExecutorSchema, context: ExecutorContext
176180 const fileContent = readFileSync ( xmlFilePath , 'utf8' ) ;
177181 const xmlUpdates = xmlUpdatesConfig [ filePathKeys ] ;
178182
179- if ( type === 'ios' ) {
183+ if ( type === 'ios' || type === 'visionos' ) {
180184 xmlFileContent = parse ( fileContent ) ;
181185 } else if ( type === 'android' ) {
182186 const parser = new XMLParser ( {
@@ -212,7 +216,7 @@ export function commonExecutor(options: ExecutorSchema, context: ExecutorContext
212216
213217 if ( needsUpdate ) {
214218 let newXmlFileContent ;
215- if ( type === 'ios' ) {
219+ if ( type === 'ios' || type === 'visionos' ) {
216220 newXmlFileContent = build ( xmlFileContent , { pretty : true , indent : '\t' } ) ;
217221 } else if ( type === 'android' ) {
218222 const builder = new XMLBuilder ( {
0 commit comments