Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
executable file 94 lines (76 sloc) 1.94 KB
#!/usr/bin/env ruby
# encoding: UTF-8
require 'optparse'
require 'vines'
COMMANDS = %w[start stop restart init bcrypt cert ldap schema]
def parse(args)
options = {}
parser = OptionParser.new do |opts|
opts.banner = "Usage: vines [options] #{COMMANDS.join('|')}"
opts.separator ""
opts.separator "Daemon options:"
opts.on('-d', '--daemonize', 'Run daemonized in the background') do |daemonize|
options[:daemonize] = daemonize
end
options[:log] = 'log/vines.log'
opts.on('-l', '--log FILE', 'File to redirect output (default: log/vines.log)') do |log|
options[:log] = log
end
options[:pid] = 'pid/vines.pid'
opts.on('-P', '--pid FILE', 'File to store PID (default: pid/vines.pid)') do |pid|
options[:pid] = pid
end
opts.separator ""
opts.separator "Common options:"
opts.on('-h', '--help', 'Show this message') do |help|
options[:help] = help
end
opts.on('-v', '--version', 'Show version') do |version|
options[:version] = version
end
end
begin
parser.parse!(args)
rescue
puts parser
exit(1)
end
if options[:version]
puts Vines::VERSION
exit
end
if options[:help]
puts parser
exit
end
command = args.shift
unless COMMANDS.include?(command)
puts parser
exit(1)
end
options.tap do |opts|
opts[:args] = args
opts[:command] = command
opts[:config] = File.expand_path('conf/config.rb')
opts[:pid] = File.expand_path(opts[:pid])
opts[:log] = File.expand_path(opts[:log])
end
end
def check_config(opts)
return if %w[bcrypt init].include?(opts[:command])
unless File.exists?(opts[:config])
puts "No config file found at #{opts[:config]}"
exit(1)
end
end
opts = parse(ARGV)
check_config(opts)
command = Vines::Command.const_get(opts[:command].capitalize).new
begin
command.run(opts)
rescue SystemExit
# do nothing
rescue Exception => e
puts e.message
exit(1)
end
Jump to Line
Something went wrong with that request. Please try again.