Sha256: 423a4395a23b335a3adde1df4008d1dba0f1dd706bb5197f3f5fe5494c416191
Contents?: true
Size: 978 Bytes
Versions: 3
Compression:
Stored size: 978 Bytes
Contents
module GitCommands class Aggregator PATTERN = ENV.fetch("AGGREGATE_PATTERN") { "release/<timestamp>" } NAME = ENV["AGGREGATE_NAME"] class InvalidPatternError < ArgumentError; end def initialize(name: NAME, pattern: PATTERN) @name = name @pattern = check_pattern(pattern) define_methods end def timestamp @timestamp ||= Time.new.strftime("%Y%m%d") end def call return @name if @name @pattern.gsub(/<[\w_]+>/) do |part| msg = part.gsub(/<|>/, "") send(msg) end end private def check_pattern(pattern) fail InvalidPatternError unless pattern.match(/<\w+>/) pattern end private def pattern_methods @methods ||= @pattern.scan(/<(\w+)>/).flatten - ["timestamp"] end def define_methods pattern_methods.each do |name| define_singleton_method(name) do ENV.fetch(name.upcase) { "" } end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
git_commands-3.5.3 | lib/git_commands/aggregator.rb |
git_commands-3.5.2 | lib/git_commands/aggregator.rb |
git_commands-3.5.1 | lib/git_commands/aggregator.rb |