Skip to content

Commit

Permalink
Process env_vars in HASH and ARRAY input types
Browse files Browse the repository at this point in the history
Signed-off-by: Athish Pranav D <[email protected]>
  • Loading branch information
Athishpranav2003 committed Aug 6, 2024
1 parent 64595e2 commit af650e3
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions lib/fluent/config/types.rb
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,7 @@ def self.enum_value(val, opts = {}, name = nil)

def self.hash_value(val, opts = {}, name = nil)
return nil if val.nil?
val = Config.process_env_vars(val)

param = if val.is_a?(String)
val.start_with?('{') ? JSON.parse(val) : Hash[val.strip.split(/\s*,\s*/).map{|v| v.split(':', 2)}]
Expand Down Expand Up @@ -226,6 +227,7 @@ def self.hash_value(val, opts = {}, name = nil)

def self.array_value(val, opts = {}, name = nil)
return nil if val.nil?
val = Config.process_env_vars(val)

param = if val.is_a?(String)
val.start_with?('[') ? JSON.parse(val) : val.strip.split(/\s*,\s*/)
Expand All @@ -245,5 +247,16 @@ def self.array_value(val, opts = {}, name = nil)
ARRAY_TYPE = Proc.new { |val, opts = {}, name = nil|
Config.array_value(val, opts, name)
}

def self.process_env_vars(val)
pattern = /#\{ENV\[[^}]+\]\}/
env_vars = val.scan(pattern)
env_vars.each do |env_var|
env_value = ENV[env_var[7..-4]]
raise ConfigError, "Environment variable #{env_var} not found" unless env_value
val.gsub!(env_var, env_value)
end
val
end
end
end

0 comments on commit af650e3

Please sign in to comment.