Class: CodespicuousConfigurator
- Inherits:
-
Object
- Object
- CodespicuousConfigurator
- Defined in:
- lib/codespicuous/codespicuousconfigurator.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#repositories ⇒ Object
readonly
Returns the value of attribute repositories.
-
#repositories_to_check ⇒ Object
readonly
Returns the value of attribute repositories_to_check.
-
#teams ⇒ Object
readonly
Returns the value of attribute teams.
Instance Method Summary collapse
- #configure(argv) ⇒ Object
- #configure_from_yaml ⇒ Object
- #find_alternative_configuration_files ⇒ Object
- #find_alternative_configuration_files_for_committers ⇒ Object
- #find_alternative_configuration_files_for_repositories ⇒ Object
-
#initialize(config) ⇒ CodespicuousConfigurator
constructor
A new instance of CodespicuousConfigurator.
- #parse_command_line_arguments(argv) ⇒ Object
- #postprocess_yaml_configuration(yaml_content) ⇒ Object
- #postprocess_yaml_configuration_committers(yaml_content) ⇒ Object
- #postprocess_yaml_configuration_repositories(yaml_content) ⇒ Object
- #validate_configuration ⇒ Object
Constructor Details
#initialize(config) ⇒ CodespicuousConfigurator
Returns a new instance of CodespicuousConfigurator.
8 9 10 11 12 13 14 15 16 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 8 def initialize(config) @config = config @repositories = Repositories.new @repositories_to_check = Repositories.new @teams = Teams.new end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
6 7 8 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 6 def config @config end |
#repositories ⇒ Object (readonly)
Returns the value of attribute repositories.
6 7 8 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 6 def repositories @repositories end |
#repositories_to_check ⇒ Object (readonly)
Returns the value of attribute repositories_to_check.
6 7 8 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 6 def repositories_to_check @repositories_to_check end |
#teams ⇒ Object (readonly)
Returns the value of attribute teams.
6 7 8 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 6 def teams @teams end |
Instance Method Details
#configure(argv) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 18 def configure(argv) parse_command_line_arguments(argv) yaml_content = configure_from_yaml postprocess_yaml_configuration(yaml_content) find_alternative_configuration_files validate_configuration end |
#configure_from_yaml ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 59 def configure_from_yaml return {} unless File.exist?(config.path_to_configuration_file) puts "** Configuring options with \"#{config.path_to_configuration_file}\"" yaml_content = YAML::load(File.read(config.path_to_configuration_file)) config.offline = yaml_content["offline"] if yaml_content["offline"] yaml_content end |
#find_alternative_configuration_files ⇒ Object
54 55 56 57 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 54 def find_alternative_configuration_files find_alternative_configuration_files_for_repositories find_alternative_configuration_files_for_committers end |
#find_alternative_configuration_files_for_committers ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 121 def find_alternative_configuration_files_for_committers return unless teams.empty? return unless File.exist?("committers.csv") puts '** Configuring committers with "committers.csv"' @teams = Teams.new CSV.parse(File.read("committers.csv"), headers: true) { |row| committer = Committer.create_committer(row["Login"], row["First Name"], row["Last Name"], row["Email"]) team = @teams.team(row["Team"] || "") team.add_member(committer) } end |
#find_alternative_configuration_files_for_repositories ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 84 def find_alternative_configuration_files_for_repositories return unless repositories.empty? return unless File.exist?("repositories.csv") puts '** Configuring repositories with "repositories.csv"' CSV.parse(File.read("repositories.csv"), headers: true) { |row| @repositories.add(Repository.new(row["name"], row["url"])) } end |
#parse_command_line_arguments(argv) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 30 def parse_command_line_arguments(argv) parser = OptionParser.new do | opts | opts.on('-r', '--repositories', "List the repositories the team committed to") do @config.list_repositories = true end opts.on('-i', '--input-dir [dir]', String, "Directory location for input files such as configuration and cache") do |path| @config.input_path = path end opts.on('-o', '--output-dir [dir]', String, "Directory location for output files") do |path| @config.output_path = path end end parser.parse!(argv) end |
#postprocess_yaml_configuration(yaml_content) ⇒ Object
49 50 51 52 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 49 def postprocess_yaml_configuration(yaml_content) postprocess_yaml_configuration_repositories(yaml_content) postprocess_yaml_configuration_committers(yaml_content) end |
#postprocess_yaml_configuration_committers(yaml_content) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 103 def postprocess_yaml_configuration_committers(yaml_content) teams_yaml = yaml_content["teams"] || [] teams_yaml.each do |team_name, team_members| committers = Committers.new team_members.each { |person| committers.add(Committer.create_committer(person["Login"], person["First Name"], person["Last Name"], person["Email"])) } unless committers.empty? new_team = Team.new(team_name) new_team.add_members(committers) @teams.add(new_team) end end end |
#postprocess_yaml_configuration_repositories(yaml_content) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 68 def postprocess_yaml_configuration_repositories(yaml_content) repositories_in_yaml = yaml_content["repositories"] || {} repositories_in_yaml.each { |name, url| @repositories.add(Repository.new(name, url)) } names_of_repositories_to_check = yaml_content["repositories_to_check"] if (names_of_repositories_to_check) @repositories.each { |repository| @repositories_to_check.add(repository) if names_of_repositories_to_check.include?(repository.name) } else @repositories_to_check = @repositories end end |
#validate_configuration ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/codespicuous/codespicuousconfigurator.rb', line 95 def validate_configuration if @repositories.empty? puts "** Error: No repositories configured in \"#{config.path_to_configuration_file}\"" return false end true end |