Hi,
I just uploaded the bundle "GetBundles" to the review trunk.
It is the first try to provide an easy and hopefully fast GUI to install additional bundles hosted on the svn repositories Mactomates Bundles, Macromates Review, and the git repository at github.com.
There is a tiny screencast: http://www.bibiko.de/TM_GetBundles.mov (5MB)
It is implemented as an async DIALOG window showing a table of all found bundles in the three repositories as 'Repository' (B := Bundles, R := Review, G ;= GitHub), 'name', 'description'.
If one invokes that window firstly it looks for the all bundles at these repositories. If it finds a bundle description in the cache file for a given bundle it displays that description; if not it shows "not yet downloaded". At the bottom you will see how many bundle descriptions are missing. For the github it always downloads the descriptions, meaning these descriptions aren't cached. If there are some missing one can press the "update" button. The table and the cache will be updated.
The GUI provides a search field. One can search for names and/or bundle descriptions. The search can be restricted to a given repository, and in addition there is also the chance to search by using a regexp à la ".*rtf.*[cd]op.*".
One can select one or more bundles (from different repositories) and press "Install Bundles" (one also can double-click). Furthermore one can select the installation target Prinstine Copy, ~ Bundles, App Bundle, etc. or 'user defined'. If 'user defined' was chosen one can select a folder.
The script will install a bundle by using svn (bundle intern or TM_SVN) or 'git clone' (git or TM_GIT). If git is not installed it will download the bundle as zip file from github and installs that one.
There is the chance to show the installation log file. Next there is an 'Advanced' button. It opens a drawer with up to now one button "Update TextMate's Support Lib" which installs the latest Support/lib items.
If a folder already exists the script will ask you what to do. You can cancel or replace the old one. If one chooses 'replace' the script will backup the old folder as OLDFOLDERNAME + a time stamp for safety reasons.
After installing a Reload Bundles will be done.
The entire script works with DIALOG1 or, if installed, with DIALOG2
If someone wants to test it you can check out it from the review repository and just download it via http://email.eva.mpg.de/~bibiko/downloads/textmate/GetBundles.tmbundle.zip
Please, for the first time you should select a 'user defined' folder as installation target.
Furthermore I would be pleased if a Ruby expert can go through the code. I'm not the Ruby specialist ;)
I tried to get rid of all circumstances, esp. for errors. All relevant commands are wrapped into timeout and rescue blocks. But maybe I forgot something ;)
The only way to close that window is to press the Cancel button or simply ESC. OPTION+W won't work. The script makes usage of some threads, thus these threads should be aborted safely.
All errors, installation commands will be written into a log file located in the bundle's lib path. This log file will be erased each time if one invokes "GetBundles".
I tested it on Tiger 10.4.11 and Leopard 10.5.4 on a ppc Mac with DIALOG1 and 2.
I didn't use the command line tool 'textmate' and 'thor'. By my opinion it is 'only' command line tool.
Any comments? Does the script run? What is unclear? What is ugly? What was misspelled? Are there any fatal errors or freezing stuff? What else can be done?
If a fatal error occurred and the window freezes at the screen, you can destroy that window by entering: "$DIALOG" - l TOKEN or "$DIALOG" window close TOKEN for DIALOG2 The token can be found at the beginning of the log file. Please also check if there are still running a Ruby, git, svn, tm_dialog(2) process in the Activity Monitor.
Thanks,
--Hans