Sha256: 76b1fb71ade4c15589bd9d7ff7e4f728862c7f28101311302cdd29c1e452aaf9
Contents?: true
Size: 1.25 KB
Versions: 3
Compression:
Stored size: 1.25 KB
Contents
require "English" module Dotenv module Substitutions # Substitute shell commands in a value. # # SHA=$(git rev-parse HEAD) # module Command class << self INTERPOLATED_SHELL_COMMAND = / (?<backslash>\\)? # is it escaped with a backslash? \$ # literal $ (?<cmd> # collect command content for eval \( # require opening paren (?:[^()]|\g<cmd>)+ # allow any number of non-parens, or balanced # parens (by nesting the <cmd> expression # recursively) \) # require closing paren ) /x def call(value, _env) # Process interpolated shell commands value.gsub(INTERPOLATED_SHELL_COMMAND) do |*| # Eliminate opening and closing parentheses command = $LAST_MATCH_INFO[:cmd][1..-2] if $LAST_MATCH_INFO[:backslash] # Command is escaped, don't replace it. $LAST_MATCH_INFO[0][1..] else # Execute the command and return the value `#{command}`.chomp end end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dotenv-3.1.7 | lib/dotenv/substitutions/command.rb |
dotenv-3.1.6 | lib/dotenv/substitutions/command.rb |
dotenv-3.1.5 | lib/dotenv/substitutions/command.rb |