#!/usr/bin/env ruby # encoding: UTF-8 require 'optparse' require 'restartable' options = {} option_parser = OptionParser.new do |op| op.banner = <<-TEXT #{op.program_name} v#{Restartable.version} Usege: #{op.program_name} [options] command [arg…] TEXT op.on('-r', '--on-restart CMD', 'Run CMD on restart') do |cmd| (options[:on_restart] ||= []) << proc{ system cmd } end op.separator nil op.on_tail('-h', '--help', 'Show full help') do puts option_parser.help exit end op.on_tail('--version', 'Show version') do puts Restartable.version exit end end begin option_parser.order! fail OptionParser::ParseError, 'No command to run' if ARGV.empty? rescue OptionParser::ParseError => e abort "#{e}\n\n#{option_parser.help}" end Restartable.new(options) do exec(*ARGV) end