redmineをwebで使っていると色々とイライラする事が多く、どうしてもコマンドラインから操作したくなった。
しかしコマンドラインから redmine を操作できる物で気に入った物が無かったのでGo言語で自作するに至った。まずライブラリ
mattn/go-redmine - GitHub
https://github.com/mattn/go-redmine
残念ながら API は全て出揃ってなくて対応状況は以下の様な感じ。
API |
Implements |
Issues |
100% |
Projects |
100% |
Project Memberships |
100% |
Users |
0% |
Time Entries |
100% |
News |
100% |
Issue Relations |
100% |
Versions |
0% |
Wiki Pages |
0% |
Queries |
0% |
Attachments |
0% |
Issue Statuses |
100% |
Trackers |
100% |
Enumerations |
100% |
Issue Categories |
100% |
Roles |
100% |
Groups |
0% |
とりあえず issues 関連は出来てるので、これを使うコマンドラインプログラムを書いた。
$ go get github.com/mattn/go-redmine/godmine
名前は中二病っぽいけど「godmine」という名前にした。
使い方は、例えば issue の一覧であれば
$ godmine issue list
もしくは
$ godmine i l
issue の登録は
$ godmine issue create "なんてこった" "大変だ!"
みたいにするか
$ godmine issue append
で起動するテキストエディタ(環境変数EDITORを参照しunix改行コードが扱えるテキストエディタのみ使用可能)で
### Subject Here ###
### Description Here ###
上記の部分を書き換えて保存終了する。
設定ファイルは ~/.config/godmine/settings.json に(Windows では %APPDATA%/godmine/settings.json)
{
"endpoint": "http://redmine.example.com",
"apikey": "アクセスキー",
"project": 1
}
の様に書く。
Project Id
は URL から調べて下さい。なお、環境変数 GODMINE_ENV を「foo」に設定すると「settings.foo.json」が読まれるので、複数のプロジェクトを扱う場合は
$ GODMINE_ENV=foo godmine issue append
とうい感じに使える。以下現状サポートしてるコマンド
gotmine [arguments]
Project Commands:
add a create project with text editor.
$ godmine p a
create c create project from given arguments.
$ godmine p c name identifier description
update u update given project.
$ godmine p u 1
show s show given project.
$ godmine p s 1
delete d delete given project.
$ godmine p d 1
list l listing projects.
$ godmine p l
Issue Commands:
add a create issue with text editor.
$ godmine i a
create c create issue from given arguments.
$ godmine i c subject description
update u update given issue.
$ godmine i u 1
show s show given issue.
$ godmine i s 1
delete d delete given issue.
$ godmine i d 1
close x close given issue.
$ godmine i x 1
notes n add notes to given issue.
$ godmine i n 1
list l listing issues.
$ godmine i l
Membership Commands:
show s show given membership.
$ godmine m s 1
list l listing memberships of given project.
$ godmine m l 1
User Commands:
show s show given user.
$ godmine u s 1
list l listing users.
$ godmine u l
管理者権限があればプロジェクトを消す事も出来ます。なんて怖い!
issue の close(x) は、ステータス一覧の先頭から見て close にチェックされている最初のステータスで issue を閉じます。
元はと言えば Windows で ruby の動作が遅すぎるのが嫌で作り始めましたが、linux でも動きます。
まだ作り始めたばかりなので、欲しい機能があれば入れていくつもりです。
基礎からわかる Go言語
古川 昇
シーアンドアール研究所 単行本(ソフトカバー) / ¥1 (2012年11月21日)
発送可能時間:
アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson, 西村 直人, 角谷 信太郎, 近藤 修平, 角掛 拓未
オーム社 単行本(ソフトカバー) / ¥2,860 (2011年07月16日)
発送可能時間: