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
を試そうとしてはだらだらしてしまってやらないままになってる……。
mecurial_keyring が有効な hg コマンドを常に使う話
結論
- python2 の virtualenv を作って、そこに
mercurial
keyring
mercurial_keyring
をインストールする - bashrc, zshrc などに
alias hg='/path/to/virtualenv/bin/hg'
と設定する
mercurial_keyring について
普段 mercurial
を使っている。そのときのパスワード管理には mercurial_keyring
という keyring
を使うようにしてくれるライブラリがある。 keyring
は名前の通りパスワード管理ライブラリ。 keyring
の backend はいくつか種類があるようだけど、OS X の keychain も対応している。 git
の場合は git credential-osxkeychain
というコマンドで keychain で管理できるけれど、それと似たようなものという認識*1。
mercurial_keyring
の使用方法はドキュメントにあるとおり .hgrc
に以下のように設定する。
個人的には環境個別の設定は .hgrc.local
というような別ファイルにして include するようにしている*2
[extensions] mercurial_keyring = [auth] myremote.prefix = my.server.com/hgrepo myremote.username = myname
経緯
python のバージョン、 mercurial
のバージョン、 mercurial_keyring
のバージョンが合わないと *** failed to import extension mercurial_keyring: No module named mercurial_keyring
というエラーがでる。
stackoverflow.com
職場のマシンと私物のマシン、あるいはVMなどを行き来しているうちに最近は使わなくなっていた。extensions に path を指定するやりかたや mercurial
と mercurial_keyring
のバージョンを下げて対応などしていたこともあったけれど、面倒になると多少雑な感じになってきて、直接 .hgrc に書くか毎回パスワードをいれて対応していた。特に最近は python3 を使っていることが増えてきたので、 mercurial
は python3では動かないという問題もあった。あと mercurial
は python 開発でなくても使うことがあるので、 virtualenv にいれたりシステムにいれたりして混在していた。
そんな感じで放置していたのだけど、今日ふと mercurial_keyring
の話が出たので、そういえば、と思いついて設定してみたらあっさりできてしまった。
よく考えたら、virtualenv に python2 で mercurial
と mercurial_keyring
をいれればよいだけだった。常にそれを参照したいなら単純にパスを指定すればよいという話だった。
わりと便利という感じ。
参考
*1:順番的には git を使う機会があった時に mercurial にもあるだろう、ということで探したのがこのライブラリを知るきっかけだった
*2: ちょっと内容が古いけどこういう設定 https://github.com/altnight/dotfiles/blob/master/.hgrc
Intellij Idea で Django モジュールが検出できない場合 PYTHON_MODULE に書き換える
環境
- Intellj Idea 14.1.3
- Python Plugin 4.5 141.82
Intellij Idea で Django Module が検出されない
Intellij で Djagno を認識してくれないことがあって、サーバー起動やテストがIDE上から操作できなかった。GUIからのデバッグもできない。
あと Run Server
Run Test
を編集しようにも Please Select Django Module
という注意がでるだけで、設定する箇所がない。通常このあたりの設定は Project Structure
-> Module
, Library
, Facets
あたりをいじればよいのだけど、どこを探しても選択肢に出ない。
解決できない間はCUIで開発していたときと同じように、コンソールから runserver で起動して pdb を埋め込んでいた。
対策
これでなおる。
やっていることは、プロジェクト用の設定ファイル .iml 内で直接値を書き換えるという内容。.imlはxmlで記述されている。guestbook
というアプリであれば guestbook/.idea/guestbook.iml
というファイル名になっている。この中の <module type>
が JAVA_MODULE
になっているので PYTHON_MODULE
に手動で書き換え、再起動する。
自分がやったときはどこかで書き換えタイミングを間違えたのか、.imlファイルでは PYTHON_MODULE
になっているのに Python Plugin が認識されないという状態になってしまった。Python Pluginをアンインストール -> インストール、再起動しているうちになおった。