Config::Pit を使ってみる
Hokkaido.pm#4にて、aloelightさんが紹介されていたモジュール。
Config::Pitとは?
アカウント情報の管理にConfig::Pitを使用することによって、コードからアカウント情報を分離できます。
アカウント情報が格納された設定ファイル自体は、~/.pit/ 内に格納されます。スクリプト単体からのパスワード漏れは防げますが、設定ファイルの取り扱いに注意する必要があります。
パスワード設定をコードに書かない(Config::Pit) - モダンなPerl入門 - モダンなPerl入門
インストール
cpanm Config::Pit
Perlスクリプトから設定する
set.pl
use strict; use warnings; use Config::Pit; Config::Pit::set( "example.com", data => { username => 'tyamaguc', password => 'hogehoge', });
実行しても特に何も出力はされなが、~/.pit/default.yaml に設定が書き込まれている。
$ cat ~/.pit/default.yaml
-
- -
設定を取得する
get.pl
use strict; use warnings; use Config::Pit; use Data::Dumper; my $config = (); $config = pit_get( "example.com" ); print Dumper $config;
実行してみる
$ perl get.pl $VAR1 = { 'password' => 'hogehoge', 'username' => 'tyamaguc' };
また、pit_getのオプションで、requireというものがある。
これは、設定していない情報を取り出そうとした場合、エディタが開きその場で設定を追加することを求められる。
get.pl
use strict; use warnings; use Config::Pit; use Data::Dumper; my $config = (); $config = pit_get( "example.com", require => { "nickname" => "your nickname on example.com", }); print Dumper $config;
このスクリプトを実行すると、自分の環境下では viが実行され設定ファイルを編集することになる。
$ perl get.pl
-
- -
試しに以下のように編集し保存してみる
-
- -
すると、こんな出力がされる
$VAR1 = { 'password' => 'hogehoge', 'nickname' => 'tyamaguc07', 'username' => 'tyamaguc' };
~/.pit/default.yaml にも書きこまれている。
$ cat ~/.pit/default.yaml
-
- -
ppitコマンドを使って設定、参照する
Config::Pitをインストールすると、ppitというコマンドもインストールされる。
このコマンドを使うことにより、コマンドラインから設定の参照と設定が可能になる。
ppitを使って設定してみる。
$ ppit set example.com
viが開き、設定ファイルを編集出来る。
-
- -
"hogehoge": 'fugofugo' と1行追加して保存。
-
- -
設定を取得してみると……。
$ perl get.pl $VAR1 = { 'password' => 'hogehoge', 'nickname' => 'tyamaguc07', 'hogehoge' => 'fugofugo', 'username' => 'tyamaguc' };
ちゃんと追加されている。
もちろん、~/.pit/default.yaml にも追記されている。
また、先程も言ったように設定を参照することも可能。
しかし、ttyで参照しようとすると怒られる。
$ ppit get example.com do not output to tty.
仕方が無いので、標準出力をパイプでcatにでも渡してみてみる。
$ ppit get example.com | cat
-
- -
追記
設定を取得する際に、未設定項目があった場合に開くエディタは、
環境変数EDITORに設定したものになります。