InstaUpToDate
I was playing around a bit with InstaDMG and ran into two issues:
1) Other than duplicating the whole structure there is no real way of having more than one build train
2) There is no way for people to share the base OS updates with each other. Everyone has to figure out the order of updates themselves, and download them into the right folders.
So I created a script to try and deal with these two issues. I have got a base-line version ready, but it is still more than a little rough around the edges, and there is a lot of functionality that I still want in it. But I thought I would get it out there so that people could start playing around with it.
[b]The Basics[/b]
You just need to place the script in the same folder with the instadmg.bash script. Then run it from the command line with a list of catalog files as the arguments. The script will read through the catalog files and try to place the files referenced in the catalog into the proper places in the InstaDMG folders. If it can't find the referenced pkg in its cache folder (which it will create) it will look in the web locations listed in the catalog and download the file, unpack it, and put the pkg into its cache.
The idea is that once someone puts together the latest version of the catalog file, everyone else can get get that from him/her and run the script and have their base image all ready for the custom packages that everyone has (which can be in a second catalog file).
I am including a sample catalog file, but this should be seen more as a format reference than an actual working model.
This first draft is going out without a specific license. I intend on putting out a version under something like the BSD license, but need to talk the specifics over with my employer first (I don't anticipate any problems). For the moment you can use it all you want, but please don't distribute it further (it is not ready for that yet).
[b]The Status[/b]
The script that I am releasing today is a first try at the idea. It works as long as there are absolutely no problems. If there are problems it will probably stop dead in its tracks with an unhelpful error (usually mentioning that I need better error handling). There are also a long list of features that I think are missing at this point, but I would like to get this out there to see what other people feel is missing.
At this point the script is probably not for the faint of heart, but rather for people who are willing to take a stab at things.
Also, if you are reading through the catalog file you should ignore that it says that you can use a 2 entry form. That might work, but is totally untested.
And one other thing: you have to clear out your InstaDMG folders ("CustomPKG" and "AppleUpdates") before you start.
[b]What is Missing[/b]
Here is a partial list of what I think the script is missing, in no particular order:
- Much better error handling - I have deliberately left this for latter
- implement controlling the base image (the image of the disk), so that build trains from multiple versions of the OS are possible
- for bonus points, allow this to detect the build number of the os and do something useful with it
- A GUI - I know people are going to want this, and have structured parts of the current script so that I can layer it on top, but there is a long way to go before that makes sense.
- Handling of zip files and .tgz - there are references for zip files, but I have not yet got around to coding for them
- automatic guessing of what file inside a archive is the package (if there is one one pkg or mpkg in side)
- ability to handle archives stored on smb, ftp, or afp
- allow a catalog to import other catalog files (including ones through http) so that we can more easily piggy-back on other's work
- handle dmg's stored in zip or tgz
- real documentation
- a real licensee
- continue to make it more object-oriented (the first proof-of-concept was completely function-based, this one is more of a hybrid)
- allow for multiple files with the same name in the cache folder
[b]Download it:[/b]
[url]http://www.stanford.edu/~larkost/InstaUpToDate0.1.zip[/url]