Class: Naginata::Command::ExternalCommand

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

Defined Under Namespace

Classes: List

Class Method Summary collapse

Class Method Details

.dispatch(action, options = {}) ⇒ Object

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
# File 'lib/naginata/command/external_command.rb', line 11

def self.dispatch(action, options = {})
  action = action.to_s.upcase.to_sym
  raise ArgumentError, "action name #{action} is not implemented" unless List.include? action
  raise ArgumentError, ":path option is required" if options[:path].nil?

  ts = options[:ts] || Time.now.to_i
  format = 'echo "[%d] %s" > %s'
  str = [action.to_s, List.keys_for(action).map{|k| options[k.to_sym]}].flatten.join(';')
  format % [ts, str, options[:path]]
end

.method_missing(name, *args, &block) ⇒ Object

Raises:

  • (ArgumentError)


5
6
7
8
9
# File 'lib/naginata/command/external_command.rb', line 5

def self.method_missing(name, *args, &block)
  raise ArgumentError, "only one argment allowed" if args.size > 1
  options = args.first || {}
  dispatch(name, options)
end