class Jets::Dotenv

def self.load!(remote=false)

def self.load!(remote=false)
  new(remote).load!
end

def dotenv_files


- .env - The original (lowest)
- .env.local - This file is loaded for all environments _except_ `test` or unless JETS_ENV_REMOTE=1
- .env.development
- .env.development.local (unless JETS_ENV_REMOTE=1)
- .env.development.remote (2nd highest, only if JETS_ENV_REMOTE=1)
- .env.development.jets_env_extra (highest)

dotenv files with the following precedence:
def dotenv_files
  files = [
    root.join(".env"),
    (root.join(".env.local") unless (Jets.env.test? || @remote)),
    root.join(".env.#{Jets.env}"),
    (root.join(".env.#{Jets.env}.local") unless @remote),
  ]
  files << root.join(".env.#{Jets.env}.remote") if @remote
  if ENV["JETS_ENV_EXTRA"]
    files << root.join(".env.#{Jets.env}.#{ENV["JETS_ENV_EXTRA"]}")
  end
  files.compact
end

def initialize(remote=false)

def initialize(remote=false)
  @remote = ENV['JETS_ENV_REMOTE'] || remote
end

def load!

def load!
  return if on_aws? # this prevents ssm calls if used in dotenv files
  vars = ::Dotenv.load(*dotenv_files)
  Ssm.new(vars).interpolate!
end

def on_aws?

def on_aws?
  !!ENV['_HANDLER'] # https://docs.aws.amazon.com/lambda/latest/dg/lambda-environment-variables.html
end

def root

def root
  Jets.root || Pathname.new(ENV["JETS_ROOT"] || Dir.pwd)
end