Module: GhaConfig::Parser
- Defined in:
- lib/gha_config/parser.rb
Class Method Summary collapse
Class Method Details
.parse(input_file) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/gha_config/parser.rb', line 3 def self.parse(input_file) input = File.read(input_file) input.gsub!(/(^|\n)on:/, %(\n"on":)) hash = YAML.safe_load(input) config = GhaConfig::Config.new config.defaults = hash.delete('_defaults_') || {} config. = hash.delete('_options_') || {} config.variables = hash.delete('_variables_') || {} config.env = hash.delete('env') || {} hash['jobs'] = replace_defaults(config, hash['jobs']) config.parsed_config = hash config end |
.replace_defaults(config, hash) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/gha_config/parser.rb', line 18 def self.replace_defaults(config, hash) if hash.is_a?(Array) return hash.map { |v| self.replace_defaults(config, v)}.compact.flatten elsif hash.is_a?(Hash) return hash.map { |k, v| [k, self.replace_defaults(config, v)] }.to_h end return hash unless hash.is_a?(String) && hash =~ /_.*_/ return hash unless config.defaults.key?(hash) val = config.defaults[hash] if val.is_a?(Array) val.map { |v| self.replace_defaults(config, v) }.flatten else self.replace_defaults(config, val) end end |