Class: Foreman::CLI

Inherits:
Thor
  • Object
show all
Includes:
Helpers
Defined in:
lib/foreman/cli.rb

Constant Summary

Constants inherited from Thor

Thor::AmbiguousTaskError, Thor::DynamicTask, Thor::HELP_MAPPINGS, Thor::HiddenTask, Thor::TEMPLATE_EXTNAME, Thor::THOR_RESERVED_WORDS, Thor::Task, Thor::UndefinedTaskError, Thor::VERSION

Instance Attribute Summary

Attributes included from Thor::Base

#args, #parent_options

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#classify, #constantize

Methods inherited from Thor

check_unknown_options!, check_unknown_options?, command_help, default_command, desc, disable_class_options, help, #help, long_desc, map, method_option, method_options, package_name, printable_commands, register, stop_on_unknown_option!, stop_on_unknown_option?, subcommand, subcommand_classes, subcommands

Methods included from Thor::Base

included, #initialize, register_klass_file, subclass_files, subclasses

Class Method Details

.is_thor_reserved_word?(word, type) ⇒ Boolean

Hackery. Take the run method away from Thor so that we can redefine it.

Returns:

  • (Boolean)


31
32
33
34
# File 'lib/foreman/cli.rb', line 31

def is_thor_reserved_word?(word, type)
  return false if word == "run"
  super
end

Instance Method Details

#checkObject



69
70
71
72
73
74
# File 'lib/foreman/cli.rb', line 69

def check
  check_procfile!
  engine.load_procfile(procfile)
  error "no processes defined" unless engine.processes.length > 0
  puts "valid procfile detected (#{engine.process_names.join(', ')})"
end

#export(format, location = nil) ⇒ Object



57
58
59
60
61
62
63
64
65
# File 'lib/foreman/cli.rb', line 57

def export(format, location=nil)
  check_procfile!
  load_environment!
  engine.load_procfile(procfile)
  formatter = Foreman::Export.formatter(format)
  formatter.new(location, engine, options).export
rescue Foreman::Export::Exception => ex
  error ex.message
end

#run(*args) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/foreman/cli.rb', line 81

def run(*args)
  load_environment!

  if File.file?(procfile)
    engine.load_procfile(procfile)
  end

  pid = fork do
    begin
      engine.env.each { |k,v| ENV[k] = v }
      if args.size == 1 && process = engine.process(args.first)
        process.exec(:env => engine.env)
      else
        exec args.shelljoin
      end
    rescue Errno::EACCES
      error "not executable: #{args.first}"
    rescue Errno::ENOENT
      error "command not found: #{args.first}"
    end
  end
  trap("INT") do
    Process.kill(:INT, pid)
  end
  Process.wait(pid)
  exit $?.exitstatus || 0
rescue Interrupt
end

#start(process = nil) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/foreman/cli.rb', line 37

def start(process=nil)
  check_procfile!
  load_environment!
  engine.load_procfile(procfile)
  engine.options[:formation] = "#{process}=1" if process
  engine.start
end

#versionObject



112
113
114
# File 'lib/foreman/cli.rb', line 112

def version
  puts Foreman::VERSION
end