class Itamae::CLI
Constants
- GENERATE_TARGETS
Public Class Methods
define_exec_options()
click to toggle source
# File lib/itamae/cli.rb, line 15 def self.define_exec_options option :recipe_graph, type: :string, desc: "[EXPERIMENTAL] Write recipe dependency graph in DOT", banner: "PATH" option :node_json, type: :string, aliases: ['-j'], repeatable: true option :node_yaml, type: :string, aliases: ['-y'], repeatable: true option :dry_run, type: :boolean, aliases: ['-n'] option :shell, type: :string, default: "/bin/sh" option :login_shell, type: :boolean, default: false option :ohai, type: :boolean, default: false, desc: "This option is DEPRECATED and will be unavailable." option :profile, type: :string, desc: "[EXPERIMENTAL] Save profiling data", banner: "PATH" option :detailed_exitcode, type: :boolean, default: false, desc: "exit code 0 - The run succeeded with no changes or failures, exit code 1 - The run failed, exit code 2 - The run succeeded, and some resources were changed" option :log_level, type: :string, aliases: ['-l'], default: 'info' option :color, type: :boolean, default: true option :config, type: :string, aliases: ['-c'] option :tmp_dir, type: :string, aliases: ['-t'], default: "/tmp/itamae_tmp" end
exit_on_failure?()
click to toggle source
# File lib/itamae/cli.rb, line 39 def self.exit_on_failure? true end
new(*)
click to toggle source
Calls superclass method
# File lib/itamae/cli.rb, line 8 def initialize(*) super Itamae.logger.level = ::Logger.const_get(options[:log_level].upcase) if options[:log_level] Itamae.logger.formatter.colored = options[:color] if options[:color] end
options()
click to toggle source
Calls superclass method
# File lib/itamae/cli.rb, line 31 def self.options @itamae_options ||= super.dup.tap do |options| if config = options[:config] options.merge!(YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(config) : YAML.load(config)) end end end
Public Instance Methods
destroy(target, name)
click to toggle source
# File lib/itamae/cli.rb, line 124 def destroy(target, name) validate_generate_target!('destroy', target) generator = Generators.find(target).new generator.destination_root = File.join("#{target}s", name) generator.remove_files end
docker(*recipe_files)
click to toggle source
# File lib/itamae/cli.rb, line 81 def docker(*recipe_files) if recipe_files.empty? raise "Please specify recipe files." end run(recipe_files, :docker, options) end
generate(target, name)
click to toggle source
# File lib/itamae/cli.rb, line 114 def generate(target, name) validate_generate_target!('generate', target) generator = Generators.find(target).new generator.destination_root = File.join("#{target}s", name) generator.copy_files end
init(name)
click to toggle source
# File lib/itamae/cli.rb, line 106 def init(name) generator = Generators::Project.new generator.destination_root = name generator.invoke_all end
jail(*recipe_files)
click to toggle source
# File lib/itamae/cli.rb, line 92 def jail(*recipe_files) if recipe_files.empty? raise "Please specify recipe files." end run(recipe_files, :jexec, options) end
local(*recipe_files)
click to toggle source
# File lib/itamae/cli.rb, line 45 def local(*recipe_files) if recipe_files.empty? raise "Please specify recipe files." end run(recipe_files, :local, options) end
ssh(*recipe_files)
click to toggle source
# File lib/itamae/cli.rb, line 63 def ssh(*recipe_files) if recipe_files.empty? raise "Please specify recipe files." end unless options[:host] || options[:vagrant] raise "Please set '-h <hostname>' or '--vagrant'" end run(recipe_files, :ssh, options) end
version()
click to toggle source
# File lib/itamae/cli.rb, line 101 def version puts "Itamae v#{Itamae::VERSION}" end
Private Instance Methods
run(recipe_files, backend_type, options)
click to toggle source
# File lib/itamae/cli.rb, line 141 def run(recipe_files, backend_type, options) runner = Runner.run(recipe_files, backend_type, options) if options[:detailed_exitcode] && runner.diff? exit 2 end end
validate_generate_target!(command, target)
click to toggle source
# File lib/itamae/cli.rb, line 133 def validate_generate_target!(command, target) unless GENERATE_TARGETS.include?(target) msg = %Q!ERROR: "itamae #{command}" was called with "#{target}" ! msg << "but expected to be in #{GENERATE_TARGETS.inspect}" fail InvocationError, msg end end