class Lono::Template::Bashify

Public Class Methods

new(options={}) click to toggle source
# File lib/lono/template/bashify.rb, line 4
def initialize(options={})
  @options = options
  @path = options[:path]
end

Public Instance Methods

run() click to toggle source
# File lib/lono/template/bashify.rb, line 22
def run
  raw = open(@path).read
  json = JSON.load(raw)
  paths = user_data_paths(json)
  if paths.empty?
    puts "No UserData script found"
    return
  end
  paths.each do |path|
    puts "UserData script for #{path}:"
    key = path.sub('/','').split("/").map {|x| "['#{x}']"}.join('')
    user_data = eval("json#{key}")
    delimiter = user_data[0]
    script = user_data[1]
    puts script.join(delimiter)
  end
end
user_data_paths(data,path="") click to toggle source
# File lib/lono/template/bashify.rb, line 9
def user_data_paths(data,path="")
  paths = []
  paths << path
  data.each do |key,value|
    if value.is_a?(Hash)
      paths += user_data_paths(value,"#{path}/#{key}")
    else
      paths += ["#{path}/#{key}"]
    end
  end
  paths.select {|p| p =~ /UserData/ && p =~ /Fn::Join/ }
end