ryanuber/oaf

View on GitHub
bin/oaf

Summary

Maintainability
Test Coverage
#!/usr/bin/ruby

require 'optparse'
require 'oaf'

options = {
  :port => 9000,
  :default_response => ''
}

begin
  OptionParser.new do |opts|
    opts.banner = [
      'oaf - Care-free web app prototyping using files and scripts',
      '', 'SYNOPSIS:', '  oaf [options] [path]', '', 'OPTIONS:'].join "\n"
    opts.on('-p', '--port PORT', 'Listening port. Default=9000') do |v|
      if not v.to_i.to_s == v.to_s
        puts "Port number must be an integer"
        exit 1
      end
      options[:port] = v.to_s
      ARGV.shift
    end
    opts.on('--default-response FILE', 'Path to default response file') do |v|
      options[:default_response] = v.to_s
      ARGV.shift
    end
    opts.on('--version', 'Show the version number') do
      puts Oaf::VERSION
      exit 0
    end
    opts.on_tail('-h', '--help', 'Show this message') do
      puts opts
      exit 0
    end
  end.parse!
rescue OptionParser::InvalidOption => e
  puts e.message
  exit 1
end

if ARGV.length == 0
  options[:path] = Dir.pwd
elsif ARGV.length == 1
  options[:path] = File.expand_path ARGV[0]
else
  puts "Unknown arguments: #{ARGV[1..ARGV.length].join(' ')}"
  exit 1
end

Oaf::HTTPServer.serve options