class ErrandBoy::Brain

Public Class Methods

new() click to toggle source
# File lib/errand_boy/brain.rb, line 3
def initialize
  @git = Git.new(Dir.pwd)
  @requests = requests
end

Public Instance Methods

command() click to toggle source
# File lib/errand_boy/brain.rb, line 8
def command
  case @git.branch
  when /master/ then run
  when /.*request.*/ then validate
  end
end
run() click to toggle source
# File lib/errand_boy/brain.rb, line 15
def run
  @requests.each do |request|
    gateway = Gateway.build(request)
    csv = CSV.build(request)

    gateway.call
    next if processed?(gateway, csv)

    csv.push
    request.delete
    @git.commit "[auto][ci skip] add request to index"
    @git.push
  end
end
validate() click to toggle source
# File lib/errand_boy/brain.rb, line 30
def validate
  @requests.each do |request|
    Validator.build(request).run
    request.rename

    @git.commit '[auto][ci skip] rename request file'
    @git.push
  end
end

Private Instance Methods

entries() click to toggle source
# File lib/errand_boy/brain.rb, line 46
def entries
  Dir.glob("#{Request.dir}/*.toml").sort
end
processed?(gateway, csv) click to toggle source
# File lib/errand_boy/brain.rb, line 50
def processed?(gateway, csv)
  gateway.processed? && csv.duplicated?
end
requests() click to toggle source
# File lib/errand_boy/brain.rb, line 42
def requests
  entries.map {|path| Request.new(path) }
end