AWSのCLIツール系では最高レベルに便利なCodenize.toolsからいろいろ学ぼうと思って、Fukuoka.rbでもくもくと読んでいました。
同時にawspec業もしていたので、面白そうなapplyコマンドまで読み進められなかったのが残念。
以下、メモ。
bin/roadwork
なんとなく bin/roadwork からスタート。optparseを使っているのか。
if options[:debug] Aws.config.update( :http_wire_trace => true, :logger => options[:logger] ) end
おお...(デバッグオプションとかつけてないな、awspec
client = Roadworker::Client.new(options)
roadwork -e
awspec generateと同じ流れだろうと踏んで、exportコマンドから追ってみる。
コードを追ってみると実体は
Roadworker::Exporter#export_hosted_zones(hosted_zones)
っぽい。
Roadworker::Collection.batch
Roadworker::Collection.batch
で(大抵のaws-sdk-rubyの*::Clientクラスのレスポンスで返ってくる)ページング可能なオブジェクトをいい感じに回している。カッコいい。
module Roadworker class Collection class << self def batch(pageable_response, collection_name) pageable_response.each do |response| response.public_send(collection_name).each do |item| yield(item) end end end end # of class method end # Collection end # Roadworker
DSL変換
aws-sdk-rubyからのレスポンスをいい感じにハッシュにまとめてRoadworker::Client#exportに戻して、今度はRoadworker::DSL::Converter#convert でRoadworkerのDSLに変換している。
Roadworker::DSL::Converter#output_rrsetの中
name = recrod.delete(:name).inspect
Hash#deleteの動きで、keyを消しつつvalueを取り出していて、String#inspectで、エスケープしている。こういうふうに使うのかー。
というわけで時間切れ。