homebrew web

Sinatra front end for the homebrew package management system

23
1
Ruby

If you watch, please read:

Anyone want to make a MacRuby version of this (w/ a Cocoa Interface?)
@flangy suggested a ncurses version.

homebrew is a pretty awesome command line client.
I had my doubts at first, but I have come to realize that it is far and away
the best package manager for OSX I have used.

Not everyone is comfortable with the command line though 😦

I’m friendly. This doesn’t involve money.
Let’s just make something that makes other people’s lives easier.

Msg me on github or follow me on twitter - @melgray

homebrew-web

This started off as an attempt of creating a small website for homebrew for people to search for available packages.

I kinda hacked together a really janky web front end for the package manager.

Since homebrew is git based, it has the potential for being a really cool distributed package manager.

Requirements:

homebrew
Rubygems (1.3.5+)
Bundler

TokyoCabinet
TokyoCabinet Ruby Bindings (1.2.9) [http://gemcutter.org/gems/tokyocabinet]
Sinatra
Grit
yajl-ruby

If you have bundler, you only have to worry about having TokyoCabinet.

To get started quickly, install homebrew and then:

git clone git://github.com/melito/homebrew-web.git
gem bundle
rake bootstrap

Running rake bootstrap will do the following:

Get a list of all homebrew network members
Add each of those remembers as a remote in your homebrew install
Fetch (non-destructive) each of those remotes
Index all of the remotes blobs & branches in a tokyocabinet bdb

Once you’ve been ‘bootstrapped’ just run:

ruby app.rb && open http://0.0.0.0:4567

Then just start typing a package name in the ‘Search’ box and a list of results should come up.

The interface is very minimal and not nice atm.
Design contributions / ideas / criticism is welcome.

If you find this useful or like the idea of this, please contribute.

Current rake options

~/workspace/homebrew-web/ rake -T
(in /Users/melgray/workspace/homebrew-web)
rake bootstrap # Use this to setup everything up and get going
rake db:build # Builds a TokyoCabinet BDB database to help search the git repo faster
rake homebrew:location # Prints location where homebrew is installed
rake network:ls # Prints out all members in the homebrew network
rake network:remotes:add[user] # Add a user from the network as a remote (ex: rake network:remotes:add[mxcl])
rake network:remotes:add_all # Add all users from network as remotes and fetch (non-destructive)
rake network:remotes:fetch # Fetches (non-destructive) from all your remotes.
rake network:remotes:ls # List all remotes for your homebrew installation
rake network:remotes:remove_all # Remove all remotes (except origin) from your homebrew install