Class: ThinService::Command::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/thin_service/command.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Base

Called by the subclass to setup the command and parse the argv arguments. The call is destructive on argv since it uses the OptionParser#parse! function.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/thin_service/command.rb', line 39

def initialize(options={})
  argv = options[:argv] || []
  @opt = OptionParser.new
  @opt.banner = ThinService::Command::BANNER
  @valid = true
  @done_validating = false

  configure

  @opt.on_tail("-h", "--help", "Show this message") do
    @done_validating = true
    puts(@opt)
  end

  # I need to add my own -v definition to prevent the -v from exiting by default as well.

  @opt.on_tail("--version", "Show version") do
    @done_validating = true
    puts("Version #{ThinService::VERSION}")
  end

  @opt.parse! argv
end

Instance Attribute Details

#done_validatingObject (readonly)

Returns the value of attribute done_validating.



23
24
25
# File 'lib/thin_service/command.rb', line 23

def done_validating
  @done_validating
end

#validObject (readonly)

Returns the value of attribute valid.



23
24
25
# File 'lib/thin_service/command.rb', line 23

def valid
  @valid
end

Instance Method Details

#configureObject



62
63
64
# File 'lib/thin_service/command.rb', line 62

def configure
  options []
end

#failure(message) ⇒ Object

Just a simple method to display failure until something better is developed.



109
110
111
# File 'lib/thin_service/command.rb', line 109

def failure(message)
  STDERR.puts "!!! #{message}"
end

#helpObject

Returns a help message. Defaults to OptionParser#help which should be good.



72
73
74
# File 'lib/thin_service/command.rb', line 72

def help
  @opt.help
end

#options(opts) ⇒ Object

Called by the implemented command to set the options for that command. Every option has a short and long version, a description, a variable to set, and a default value. No exceptions.



28
29
30
31
32
33
34
35
# File 'lib/thin_service/command.rb', line 28

def options(opts)
  opts.each do |short, long, help, variable, default|
    self.instance_variable_set(variable, default)
    @opt.on(short, long, help) do |arg|
      self.instance_variable_set(variable, arg)
    end
  end
end

#runObject

Runs the command doing it’s job. You should implement this otherwise it will throw a NotImplementedError as a reminder.

Raises:

  • (NotImplementedError)


78
79
80
# File 'lib/thin_service/command.rb', line 78

def run
  raise NotImplementedError
end

#valid?(exp, message) ⇒ Boolean

Validates the given expression is true and prints the message if not, exiting.

Returns:

  • (Boolean)


84
85
86
87
88
89
90
# File 'lib/thin_service/command.rb', line 84

def valid?(exp, message)
  if !@done_validating && !exp
    failure message
    @valid = false
    @done_validating = true
  end
end

#valid_dir?(file, message) ⇒ Boolean

Validates that the given directory exists

Returns:

  • (Boolean)


104
105
106
# File 'lib/thin_service/command.rb', line 104

def valid_dir?(file, message)
  valid?(file != nil && File.directory?(file), message)
end

#valid_exists?(file, message) ⇒ Boolean

Validates that a file exists and if not displays the message

Returns:

  • (Boolean)


93
94
95
# File 'lib/thin_service/command.rb', line 93

def valid_exists?(file, message)
  valid?(file != nil && File.exist?(file), message)
end

#valid_file?(file, message) ⇒ Boolean

Validates that the file is a file and not a directory or something else.

Returns:

  • (Boolean)


99
100
101
# File 'lib/thin_service/command.rb', line 99

def valid_file?(file, message)
  valid?(file != nil && File.file?(file), message)
end

#validateObject

Returns true/false depending on whether the command is configured properly.



67
68
69
# File 'lib/thin_service/command.rb', line 67

def validate
  return @valid
end