In an arduous undertaking, i completed a nodejs implementation of Ruby xcodeprojs 'addTarget' as a feature for node_xcode.
Motivation:
In context of state-of-the-art, high-end Cordova applications for iOS, iOS app extensions might be becoming an increasingly critical part of the iOS app tech stack. However, there is no vector to integrate these using standard Cordova interfaces (e.g. plugman, the CLI, etc.) or related venues of automation.
For example, adding a Apple Watchkit Extension requires interaction with the XCode UI to add all corresponding WatchKit extensions, build phases and targets. Or incorporating a "Share" extension within a Cordova application (or developing an extension that leverages Cordova in some way) would require projects to break existing automation solutions or to resolve to hacks like diffed XCode project files, or worse.
My solution should allow for seamless integration of iOS extensions within Cordova or Ionic projects, or for the development of Widgets, Extensions using Cordova. Within plugin development, this can now easily be done e.g. with Cordova plugin installation hook. I'll publish a implementation example for this shortly.
The solution was to build a simple node_xcode style interface for adding pbxNativeTargets, building on the existing node-xcode API - which is stellar, but definitely requires refactoring. Great thanks to @Mitko-Kerezov, who seemed to have worked within similar aspects of the codebase and whose recent contributions i built my solution upon.
I implemented the steps required and also refactored stuff in several areas (please reference the 'atomic' commits within the add_target branch of my node_xcode fork). During the course of this effort, substantial amounts of the pbxFile prototype had to be rewritten to support scenarios with current XCode capabilities (e.g., up-to-date extension types) within the application projects managed by node_xcode.
Also, i added the capability to deal with artifacts created during build-time has been added.
Of course, i added tests for all new stuff and made minor required adaptations to the existing ones. I made sure that all of the now over 1000 tests succeed - which is the case.
I'm looking forward to your thoughts and would be very happy if we could merge this into mainline node_xcode.
In an arduous undertaking, i completed a nodejs implementation of Ruby xcodeprojs 'addTarget' as a feature for node_xcode.
Motivation: In context of state-of-the-art, high-end Cordova applications for iOS, iOS app extensions might be becoming an increasingly critical part of the iOS app tech stack. However, there is no vector to integrate these using standard Cordova interfaces (e.g. plugman, the CLI, etc.) or related venues of automation.
For example, adding a Apple Watchkit Extension requires interaction with the XCode UI to add all corresponding WatchKit extensions, build phases and targets. Or incorporating a "Share" extension within a Cordova application (or developing an extension that leverages Cordova in some way) would require projects to break existing automation solutions or to resolve to hacks like diffed XCode project files, or worse.
My solution should allow for seamless integration of iOS extensions within Cordova or Ionic projects, or for the development of Widgets, Extensions using Cordova. Within plugin development, this can now easily be done e.g. with Cordova plugin installation hook. I'll publish a implementation example for this shortly.
The solution was to build a simple node_xcode style interface for adding pbxNativeTargets, building on the existing node-xcode API - which is stellar, but definitely requires refactoring. Great thanks to @Mitko-Kerezov, who seemed to have worked within similar aspects of the codebase and whose recent contributions i built my solution upon.
I implemented the steps required and also refactored stuff in several areas (please reference the 'atomic' commits within the add_target branch of my node_xcode fork). During the course of this effort, substantial amounts of the pbxFile prototype had to be rewritten to support scenarios with current XCode capabilities (e.g., up-to-date extension types) within the application projects managed by node_xcode.
Also, i added the capability to deal with artifacts created during build-time has been added.
Of course, i added tests for all new stuff and made minor required adaptations to the existing ones. I made sure that all of the now over 1000 tests succeed - which is the case.
I'm looking forward to your thoughts and would be very happy if we could merge this into mainline node_xcode.
Kind regards, Sidney / Berlin, Germany