[MonkeyScript] [TitleIndex] [WordIndex

Banana is MonkeyScript's package management system. It is inspired by ideas from ASDF-INSTALL, clbuild, pear, and gems.

The following is some drafing for banana commands.

`banana install <library>`

Installs a library. Banana queries servers for the library of name <library> and servers return the files and metadata to setup.

   1 banana install FastCGI
   2 banana install FastCGI[stable] # same as above
   3 banana install FastCGI[v1.2]
   4 banana install FastCGI[alpha]

I'm considering using a git like backend, something involving using something like tags to handle versions. In these examples FastCGI and FastCGI[stable] installs the stable branches of FastCGI, updates are recieved whenever the stable is updated. FastCGI[v1.2] installs the 1.2 version of FastCGI. This can be as restrictive or unrestrictive as wanted. For example if 1.2.2 was installed and one used [v1.2] then when 1.2.5 was released they would be updated, however when 1.3.2 is released they will not be updated. And finally FastCGI[alpha] will install the alpha versions of FastCGI before they are considered stable.

`banana update [<library>]`

Updates a library or all libraries. Banana queries servers using a JSON request similar to the one below to query for information on any new versions:

   1 {
   2   "action": "updates",
   3   "libraries": {
   4     "fastcgi": {
   5       "version": "1.2.2",
   6       "limit": "stable"
   7     },
   8     "http": {
   9       "version": "3.5",
  10       "limit": "v3.5",
  11       "locked": true
  12     }
  13   }
  14 }

Banana should be careful to store what server was the origin of a library and only ask for updates from that same server unless explicitly asked for a switch.

`banana search <pattern>`

Searches for libraries using the pattern <pattern>.

`banana server`

banana server manages what servers are queried for libraries.

- `banana server list`
> List the servers that will be queried

- `banana server add [<name>] <url>`
> Add a new unamed or named server to the list, or add a name to an unnamed server.
> If given the name will be used when formatting readouts and can also be used
> in installation in the format `banana install servername:library` to install a
> library from a specific server.

- `banana server remove <name|url>`
> Remove a server from the list.

- `banana server priority`
> open up an interactive mode for modification of the priority order of the
> banana servers.

`banana runserver`

Run a banana server and serve out all installed libraries publicly. (Perhaps you can use this to browse something locally in your browser as well? Similar to what RubyGems allows) This is what will be used to run public accesible banana servers.

A banana server will probably make use of a rest interface for simple commands and json requests for more complex ones. Requests ending with .json will return json, and .html will return a formatted response.

Most server installations will probably want to reverse proxy the banana server using a lightweight webserver like nginx.


2010-07-23 04:25