Redmineのチケット一覧結果をシェルスクリプトで整形する
結果
- Redmineの任意のチケット一覧をCSV形式でダウンロードする
iconv -f SJIS -t UTF-8 /path/to/issues.csv | sort -r -k 3 -t , | awk -F ',' '{printf "[%s] #%s %s\n", $3, $1, $7}'
こういうアウトプットになる。
[トラッカー] ## 題名 [機能] #XXXXX XXする [機能] #XXXXX YYする [タスク] #XXXXX 【XX】デプロイする [タスク] #XXXXX XXを設定する [バグ] #XXXXX XXの修正 [バグ] #XXXXX XX YY ZZ エラー対策
Macの場合最後に | pbcopy
などいれるとクリップボードに入って便利。あと [トラッカー]
あたりは除外したほうがよいかも。
背景
Redmineを普段使っている。通常はRedmineのオンラインのチケット上で管理、やりとりをしているけれど、ローカルのテキストファイルで扱いたい場合がある。そのときに簡単な整形をしたい。
前は Python で CSV を読み込んでテキストを出力するする小さなスクリプトを書いていたのだけど、毎回起動してメンテし拡張するのがだるくて結局使わなくなってしまった*1。こういう操作はシェルスクリプトのほうが楽なことが多い。あと wc
, grep
などの操作はシェルのコマンドとパイプの強力さをそのまま使ったほうが便利という印象。書いてて楽しいし。
CSV を処理するときに文字コードを変換する iconv
を使ってみて便利だったというのがこれを書いたきっかけ。ではいままでどうしていたかというと、CSVの話とかぶるけれど、文字コードの変換を伴う作業はだいたい Python 上で処理していた。なんとなくやらないでいたけど、特にやらない理由もなかった。
その他
毎回 awk
の文法を使っては忘れるので、 perl
か ruby
を試そうとしてはだらだらしてしまってやらないままになってる……。