basyura's blog

あしたになったらほんきだす。

unite-yarm で redmine のチケットを RU (表示・更新)


yet another redmine source for unite
  本家がないので yet も糞もないけど、もっといいのが出てくることを期待して
使い方
  Unite redmine
    チケット一覧の表示(かつ、一覧をキャッシュ)
    キャッシュがあればそれを表示
必要なもの
  webapi-vim 
    https://github.com/mattn/webapi-vim.git
  open-browser.vim
    https://github.com/tyru/open-browser.vim
unite-yarm

unite のプラグイン。チケットの取得・表示 に続いて更新機能も追加(description に限る)。

  1. :Unite redmine でチケット(issue)をサーバから取ってきて一覧表示
  2. unite のインタフェースでチケットを選択して内容表示
  3. ごにょごにょ編集
  4. :w or :wq でチケットを更新

起動 :Unite redmine


チケットの一覧表示


チケット表示


適度に syntax を追加。リンクを Enter するとブラウザが起動。タイトル(1行目)で Enter すると該当チケットをブラウザで表示する。

:w で保存


input で更新するかどうかを聞く

更新成功


HTTP Status を表示

既に誰かが更新していた場合


メッセージを通知




更新には API アクセスキーが必要。ただし、更新できるのは redmine の head または stable branch に限る(と readme に書いてある)。
更新する前にチケットを取り直して update_on フィールドの値がキャッシュしているものと同じかを比較。異なる場合は更新中止。ただし、排他はできないので微妙なタイミングで上書きしてしまう可能性は有る(updated_on も送信すれば良いのかもしれないけど未検証)。
更新が可能な場合は、更新前の description をローカルにバックアップ。
サーバへ put リクエストを送信してチケットを更新する。更新するのは description のみ。14行目以降全部を description とする微妙な判定。
更新が成功したら、再度サーバからチケットを取り直してキャッシュを更新。

バックアップ機能を付けたので、実運用されているチケットを扱っても大丈夫(だと思う)。

後は filetype=redmine で syntax を追加したり、url を Enter するとブラウザで表示したりとか。

pure vim ここまでいけたのは unite と webapi-vim のおかげ。特に webapi-vim は http や xml を簡単に扱えるので、web サービスとの連携はたいがいできちゃうんじゃないかと妄想してしまう。

追加したいもの。

  • カスタムフィールド表示(追加済)
  • カスタムフィールドによる絞り込み
  • プロジェクト単位の絞り込み
  • ステータスによる絞り込み
  • コマンドの
  • チケット表示からの最新化(チケットの取り直し)
  • サーバ切り替え
  • API KEY 切り替え

redmine の API 待ち

  • wiki の CRUD
  • チケット検索
  • wiki 検索