module Slugrunner::CLI

Public Instance Methods

run() click to toggle source
# File lib/slugrunner/cli.rb, line 7
def run
  opts = Trollop::options do
    opt :slug, 'Slug file', type: :string
    opt :worker, 'Worker type', type: :string, default: 'web'
    opt :instance, 'Instance number', default: 1
    opt :delayed_bind, 'Port bind allowance', default: 0
    opt :ping, 'Notify state updates', type: :string
    opt :ping_interval, 'Update interval in seconds', default: 30
    opt :env, 'Append to environment', type: :strings
    opt :bash, 'Run interactive shell', default: false
  end

  Trollop::die :slug, "must be present" if opts[:slug].nil?
  Trollop::die :worker, "must be present" if opts[:worker].nil?

  runner = Slugrunner::Runner.new(opts[:slug], opts[:worker], opts[:instance])

  unless opts[:ping].nil?
    runner.ping_url = opts[:ping]
    runner.ping_interval = opts[:ping_interval]
  end

  runner.shell = opts[:bash]
  runner.extra_env = opts[:env] if opts[:env]

  if opts[:delayed_bind] > 0
    runner.bind_delay = opts[:delayed_bind]
  end

  # will setup/forward signals and block until stopped
  exit(runner.run)
end