Wiki

Clone wiki

gorilla / Interface

(Command Line) Interface

The interface of a tool like this is all most users will ever see, so it has to be done right. If gorilla help doesn't fit on a single terminal screen then we're doing it wrong (I'm looking at you, easy_install).

Quick, Offthetopofmyhead Proposal

$ wget http://bitbucket.org/sjl/gorilla/get/tip.zip gorilla.zip

$ unzip gorilla.zip
... add the two entries to .bashrc (provide a script for this?) ...

$ gorilla init     # bootstrap gorilla (optional, see below)

$ gorilla home
... open a web browser for gorilla's homepage ...

$ gorilla list
Available Packages:
mercurial    django    django-registration    django-paypal
cherrypy     jinja2
...

$ gorilla search django
Available Packages:
django    django-registration    django-paypal

$ gorilla info django
Django is the web framework for perfections with deadlines.
Website: http://djangoproject.com/

$ gorilla home django
... open a web browser for django's website ...

$ gorilla prefer hg/git/static    # change the preferred VCS (optional)

$ gorilla install django -v
Installing django
    Cloning <repopath>
    Updating to newest version (1.1)
    Building
    Linking
Installed django

$ gorilla install cherrypy
... time passes ...

$ gorilla remove django -v
Removing django
    Unlinking
Removed django

$ gorilla smash cherrypy -v
Smashing cherrpy
    Unlinking
    Deleting gorilla/shelves/cherrypy
Smashed cherrypy

$ gorilla create hyde
Creating a new card for hyde
... open the card file in $EDITOR ...
... edit the card ...

$ gorilla install hyde
... the user makes sure everything's cool ...

$ gorilla submit hyde
... commit the hyde card file to the catalog repo ...
... use hg/git to generate a patch for that commit ...
Generated a patch for hyde at ./hyde.hg.patch
Email that file to <mailinglistforcatalogmaintainers@whatever.com>

$ gorilla update
Updating gorilla
Updating catalog

$

Bootstrapping

Gorilla should be able to be used as a static installation, but it should also be able to bootstrap itself into a real as-god-intended-it repository from that static install.

Here's one way it could work:

  • User downloads and extracts the gorilla zipfile.
  • User runs gorilla init. If they already have git or hg installed, use it to clone down the gorilla repository and replace itself with that. If they don't have hg or git, inform them and suggest that they gorilla install mercurial and try again.
  • If gorilla is run while it's still a static repo, that's cool. We should still use hg or git to pull down package repos if they're available, or fall back on tarballs.

Updated