にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

YAMLのBase64記述をデコードする

Publish系のプラグインでは、YAMLにパスワードの記述を要するものが殆どです。
で、それを使うYAMLを周りに人がいる状況で編集したりするのは気が引けますよね。
Plaggerでは、passwordの項目は一度実行すると'base64::'つきで書き換えてくれます。
なのでPRaggerでもそんな感じで、といってもYAMLファイルそのものを書き換えるようにするのは面倒なので(自分の書いた箇所じゃないのであんまり手を加えるのもアレだし)、base64::(base64エンコードされた記述)という形式だったらデコードしてから実行する、とすることを提案します。(エンコードはあらかじめ自分でやっておく、ということで)

pragger.rb

Index: pragger.rb
===================================================================
--- pragger.rb  (リビジョン 84)
+++ pragger.rb  (作業コピー)
@@ -4,6 +4,7 @@
 require 'optparse'
 require 'kconv'
 require 'pathname'
+require 'base64'

 $plugins = {}
 class Plugin
@@ -38,4 +39,4 @@
 opt.on("-w", "--where") { puts(Pathname.new(__FILE__).parent + "plugin"); exit }
 opt.parse!

-eval_pragger(YAML.load(File.read(configFile).toutf8),[])
+eval_pragger(YAML.load(File.read(configFile).toutf8.gsub(/base64::([\w+\/]+=*)/){ Base64.decode64($1) }),[])

これなら行数は1行追加だけなので大きな影響はありません。
最後の行数がやたら横長になってしまってるのが気になりますが…。