成らぬは人の為さぬなりけり

エンジニアライフをエンジョイする為のブログ

CLI for Redmine - climine (クリミネ) を書いてみた

Rubyを書きたくなったので、gemを作りました。

普段、タスク管理はRedmineを使ってるのですが、 わざわざRedmine見る為にブラウザにCommand+TABするのがめんどくさくて さくっと、コマンド打ってチケット確認したいなぁ、という思いがあったので、 ひとまず、チケット見れる所まで書いてみました。

※中身は単純にRedmineAPIを叩いているだけです。

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使わないとちゃんと見れるので、使い方がわるいのか、、、、 まだ、ちゃんと調べてないので、次のバージョンで直したいと思います。

今日はこのへんで。。。