Class: Kaiser::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/kaiser/config.rb

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject (readonly)

Returns the value of attribute config.



9
10
11
# File 'lib/kaiser/config.rb', line 9

def config
  @config
end

.config_dirObject (readonly)

Returns the value of attribute config_dir.



9
10
11
# File 'lib/kaiser/config.rb', line 9

def config_dir
  @config_dir
end

.config_fileObject (readonly)

Returns the value of attribute config_file.



9
10
11
# File 'lib/kaiser/config.rb', line 9

def config_file
  @config_file
end

.info_outObject

Returns the value of attribute info_out.



6
7
8
# File 'lib/kaiser/config.rb', line 6

def info_out
  @info_out
end

.kaiserfileObject (readonly)

Returns the value of attribute kaiserfile.



9
10
11
# File 'lib/kaiser/config.rb', line 9

def kaiserfile
  @kaiserfile
end

.outObject

Returns the value of attribute out.



6
7
8
# File 'lib/kaiser/config.rb', line 6

def out
  @out
end

.work_dirObject (readonly)

Returns the value of attribute work_dir.



9
10
11
# File 'lib/kaiser/config.rb', line 9

def work_dir
  @work_dir
end

Class Method Details

.always_verbose?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/kaiser/config.rb', line 50

def always_verbose?
  @config[:always_verbose]
end

.load(work_dir, use_kaiserfile: true) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/kaiser/config.rb', line 15

def load(work_dir, use_kaiserfile: true)
  @work_dir = work_dir
  @config_dir = "#{ENV['HOME']}/.kaiser"

  migrate_dotted_config_files

  FileUtils.mkdir_p @config_dir
  @config_file = "#{@config_dir}/config.yml"

  @config = {
    envnames: {},
    envs: {},
    networkname: 'kaiser_net',
    shared_names: {
      redis: 'kaiser-redis',
      nginx: 'kaiser-nginx',
      chrome: 'kaiser-chrome',
      dns: 'kaiser-dns',
      certs: 'kaiser-certs'
    },
    largest_port: 9000,
    always_verbose: false
  }

  load_config

  if use_kaiserfile
    @kaiserfile = Kaiserfile.new("#{@work_dir}/Kaiserfile")
    alt_kaiserfile = "#{ENV['HOME']}/kaiserfiles/Kaiserfile.#{@config[:envnames][work_dir]}"
    @kaiserfile = Kaiserfile.new(alt_kaiserfile) if File.exist?(alt_kaiserfile)
  end

  @config
end

.load_configObject



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/kaiser/config.rb', line 69

def load_config
  loaded = YAML.load_file(@config_file) if File.exist?(@config_file)

  config_shared_names = @config[:shared_names] if @config
  loaded_shared_names = loaded[:shared_names] if loaded

  @config = {
    **(@config || {}),
    **(loaded || {}),
    shared_names: { **(config_shared_names || {}), **(loaded_shared_names || {}) }
  }
end

.migrate_dotted_config_filesObject

Up until version 0.5.1, kaiser used dotfiles for all of it configuration. It makes sense of hide the configuration directory itself but hiding the files inside of it just causes confusion.

Kaiser 0.5.2 started using non-dotted files instead. This method renames the old files in case you have just upgraded from an older version.



60
61
62
63
64
65
66
67
# File 'lib/kaiser/config.rb', line 60

def migrate_dotted_config_files
  return unless File.exist?("#{@config_dir}/.config.yml")

  Dir["#{@config_dir}/**/.*"].each do |x|
    dest = x.sub(%r{/\.([a-z.]+)$}, '/\1')
    FileUtils.mv x, dest
  end
end