Sha256: bc06c547f64c2509033da5ccbe0be1a26887b22eac72504231d88d18195ae344

Contents?: true

Size: 1.99 KB

Versions: 1

Compression:

Stored size: 1.99 KB

Contents

#!/usr/bin/env ruby

require 'rubygems'
require 'dav4rack/version'
require 'getoptlong'

def print_help_msg
  print_version_info
  puts "Usage: dav4rack [opts]"
  puts " --help               Print help message"
  puts " --version            Print version information"
  puts " --username name      Set username"
  puts " --password pass      Set password"
  puts " --root /share/path   Set path to share directory"
end

def print_version_info
  puts "DAV 4 Rack - Rack based WebDAV Framework - Version: #{DAV4Rack::VERSION}"
end

opts = GetoptLong.new(
  ['--username', '-u', GetoptLong::REQUIRED_ARGUMENT],
  ['--password', '-p', GetoptLong::REQUIRED_ARGUMENT],
  ['--help', '-h', GetoptLong::NO_ARGUMENT],
  ['--version', '-v', GetoptLong::NO_ARGUMENT],
  ['--root', '-r', GetoptLong::REQUIRED_ARGUMENT]
)

credentials = {}

opts.each do |opt,arg|
  case opt
  when '--help'
    print_help_msg
    exit(0)
  when '--username'
    credentials[:username] = arg
  when '--password'
    credentials[:password] = arg
  when '--root'
    credentials[:root] = arg
    unless(File.exists?(arg) && File.directory?(arg))
      puts "ERROR: Path provided is not a valid directory (#{arg})"
      exit(-1)
    end
  when '--version'
    print_version_info
    exit(0)
  else
    puts "ERROR: Unknown option provided"
    exit(-1)
  end
end

require 'dav4rack'

app = Rack::Builder.new do
  use Rack::ShowExceptions
  use Rack::CommonLogger
  use Rack::Reloader
  use Rack::Lint
  
  run DAV4Rack::Handler.new(credentials)

end.to_app

runners = []
runners << lambda do |x|
  print 'Looking for unicorn... '
  require 'unicorn'
  puts 'OK'
  Unicorn.run(x, :listeners => ["0.0.0.0:3000"])
end
runners << lambda do |x|
  print 'Looking for mongrel... '
  require 'mongrel'
  puts 'OK'
  Rack::Handler::Mongrel.run(x, :Port => 3000)
end
runners << lambda do |x|
  puts 'Loading WEBrick'
  Rack::Handler::WEBrick.run(x, :Port => 3000)
end

begin
  runner = runners.shift
  runner.call(app)
rescue LoadError
  puts 'FAILED'
  retry unless runners.empty?
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dav4rack-0.1.3 bin/dav4rack