Sha256: aaa72e90e8bca3c9ccf318ba58a832a4cfc88b8f0c8e56d2cf3c958bbed07e04

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

module Shere; end
module Shere::Runner
  module_function
  def options
    @options ||=
    [['-p, --port PORT', 'Which port Nginx should listen on (default 4331)'],
     ['-o, --host HOST', 'Which host Nginx should use       (default _)'   ],
     ['-u, --user USER', 'Which user Nginx should use' \
                                              ' (if having root privilege)'],
     ['    --help'     , 'Print this message'                              ],
     ['-v, --version'  , 'Print the version'                               ]]
  end

  def run argv=ARGV.dup
    opts = parse(argv)
    require 'shere'
    Shere.run(opts)
  end

  def parse argv
    opts = {}
    until argv.empty?
      case arg = argv.shift
      when /^-p=?(.+)?/, /^--port=?(.+)?/
        opts[:port] = $1 || argv.shift

      when /^-o=?(.+)?/, /^--host=?(.+)?/
        opts[:host] = $1 || argv.shift

      when /^-u=?(.+)?/, /^--user=?(.+)?/
        opts[:user] = $1 || argv.shift

      when '-h', '--help'
        puts(help)
        exit

      when '-v', '--version'
        require 'shere/version'
        puts(Shere::VERSION)
        exit

      else
        opts[:root] = arg
      end
    end
    opts
  end

  def help
    optt = options.transpose
    maxn = optt.first.map(&:size).max
    maxd = optt.last .map(&:size).max
    "Usage: shere ROOT\n" +
    options.map{ |(name, desc)|
      if desc.empty?
        name
      else
        sprintf("  %-*s  %-*s", maxn, name, maxd, desc)
      end
    }.join("\n")
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shere-1.0.0 lib/shere/runner.rb