lib/lono/core.rb in lono-4.1.0 vs lib/lono/core.rb in lono-4.2.0
- old
+ new
@@ -1,27 +1,45 @@
require 'pathname'
module Lono
module Core
+ extend Memoist
autoload :Config, 'lono/core/config'
- @@config = nil
def config
- @@config ||= Config.new
+ Config.new
end
+ memoize :config
def root
path = ENV['LONO_ROOT'] || '.'
Pathname.new(path)
end
+ memoize :root
- @@env = nil
def env
- return @@env if @@env
ufo_env = env_from_profile(ENV['AWS_PROFILE']) || 'development'
ufo_env = ENV['LONO_ENV'] if ENV['LONO_ENV'] # highest precedence
- @@env = ufo_env
+ ufo_env
end
+ memoize :env
+
+ # Precedence (highest to lowest)
+ # 1. LONO_SUFFIX
+ # 2. .current/lono
+ # 3. config/settings.yml
+ def suffix
+ suffix = ENV['LONO_SUFFIX'] # highest precedence
+ suffix ||= Cfn::Current.suffix
+ unless suffix
+ settings = Setting.new.data
+ suffix ||= settings["stack_name_suffix"] # lowest precedence
+ end
+
+ return if suffix&.empty?
+ suffix
+ end
+ memoize :suffix
private
# Do not use the Setting class to load the profile because it can cause an
# infinite loop then if we decide to use Lono.env from within settings class.
def env_from_profile(aws_profile)