lib/team.rb (58 lines of code) (raw):

require 'yaml' class Team TEAM_MEMBER_FIELDS = %i[ backend frontend quality ux pm group technical_writing data_analyst app_sec digital_success support sre ] FIELDS = %i[ label project owner template mention_team mention_team_on_creation create_discussions create_individual_discussions confidential discussions query_all_groups additional_label ] + TEAM_MEMBER_FIELDS TeamInfo = Struct.new(:name, *FIELDS) do def template self[:template] || 'default' end def confidential? !!self[:confidential] end def query_all_groups? !!self[:query_all_groups] end end def self.find(team_name) as_team_info(team_name, hash_from_file.fetch(team_name)) end def self.all hash_from_file.map(&method(:as_team_info)) end def self.reset! @hash_from_file = nil end private def self.hash_from_file @hash_from_file ||= YAML.load_file('teams.yml') end def self.as_team_info(team_name, team_hash) TeamInfo.new(team_name, *team_hash.values_at(*FIELDS.map(&:to_s))) end end