Writing script to automate project clone and run
This is my first blog post in almost a month. I apologize if you have been following my blog posts more regularly than I have been updating it. Workload has been crazy since last few weeks which kept me much busy. But, here it goes
A Script to automate task of cloning iOS git repository with sample project and directly run it into simulator
I have been thinking about it for a while since each time I try to download an open source library from Github it takes ages to manually clone, compile and run it into appropriate simulator. (iPhone, iPad, Apple Watch et cetra)
Couple of weeks back I came up with the script which when provided few parameters such as URL of Github repo, name of simulator type to run project into, build config will automate these all tasks. At then end you will have a project running into your simulator.
I would like to take this opportunity to thank creator of iOS-sim library and This Github Gist.
In summary this script takes following parameters. Except for Git cloning URL other command line are optional. But I would strongly recommend for you to consider giving input of simulator type and iOS version you want to run project with.
Shell script performs following series of actions.
-
Input the clone URL and download a Git repo in the same directory as the script
-
Try to find a
.xcodeprojor.xcworkspacefile. Make sure this file does not belong topodsproject -
Once suitable file is found we can be sure that the demo project for library lies under it
-
Try if current folder has
podfile. If yes we can be ascertain that we need to topod installin order to install required dependencies and use.xcworkspacefile to view demo -
If
podfiledoes not exist, then we can directly use.xcodeprojto run the demo -
Use command line tool to run the project and store the generated
.appfile under the umbrella of current folder -
Once project has successfully run, use
ios-simplug-in to run this executable directly into simulator based on the device type passed.
An example of demo run of this script on random Github library is as follows

You can directly clone the script from Github Repository. If you run into any issues or have pull request, I would be happy to have a look at it.
Some notes:
-
In order to successfully run the project, make sure the project has at least one scheme. The scheme associated with demo should be marked as shared. (Schemes marked as private won't be recognized by the command line tool and will result in
project file not founderror) -
Script has subtle bug where if the project has multiple
.xcodeprojfiles with more than one schemes where one of the schemes belongs toframeworkand other belongs to actual demo project. It will sometimes try to run project with.schemefile belonging toframeworkwhich will not generate a valid.appfile. (This is essentially true with swift project since developers try to ship them in the form of standard iOS frameworks)
Again, you can download this script from Github Repo. Of course script is not perfect. I will appreciate if you could find any bugs within it and let me know so that I can take quick and necessary action to fix them

