Class: Forger::Setting

Inherits:
Object
  • Object
show all
Defined in:
lib/forger/setting.rb

Constant Summary collapse

@@data =

data contains the settings.yml config. The order or precedence for settings is the project lono/settings.yml and then the ~/.lono/settings.yml.

nil

Instance Method Summary collapse

Constructor Details

#initialize(check_project = true) ⇒ Setting

Returns a new instance of Setting.



5
6
7
# File 'lib/forger/setting.rb', line 5

def initialize(check_project=true)
  @check_project = check_project
end

Instance Method Details

#dataObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/forger/setting.rb', line 12

def data
  return @@data if @@data

  if @check_project && !File.exist?(project_settings_path)
    puts "ERROR: No settings file at #{project_settings_path}.  Are you sure you are in a forger project?".color(:red)
    exit 1
  end

  all_envs = load_file(project_settings_path)
  all_envs = merge_base(all_envs)
  @@data = all_envs[Forger.env] || all_envs["base"] || {}
  @@data = flatten_s3_folder(@@data)
  @@data
end

#flatten_s3_folder(data) ⇒ Object

So we can access settings transparently



28
29
30
31
32
33
34
# File 'lib/forger/setting.rb', line 28

def flatten_s3_folder(data)
  # data = data.clone
  if data['s3_folder'].is_a?(Hash)
    data['s3_folder'] = s3_folder
  end
  data
end

#s3_folderObject

Special helper method to support multiple formats for s3_folder setting. Format 1: Simple String

development:
  s3_folder: mybucket/path/to/folder

Format 2: Hash

development:
  s3_folder:
    default: mybucket/path/to/folder
    dev_profile1: mybucket/path/to/folder
    dev_profile1: another-bucket/storage/path


50
51
52
53
54
55
56
# File 'lib/forger/setting.rb', line 50

def s3_folder
  s3_folder = data['s3_folder']
  return s3_folder if s3_folder.nil? or s3_folder.is_a?(String)

  # If reach here then the s3_folder is a Hash
  s3_folder[ENV['AWS_PROFILE']] || s3_folder["default"]
end