Sha256: 2f66908c075e3dc7c520493f811d804a97858a9750c5f5d8ebfd858c3c49cedd

Contents?: true

Size: 1.97 KB

Versions: 7

Compression:

Stored size: 1.97 KB

Contents

#!/usr/bin/env ruby

require 'rubygems'
require 'optparse'
require 'thin'

options = {
  :env => 'development'
}
optparse = OptionParser.new do |opts|

opts.banner = <<BANNER
Usage:
deltacloudd -i <driver> [options]

Options:
BANNER
  opts.on( '-i', '--driver DRIVER', 'Driver to use') do |driver|
    ENV["API_DRIVER"] = driver
  end
  opts.on( '-r', '--hostname HOSTNAME',
           'Bind to HOST address (default: localhost)') do |host|
    ENV["API_HOST"] = host
  end
  opts.on( '-p', '--port PORT', 'Use PORT (default: 3001)') do |port|
    ENV["API_PORT"] = port
  end
  opts.on( '-e', '--env ENV', 'Environment (default: "development")') { |env| options[:env] = env }
  opts.on( '-h', '--help', '') { options[:help] = true }
end

optparse.parse!

if options[:help]
 puts optparse
 exit(0)
end

unless ENV["API_DRIVER"]
  puts "You need to specify a driver to use (-i <driver>)"
  exit(1)
end

ENV["API_HOST"] = "localhost" unless ENV["API_HOST"]
ENV["API_PORT"] = "3001" unless ENV["API_PORT"]

dirname="#{File.dirname(__FILE__)}/.."

argv_opts = ARGV.clone
argv_opts << ['start'] unless Thin::Runner.commands.include?(options[0])
argv_opts << ['--address', ENV["API_HOST"] ]
argv_opts << ['--port', ENV["API_PORT"] ]
argv_opts << ['--rackup', 'config.ru' ]
argv_opts << ['--chdir', dirname ]
argv_opts << ['-e', options[:env] ]
argv_opts << ['--threaded', '-D', '--stats', '/stats']

argv_opts.flatten!

if options[:env] == "development"
  use_rerun = false
  begin
    require "rerun"
    use_rerun = true
  rescue
    # Do nothing
  end
end

puts "Starting Deltacloud API :: #{ENV["API_DRIVER"]} :: http://#{ENV["API_HOST"]}:#{ENV["API_PORT"]}/api"
puts

if use_rerun
  argv_opts.unshift "thin"
  command = argv_opts.join(" ")
  topdir = File::expand_path(File::join(File::dirname(__FILE__), ".."))
  rerun = Rerun::Runner.new(command, :dir => topdir)
  rerun.start
  rerun.join
else
  thin = Thin::Runner.new(argv_opts)

  begin
    thin.run!
  rescue Exception => e
    puts "ERROR: #{e.message}"
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
deltacloud-core-0.0.5 bin/deltacloudd
deltacloud-core-0.0.4 bin/deltacloudd
bbrowning-deltacloud-core-0.0.3.1 bin/deltacloudd
bbrowning-deltacloud-core-0.0.1.1 bin/deltacloudd
deltacloud-core-0.0.3 bin/deltacloudd
deltacloud-core-0.0.2 bin/deltacloudd
deltacloud-core-0.0.1 bin/deltacloudd