CLI for Redmine - climine (クリミネ) を書いてみた
Rubyを書きたくなったので、gemを作りました。
普段、タスク管理はRedmineを使ってるのですが、 わざわざRedmine見る為にブラウザにCommand+TABするのがめんどくさくて さくっと、コマンド打ってチケット確認したいなぁ、という思いがあったので、 ひとまず、チケット見れる所まで書いてみました。
http://www.redmine.org/projects/redmine/wiki/Rest_api
https://github.com/yagince/climine
https://rubygems.org/gems/climine
使い方
インストール
bundlerを使う場合
Gemfile
gem 'climine'
で、インストール
$ bundle install
まずはinitします
$ climine init -u [RedmineURL] -k [APIKey]
これでローカルにconfig.yml
が作成されます。
チケットを参照
$ climine issue get [TICKET_NO] <<機能>> [新規] #225 Test ---------------------------------------------------------------------------------------- [PROJECT ] Test [created ] 2013-11-10 01:06:34 [Author ] natsuki yagi [Assigned] natsuki yagi Hogehoge ----------------------------------------------------------------------------------------
その他の使い方は、 yagince/climine · GitHub こちらを参照してください。
現状の機能
現状、以下の機能があります。
- チケット
- 一覧表示
- 詳細表示
- 登録
- プロジェクト
- 一覧表示
- プロジェクトメンバー
- 一覧表示
- トラッカー
- 一覧表示
- チケットステータス
- 一覧表示
- ユーザー
- 一覧表示(検索可能)
特徴
今回やりたかった事で、入れた特徴的(?)な機能が以下の2つです。
- テンプレートの切替(ERB)
- 週指定の検索
テンプレート切替
自由なフォーマットでチケットの一覧なり内容なりを表示したかったので、 各自が自分で作ったERBテンプレートを使って、表示できるようしました。
$ climine issue get 100 -t template/issue.erb
のような感じで、テンプレートのpathを指定すれば使えます。
例えば、textile形式で一覧を出力したい場合、こんな感じになります。
templates/issues.erb
<% res.issues.each{|issue| -%> * <%= issue.tracker.name %> [<%= issue.status.name %>] #<%= issue.id %> <%= issue.subject %> <% } -%>
これを使って以下を実行
$ climine issue get -t templates/issues.erb * 機能 [新規] #225 Test * バグ [新規] #224 hoge * バグ [新規] #223 hoge * バグ [新規] #222 Test
週指定の検索
先週なにやったんだっけ?
みたいな事をまとめるために、
自分が担当で一週間以内に更新したチケットを一覧で知りたい
みたいな事がやりたい時があったので、週指定で検索できるようにしました。
自分が担当で一週間以内に更新したチケットを一覧で知りたい
を行うためには
$ climine user -n yagi
でユーザーIDを調べ
$ climine issue -w 1 -u [USER_ID]
を実行します。 ユーザーIDは一回調べてしまえば変わらないので、上記のコマンドをaliasにでもしてしまえば、 毎週すぐに調べる事ができます。
課題
helpがちゃんと表示されない
今回はThorを使ったのですが、
$ climine issue new
みたいに取得・登録・更新などのコマンドが必要な為、全てサブコマンドにしました。
ただ、サブコマンド指定しなかったらデフォルトで一覧表示して欲しいと思っていて、
default_command
を使ってサブコマンドなし時のコマンドを指定しているのですが、
そうすると、今度はhelpがちゃんと表示されないのです。
$ climine help member Usage: climine member [COMMAND] subcommands for member $ climine member help Usage: climine help [COMMAND] Describe subcommands or one specific subcommand $ climine member help get Usage: climine help [COMMAND] Describe subcommands or one specific subcommand
default_command
使わないとちゃんと見れるので、使い方がわるいのか、、、、
まだ、ちゃんと調べてないので、次のバージョンで直したいと思います。
今日はこのへんで。。。