Module: Dotenv::Substitutions::Command
- Defined in:
- lib/dotenv/substitutions/command.rb
Overview
Substitute shell commands in a value.
SHA=$(git rev-parse HEAD)
Constant Summary collapse
- 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
Class Method Summary collapse
Class Method Details
.call(value, _env, overwrite: false) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/dotenv/substitutions/command.rb', line 23 def call(value, _env, overwrite: false) # 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 |