class Shiftzilla::Config

Attributes

groups[R]
org_title[R]
releases[R]
sources[R]
ssh[R]
teams[R]

Public Class Methods

new() click to toggle source
# File lib/shiftzilla/config.rb, line 11
def initialize
  @org_title = cfg_file['OrgTitle']
  @teams     = []
  @groups    = []
  @sources   = []
  group_map  = {}
  cfg_file['Groups'].each do |group|
    gobj = Shiftzilla::Group.new(group)
    @groups << gobj
    group_map[gobj.id] = gobj
  end
  cfg_file['Teams'].each do |team|
    @teams << Shiftzilla::Team.new(team,group_map)
  end
  set_group_components
  cfg_file['Sources'].each do |sid,sinfo|
    @sources << Shiftzilla::Source.new(sid,sinfo)
  end
  # Always track a release for bugs with no target release
  @releases = [Shiftzilla::Release.new({ 'name' => 'All', 'targets' => [] })]
  cfg_file['Releases'].each do |release|
    @releases << Shiftzilla::Release.new(release)
  end
  @releases << Shiftzilla::Release.new({ 'name' => '"---"', 'targets' => ['---'] },true)
  @ssh = {
    :host => cfg_file['SSH']['host'],
    :path => cfg_file['SSH']['path'],
    :url  => cfg_file['SSH']['url'],
  }
end

Public Instance Methods

add_ad_hoc_team(tinfo) click to toggle source
# File lib/shiftzilla/config.rb, line 58
def add_ad_hoc_team(tinfo)
  @teams << Shiftzilla::Team.new(tinfo,{},true)
end
earliest_milestone() click to toggle source
# File lib/shiftzilla/config.rb, line 42
def earliest_milestone
  milestone_boundaries[:earliest]
end
group(gname) click to toggle source
# File lib/shiftzilla/config.rb, line 54
def group(gname)
  @groups.select{ |g| g.id == gname[0] }[0]
end
latest_milestone() click to toggle source
# File lib/shiftzilla/config.rb, line 46
def latest_milestone
  milestone_boundaries[:latest]
end
release(rname) click to toggle source
# File lib/shiftzilla/config.rb, line 62
def release(rname)
  @releases.select{ |r| r.name == rname }[0]
end
release_by_target(tgt) click to toggle source
# File lib/shiftzilla/config.rb, line 66
def release_by_target(tgt)
  return target_map[tgt]
end
team(tname) click to toggle source
# File lib/shiftzilla/config.rb, line 50
def team(tname)
  @teams.select{ |t| t.name == tname }[0]
end

Private Instance Methods

milestone_boundaries() click to toggle source
# File lib/shiftzilla/config.rb, line 84
def milestone_boundaries
  @milestone_boundaries ||= begin
    boundaries = { :earliest => Date.today, :latest => (Date.today - 1800) }
    @releases.each do |release|
      next unless release.uses_milestones?
      ms = release.milestones
      [ms.start,ms.feature_complete,ms.code_freeze,ms.ga].each do |m|
        next if m.date.nil?
        if m.date < boundaries[:earliest]
          boundaries[:earliest] = m.date
        end
        if m.date > boundaries[:latest]
          boundaries[:latest] = m.date
        end
      end
    end
    boundaries
  end
end
set_group_components() click to toggle source
# File lib/shiftzilla/config.rb, line 104
def set_group_components
  @groups.each do |g|
    components = []
    @teams.each do |t|
      if t.group and (t.group.id == g.id)
        components += t.components
      end
    end
    g.set_components(components)
  end
end
target_map() click to toggle source
# File lib/shiftzilla/config.rb, line 72
def target_map
  @target_map ||= begin
    tmap = {}
    @releases.each do |release|
      release.targets.each do |target|
        tmap[target] = release
      end
    end
    tmap
  end
end