Unlike version 2, v3 of the GitHub API splits long lists of responses into pages. So, we may need multiple requests in order to retrieve the whole fork network. The code used to locate the "last page" is a bit hacky---but I can't think of anything better at the moment.
`brew-tap` now scans alternate formulae for dependencies of the form: depends_on 'repo/formula' => :alt If `repo` has not been added to the taproom, it is cloned. The original formula along with it's dependencies are then formed into a correctly sorted list for `brew install`
Two alternate repositories may provide different formulae for the same software. `brew-tap` will now accepts forumla names of the following form: repo/[subdirectories]/formula Case-sensitive partial matching is also used. For example, the following formula specification: adam/gcc Would cause the formula search to use the following glob: TAPROOM_PATH/adam*/**/gcc.rb Specifying subdirectories also works: adam/dupe/gcc => TAPROOM_PATH/adam*/dup*/**/gcc.rb Both of these globs resolve to the following path: TAPROOM_PATH/adamv-homebrew-alt/duplicates/gcc.rb
If the first argument to brew-tap does not resolve to a brew-tap subcommand, it is interpreted as a brew subcommand. The remaining positional arguments are interpreted as formulae and these are resolved to paths within the Taproom. brew-tap then calls back to brew passing the subcommand, the resolved formulae paths, and any remaining options. This allows all brew subcommands to be run against formulae inside the Taproom directory.
Taproom objects can now report on the breweries they have available and which are on tap (checked out). A Taproom can also place a brewery on tap by cloning it into the Taproom path. Library/Taproom was chosen as the default taproom path which required adding an entry to the master .gitignore file. This could probably be avoided by using HOMEBREW_PREFIX/Taproom but Library/Taproom seems more logical as it is next to the master Formula directory.
New class named Taproom. Instances of taproom represent folders where repositories ("Breweries") are checked out. The list of available repositories is generated from the fork network of a "founding brewery". Adamv's homebrew-alt repository is being used as the prototype founder. The "founding brewery" concept will probably need to be refactored away someday in the name of generalization, but right now it serves as a useful boundary by restricting the list of possible repositories to a well-known quantity. Also added support for what will eventually be the dispatch method of `brew-tap` subcommands. Currently implemented: - list: Prints out a "menu" that lists the available "breweries" - update: Refreshes the menu.
`brew tap` is planned to be a subcommand for "tapping" (checking out) repositories from other "breweries" (GitHub users other than mxcl) and then managing syncs and installs. Initial commit contains an implementation of the Brewery class which is a simple abstraction of a GitHub repository. Brewery instances can query GitHub for information such as branch lists and fork networks through memoized API calls.
pixman uses includes from X11. Declaring Env.x11 makes this explicit (even if it may work on your system without). Xcode without CLTs needs to set this explicit in order to add the right sdk path. Signed-off-by: Adam Vandenberg <email@example.com>