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



71
72
73
74
75
76
77
# File 'lib/foreman/cli.rb', line 71

def check
  check_procfile!
  engine.load_procfile(procfile)
  puts "valid procfile detected (#{engine.process_names.join(', ')})"
rescue Foreman::Procfile::EmptyFileError
  error "no processes defined"
end

#export(format, location = nil) ⇒ Object



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

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, Foreman::Procfile::EmptyFileError => ex
  error ex.message
end

#run(*args) ⇒ Object



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
109
110
111
112
113
# File 'lib/foreman/cli.rb', line 84

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
rescue Foreman::Procfile::EmptyFileError
  error "no processes defined"
end

#start(process = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
# 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
rescue Foreman::Procfile::EmptyFileError
  error "no processes defined"
end

#versionObject



117
118
119
# File 'lib/foreman/cli.rb', line 117

def version
  puts Foreman::VERSION
end