Sha256: 77c6c84441f04b01000da4d4a6dc858b9614a63f9b09ff93f6a929651ea5080b

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

if ENV['COVERAGE']
  require 'simplecov'
  require 'simplecov-gem-adapter'
  SimpleCov.start 'gem'
end

require 'chicanery/persistence'
require 'chicanery/collections'
require 'chicanery/handlers'
require 'chicanery/state_comparison'
require 'chicanery/summary'

module Chicanery
  include Persistence
  include Collections
  include Handlers
  include StateComparison

  VERSION = "0.0.9"

  def poll_period seconds=nil
    @poll_period = seconds if seconds
    @poll_period
  end

  def execute args
    load args.shift
    begin
      loop do
        run
        break unless poll_period
        sleep poll_period
      end
    rescue Interrupt
    end
  end

  def run
    previous_state = restore
    current_state = {
      servers: {},
      repos: {}
    }
    repos.each do |repo|
      repo_state = repo.state
      compare_repo_state repo.name, repo_state, previous_state[:repos][repo.name] if previous_state[:repos]
      current_state[:repos][repo.name] = repo_state
    end
    servers.each do |server|
      current_jobs = server.jobs
      compare_jobs current_jobs, previous_state[:servers][server.name] if previous_state[:servers]
      current_state[:servers][server.name] = current_jobs
    end
    current_state.extend Chicanery::Summary
    run_handlers.each {|handler| handler.call current_state, previous_state }
    persist current_state
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chicanery-0.0.9 lib/chicanery.rb