cake-github is a cake plugin for providing an interface to the github API from your command-line.
Have you ever desired to create a new Github repository immediately after creating your project, without having to switch to your web browser and travel to github.com to do so? Desire no longer!
The plugin will provide an interface to all, or most of the API. You'll be able to create, delete, search, and modify repositories, all from your terminal with cake. And that isn't even the beginning.
This plugin is basically the evolution of gotmilk. Gotmilk is deprecated (pretty sure nobody used it anyway) from this point foreward. Since there are already excellent command-line tools for github, and the JVM startup time is too significant for gotmilk to ever be practical, there is no use in it continuing.
This plugin is much more ambitious than gotmilk. Since cake already provides a persistent JVM, startup time is no longer a problem. Couple that with the fact that the target audience is Clojure users anyway, I think integration with cake as a cake plugin will be better in the long run.
Here is a brief, and incomplete list of improvements that cake-github has over gotmilk:
- Cake's persistent JVM means no JVM startup time.
- Enhanced (sane) formatting of API call results. It actually looks like a decent command-line tool now.
- Integrated into the worlds tastiest build tool.
All commands are structured under two segment namespaces. Here is an example:
rayne@ubuntu:~/cljprojs/cake-github$ cake github.users.info dom96 Dominik Picheta - ------------------------------------------- http://github.com/dom96 gravatar id: d09fd89566b721c57bcb951acf2373f4 following count: 24 created at: 2010/04/18 07:05:30 -0700 blog: http://dom96.co.cc/ public gist count: 66 public repo count: 13 company: null login: dom96 location: null
There are commands for doing all sorts of stuff that you typically do through the Github website.
To find out more information about individual commands, do
cake help <command>.
github.gists.new github.gists.meta github.gists.contents github.gists.show
github.users.follow github.users.unfollow github.users.search github.users.followers github.users.following github.users.info github.users.watching github.users.set
github.repos.show github.repos.search github.repos.create github.repos.delete github.repos.fork github.repos.set github.repos.info github.repos.watch github.repos.unwatch github.repos.tags github.repos.pushable github.repos.network github.repos.languages github.repos.contributors github.repos.collaborators github.repos.add-collaborator github.repos.rm-collaborator github.repos.deploy github.repos.add-deploy github.repos.rm.deploy github.repos.visibility
github.issues.open github.issues.info github.issues.close github.issues.comment github.issues.tag github.issues.untag github.issues.tags github.issues.comments github.issues.show github.issues.reopen github.issues.search
The whole thing is just a cake plugin. You'll want to be able to use it outside of a project, so you'll want to add the plugin to the :dev-dependencies in
~/.cake/project.clj. You'll also need to add a :tasks key with the value
[cake-github.tasks]. After that, do
cake deps --global, and you should be all set.