jamesrwhite/minicron

View on GitHub
server/bin/minicron-server

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby
require 'insidious'
require_relative '../lib/minicron'
require Minicron::REQUIRE_PATH + 'cli'
require Minicron::REQUIRE_PATH + 'transport/server'

# Set the process name to something more useful
$PROGRAM_NAME = "minicron-server #{ARGV.join(' ')}"

begin
  # Capture any output from STDERR so we can handle it how we want to
  Minicron.capture_output(type: :stderr) do
    # Run the CLI and pass it all arguments passed to us
    Minicron::CLI.run(ARGV) do |output|
      print output
      STDOUT.flush
    end
  end
# Handle ctrl-c and other nasty interruptions
rescue Interrupt, SignalException
  puts "\n[CONTROL] Exiting.."

  # Stop the daemon if it's running i.e tidy up the pid file
  insidious = Insidious.new(pid_file: Minicron.config['server']['pid_file'] || '/tmp/minicron.pid')

  insidious.stop! if insidious.running?
# Accept failure
rescue Exception => e
  $stderr.write("#{e.message}\n")

  if Minicron.config['debug']
    puts
    raise e
  end

  exit(1)
end