class ExtremeFeedbackDevice::CLI

Constants

DEFAULT_MODE
DEFAULT_NAMESPACE
DEFAULT_PID
DEFAULT_SETTINGS

Attributes

opts[R]
pid_file[R]

Public Class Methods

instance() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 12
def instance
  @instance ||= new
end
new() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 19
def initialize
  @opts = ::GetoptLong.new(
    [ '--help', '-h', ::GetoptLong::NO_ARGUMENT ],
    [ '--mode', '-m', ::GetoptLong::REQUIRED_ARGUMENT ],
    [ '--namespace', '-n', ::GetoptLong::REQUIRED_ARGUMENT ],
    [ '--pid', '-p', ::GetoptLong::REQUIRED_ARGUMENT ],
    [ '--settings', '-s', ::GetoptLong::REQUIRED_ARGUMENT ],
    [ '--version', '-v', ::GetoptLong::NO_ARGUMENT ]
  )
end

Public Instance Methods

main() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 46
def main
  parse_opts!

  if argv.length > 0
    puts_help
    exit -1
  else
    @pid_file = PidFile.new(piddir: File.expand_path(pid_dir), pidfile: pid_name)

    ExtremeFeedbackDevice::Settings.source(File.expand_path(settings))
    ExtremeFeedbackDevice::Settings.namespace(namespace)
    ExtremeFeedbackDevice::Settings.reload!

    if mode =~ /^run$/i
      ExtremeFeedbackDevice.run
      exit 0
    elsif mode =~ /^loop$/i
      ExtremeFeedbackDevice.infinite_loop
      exit 0
    else
      puts_help
      exit -1
    end
  end
end
mode() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 30
def mode
  @mode || DEFAULT_MODE
end
namespace() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 34
def namespace
  @namespace || DEFAULT_NAMESPACE
end
pid() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 38
def pid
  @pid || DEFAULT_PID # File.expand_path(@pid || DEFAULT_PID)
end
settings() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 42
def settings
  @settings || DEFAULT_SETTINGS # File.expand_path(@settings || DEFAULT_SETTINGS)
end

Private Instance Methods

argv() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 74
def argv
  ARGV
end
parse_opts!() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 86
def parse_opts!
  begin
    opts.each do |opt, arg|
      case opt
        when '--help'
          puts_help
          exit 0
        when '--mode'
          @mode = arg
        when '--namespace'
          @namespace = arg
        when '--pid'
          @pid = arg
        when '--settings'
          @settings = arg
        when '--version'
          puts_version
          exit 0
      end
    end        
  rescue ::GetoptLong::Error => error
    puts # linebreak
    puts_help
    exit -1
  end
end
pid_dir() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 78
def pid_dir
  File.dirname(pid)
end
pid_name() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 82
def pid_name
  File.basename(pid)
end
puts_help() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 113
    def puts_help
      puts <<-EOS
extreme_feedback_device [OPTION] ...

-h, --help:
\tshow help.

-m, --mode [#{DEFAULT_MODE}]:
\tset mode 'run' for a single run or 'loop' for infinite loop.

-n, --namespace [#{DEFAULT_NAMESPACE}]:
\tsettings namespace.

-p, --pid [#{DEFAULT_PID}]:
\tpid file.

-s, --settings [#{DEFAULT_SETTINGS}]:
\tsettings file.

-v, --version:
\tshow version.

EOS
    end
puts_version() click to toggle source
# File lib/extreme_feedback_device/cli.rb, line 138
    def puts_version
      puts <<-EOS
extreme_feedback_device v#{ExtremeFeedbackDevice::VERSION}

EOS
    end