Sha256: 01534f6743caf470e729f3acb99293b9f82412aa3792a61f7d04040b765121d6

Contents?: true

Size: 1.01 KB

Versions: 22

Compression:

Stored size: 1.01 KB

Contents

class Kamal::Secrets::Dotenv::InlineCommandSubstitution
  class << self
    def install!
      ::Dotenv::Parser.substitutions.map! { |sub| sub == ::Dotenv::Substitutions::Command ? self : sub }
    end

    def call(value, _env, overwrite: false)
      # Process interpolated shell commands
      value.gsub(Dotenv::Substitutions::Command.singleton_class::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
          if command =~ /\A\s*kamal\s*secrets\s+/
            # Inline the command
            inline_secrets_command(command)
          else
            # Execute the command and return the value
            `#{command}`.chomp
          end
        end
      end
    end

    def inline_secrets_command(command)
      Kamal::Cli::Main.start(command.shellsplit[1..] + [ "--inline" ]).chomp
    end
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
kamal-2.5.3 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.5.2 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.5.1 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.5.0 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.4.0 lib/kamal/secrets/dotenv/inline_command_substitution.rb
nocoffee-kamal-2.3.0.3 lib/kamal/secrets/dotenv/inline_command_substitution.rb
nocoffee-kamal-2.3.0.2 lib/kamal/secrets/dotenv/inline_command_substitution.rb
nocoffee-kamal-2.3.0.1 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.3.0 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.2.2 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.2.1 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.2.0 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.1.2 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.1.1 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.1.0 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.0.0 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.0.0.rc4 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.0.0.rc3 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.0.0.rc2 lib/kamal/secrets/dotenv/inline_command_substitution.rb
kamal-2.0.0.rc1 lib/kamal/secrets/dotenv/inline_command_substitution.rb