- [Perl]Module::Buildを使ってると勝手にshebangが書き換わる
- [その他]直ったかも?!→Re: Googleカレンダーの「毎日の予定リスト」通知メールが止まらない
- [その他]20歳になりました!
- [Shell]lessでタブ文字を表示する
- [Emacs]ミニバッファの邪魔な履歴を削除する
- [Emacs]Emacsのiswitchbで、普段は*...*を完全無視して必要なときだけ出す設定
- [Emacs][Thunderbird]コマンドラインからMessage-IDを指定してメールを開く方法。それをOrgMode(Emacs)からも開けるようにする。
- [ソフトウェア][Perl]tiarraのSystem::SendMessage(ControlPort経由)のログをLog::Channel経由で記録する
- [ソフトウェア][Perl]tiarraのSystem::SendMessage(ControlPort経由)でnick宛に送信するパッチ
- [開発]GNU makeのMakefileに、シェルスクリプトを自然に書くたった一つの方法
2006年10月29日
■[Perl][Plagger]Plagger実行中にconfigを対話的に入力するプラグイン(2)
Plagger実行中にconfigを対話的に入力するプラグイン - ヒルズで働くholidays-lの技ログ
前エントリが長いので新規エントリです。
パスワードを対話的に聞くのはlib/Plagger/Crypt/Prompt.pmってのを作ればいいんじゃね? - otsune's SnakeOil - subtech
トラックバックありがとうございました!
名案だと思ったのでちょっと書いてみたのですが色々問題が出てしまいました。
decryptはpasswordフィールドでしか呼び出されません。
password以外のフィールドも対話入力したいことがあるので、$plagger->{conf}の全走査が必要になってしまいます。
つまり、対話入力したいフィールド全てに何か目印を付ける必要があります。
$plagger->{conf}はhashrefなので順番を制御することができません。
設定にorderを加える必要があります。
なお、IO::PromptではなくTerm::ReadKeyを使っているのは、Term::ReadKeyはCPAN::Shellで利用されるので入っている可能性が高いと思ったからです。
id:otsuneさんの意見を参考に、Plagger::Plugin#decrypt_configのもう一つ上のPlagger::Plugin::do_walkを上書きする形でやってみました。とりあえず以下のようなconfigで動くようにはなっています(ろくでもないので公開はしませんが)
id:miyagawaさんに怒られるかなーと思ってPlagger::Plugin::Acme::*以下に移動しています。
plugins:
- module: Acme::CustomConfig
- module: Subscription::LivedoorReader
config:
username:
Acme::CustomConfig::ReadLine:
prompt: What is your LDR username?
default: holidays_l
order: 1
password:
Acme::CustomConfig::ReadPassword:
prompt: What is your LDR password?
default: abc123
order: 2
mark_read: 0
動作はするのですが、passwordフィールドが残ったままになってしまってPlagger [error] password: ******** not found in test.yaml などと言われてしまうので調整中です。もうちょっとマシなconfig書けるようにならないですかね、という独り言。
