class Cloudit::Command::Generate
Constants
- DEFAULT_MAIN_CFN_EXTENSION
- DEFAULT_OUT_FILE
- DESCRIPTION
- SECTIONS
- VALID_METHODS
Private Class Methods
setup_options()
click to toggle source
# File lib/cloudit/command/generate.rb, line 89 def self.setup_options opts = Slop::Options.new opts.banner = 'Usage: cloudit generate [options]' opts.separator '' opts.separator 'Generate options:' opts.string '-o', '--output', 'output filename', default: DEFAULT_OUT_FILE opts.bool '-h', '--help', 'print options', default: false opts.string '-d', '--directory', 'root directory to generate', default: DEFAULT_DIRECTORY opts.bool '-m', '--minify', 'minify JSON output', default: false self.slop_opts = opts self.parser = Slop::Parser.new(opts) end
Public Instance Methods
generate_json(dir='./', min=false)
click to toggle source
# File lib/cloudit/command/generate.rb, line 41 def generate_json(dir='./', min=false) hash = {} hash_sections = {} unless File.directory? dir $stdout.puts "cloudit: '#{dir}' must be a directory" return end for file in Dir.glob(Dir["#{dir}**/*.#{DEFAULT_MAIN_CFN_EXTENSION}"]) do yml = YAML::load_file(file) if yml.is_a?(Hash) hash.merge! yml end end for section in SECTIONS do section_file = section.downcase hash_sections[section] = {} for file in Dir.glob(Dir["#{dir}**/*.#{section_file}.yml"]) do yml = YAML::load_file(file) if yml.is_a?(Hash) hash_sections[section].merge! yml end end end hash.merge! hash_sections if min hash.to_json else JSON.pretty_generate hash end end
index()
click to toggle source
# File lib/cloudit/command/generate.rb, line 13 def index if @opts.help? $stdout.puts slop_opts else out = @opts[:output] dir = normalize_directory @opts[:directory] min = @opts[:minify] if File.exist? out if out.eql? DEFAULT_OUT_FILE i = 1 while File.exist? out i += 1 out = "out#{i}.json" end else $stdout.puts "cloudit: output file '#{out}' already exists" return end end json = generate_json dir, min File.new(out, 'w').write "#{json}\n" $stdout.puts "Template generated to #{out}" end end
Private Instance Methods
normalize_directory(dir)
click to toggle source
# File lib/cloudit/command/generate.rb, line 81 def normalize_directory(dir) if dir.end_with? '/' dir else dir + '/' end end