Class: Skylight::Core::UserConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/skylight/core/user_config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ UserConfig

Returns a new instance of UserConfig.


8
9
10
11
12
# File 'lib/skylight/core/user_config.rb', line 8

def initialize(config)
  @config = config
  @file_path = nil
  reload
end

Instance Attribute Details

#disable_dev_warningObject

Returns the value of attribute disable_dev_warning


6
7
8
# File 'lib/skylight/core/user_config.rb', line 6

def disable_dev_warning
  @disable_dev_warning
end

#disable_env_warningObject

Returns the value of attribute disable_env_warning


6
7
8
# File 'lib/skylight/core/user_config.rb', line 6

def disable_env_warning
  @disable_env_warning
end

Instance Method Details

#disable_dev_warning?Boolean

Returns:

  • (Boolean)

30
31
32
# File 'lib/skylight/core/user_config.rb', line 30

def disable_dev_warning?
  disable_dev_warning || ENV["SKYLIGHT_DISABLE_DEV_WARNING"] =~ /^true$/i
end

#disable_env_warning?Boolean

Returns:

  • (Boolean)

34
35
36
# File 'lib/skylight/core/user_config.rb', line 34

def disable_env_warning?
  disable_env_warning
end

#file_pathObject


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/skylight/core/user_config.rb', line 14

def file_path
  return @file_path if @file_path

  config_path = @config[:user_config_path] || begin
    require "etc"
    home_dir = ENV["HOME"] || Etc.getpwuid.dir || (ENV["USER"] && File.expand_path("~#{ENV['USER']}"))
    if home_dir
      File.join(home_dir, ".skylight")
    else
      raise ConfigError, "The Skylight `user_config_path` must be defined since the home directory cannot be inferred"
    end
  end

  @file_path = File.expand_path(config_path)
end

#reloadObject


38
39
40
41
42
43
44
# File 'lib/skylight/core/user_config.rb', line 38

def reload
  config = File.exist?(file_path) ? YAML.load_file(file_path) : false
  return unless config

  self.disable_dev_warning = !!config["disable_dev_warning"]
  self.disable_env_warning = !!config["disable_env_warning"]
end

#saveObject


46
47
48
49
50
51
# File 'lib/skylight/core/user_config.rb', line 46

def save
  FileUtils.mkdir_p(File.dirname(file_path))
  File.open(file_path, "w") do |f|
    f.puts YAML.dump(to_hash)
  end
end

#to_hashObject


53
54
55
56
57
58
# File 'lib/skylight/core/user_config.rb', line 53

def to_hash
  {
    "disable_dev_warning" => disable_dev_warning,
    "disable_env_warning" => disable_env_warning
  }
end