class Dug::Configurator

Attributes

application_credentials_file[RW]
client_id[RW]
client_secret[RW]
label_rules[RW]
processed_label_name[RW]
token_store[RW]
unprocessed_label_name[RW]

Public Class Methods

new() click to toggle source
# File lib/dug/configurator.rb, line 14
def initialize
  @label_rules = {}
  LABEL_RULE_TYPES.each do |type|
    label_rules[Util.pluralize(type)] = {}
  end
end

Public Instance Methods

_clear!() click to toggle source
# File lib/dug/configurator.rb, line 74
def _clear!
  %w(
    application_credentials_file
    client_id
    client_secret
    token_store
    unprocessed_label_name
    rule_file
  ).each do |var|
    instance_variable_set("@#{var}", nil)
  end

  initialize
end
label_for(type, name, opts={}) click to toggle source
# File lib/dug/configurator.rb, line 55
def label_for(type, name, opts={})
  type = type.to_s
  run_validations(type, name)

  rule = label_rules[Util.pluralize(type)][name]
  case rule
  when String, nil
    rule
  when Array
    if type == 'repository'
      raise ArgumentError, "Multiple remotes possible and no remote specified" unless opts.keys.include?(:remote)
      rule = rule.detect do |r|
        r['remote'] == opts[:remote]
      end
      rule['label'] if rule
    end
  end
end
rule_file() click to toggle source
# File lib/dug/configurator.rb, line 45
def rule_file
  @rule_file
end
rule_file=(file_path) click to toggle source
# File lib/dug/configurator.rb, line 49
def rule_file=(file_path)
  @rule_file = file_path
  load_rules
  @rule_file
end

Private Instance Methods

load_rules() click to toggle source
# File lib/dug/configurator.rb, line 93
def load_rules
  # TODO should validate incoming YAML
  loaded_rules = YAML.load_file(rule_file)

  LABEL_RULE_TYPES.each do |type|
    type = Util.pluralize(type)
    @label_rules[type] = loaded_rules[type] if loaded_rules[type]
  end

  @label_rules
end
run_validations(type, name) click to toggle source
# File lib/dug/configurator.rb, line 105
def run_validations(type, name)
  validate_rule_type!(type)
  validate_reason!(name) if type == 'reason'
  validate_state!(name) if type == 'state'
end