Sha256: 40a37c2d49018e04071e22ec18fe5df06c940b6de7ede9433f6cc6c928298f28

Contents?: true

Size: 1.82 KB

Versions: 1

Compression:

Stored size: 1.82 KB

Contents

#!/usr/bin/env ruby

# Trap interrupts to quit cleanly
Signal.trap('INT') { abort }

lib = File.expand_path('../../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

# Store a list of options given by the OptionParser
options = {
  sleep: 1_000,
}

# Make our OptionParser (we haven't loaded Falcore yet)
require 'optparse'
parser = OptionParser.new do |opts|
  opts.banner = "Usage: #{$PROGRAM_NAME} [OPTIONS]"

  opts.on('-c', '--config [PATH]', 'Path to a Falcore config') do |path|
    options[:config] = File.expand_path(path, Dir.pwd)
  end

  opts.on('-d', '--daemon', 'Run process as a daemon') do
    options[:daemon] = true
  end

  opts.on('-s', '--sleep [TIME]', 'Time (ms) to sleep before recalculating') do |value|
    options[:sleep] = value.to_f
  end

  opts.on_tail('-h', '--help', 'Show this message') do
    puts opts
    exit(0)
  end

  opts.on_tail('-v', '--version', 'Show current Falcore version') do
    require 'falcore/version'
    puts Falcore::VERSION
    exit(0)
  end
end

# Parse the options
begin
  parser.parse!

  # Raise an exception if we have not be given a config path
  raise OptionParser::MissingArgument, '--config' if options[:config].nil?
rescue OptionParser::InvalidOption,
       OptionParser::MissingArgument => e
  puts e.to_s
  puts
  puts parser
  exit(1)
end

# If we got this far, we should actually load up Falcore
require 'falcore'

# Load the config before looping. If you change the config, restart the process.
# Config parsing is rather expensive.
config = Falcore::Config.from_file(options[:config])

# Run as a daemon if we asked to
if options[:daemon]
  Process.daemon(true)
end

# Just keep swimming...
loop do
  master = Falcore::Aggregator.new(config).run

  unless config.statsd.nil?
    Falcore::Dumper::Statsd.new(config, master).run
  end

  sleep(options[:sleep]/1_000)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
falcore-0.1.1 bin/falcore