Sha256: 1ac1f0a969ca40347890639728121332cb5f57089926b3b6072f77192143f821
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
# frozen_string_literal: true require 'psych' require 'pathname' require 'base64' class EnvVariablesService class << self def substitute_env_variables(compose_file_data) compose_file_data.gsub(/\${1,2}\{?([?:\-_A-Za-z0-9]+)\}?/) do |variable| next variable if variable.start_with?('$$') variable_content = variable.match(/[?:\-_A-Za-z0-9]+/).to_s fetch_variable_value(variable_content) end end private def fetch_variable_value(variable_content) variable_name = variable_content.match(/^[_A-Za-z0-9]+/).to_s variable_value = ENV[variable_name] return variable_value unless variable_value.nil? return fetch_variable_default_value(variable_content) if variable_has_default_value?(variable_content) error_message = if variable_has_error_message?(variable_content) fetch_env_error_message(variable_content) else "Environment variable #{variable_name} doesn't exist" end raise StandardError.new(error_message) end def variable_has_default_value?(variable_content) variable_content.include?('-') end def fetch_variable_default_value(variable_content) variable_content.split('-', 2).last end def variable_has_error_message?(variable_content) variable_content.include?('?') end def fetch_env_error_message(variable_content) variable_content.split('?', 2).last end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
uffizzi-cli-1.0.5 | lib/uffizzi/services/env_variables_service.rb |