Class: Foreman::CLI

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

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#classify, #constantize

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)

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

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

Instance Method Details

#checkObject


67
68
69
70
71
72
# File 'lib/foreman/cli.rb', line 67

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


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

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


78
79
80
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
# File 'lib/foreman/cli.rb', line 78

def run(*args)
  load_environment!

  if File.exist?(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
rescue Interrupt
end

#start(process = nil) ⇒ Object


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

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

#versionObject


109
110
111
# File 'lib/foreman/cli.rb', line 109

def version
  puts Foreman::VERSION
end