class Dory::Config
Public Class Methods
debug?()
click to toggle source
# File lib/dory/config.rb, line 99 def self.debug? self.settings[:dory][:debug] end
default_filename()
click to toggle source
# File lib/dory/config.rb, line 20 def self.default_filename "#{Dir.home}/.dory.yml" end
default_settings()
click to toggle source
# File lib/dory/config.rb, line 67 def self.default_settings YAML.load(self.default_yaml).with_indifferent_access end
default_yaml()
click to toggle source
# File lib/dory/config.rb, line 28 def self.default_yaml %q(--- dory: # Be careful if you change the settings of some of # these services. They may not talk to each other # if you change IP Addresses. # For example, resolv expects a nameserver listening at # the specified address. dnsmasq normally does this, # but if you disable dnsmasq, it # will make your system look for a name server that # doesn't exist. dnsmasq: enabled: true domains: # array of domains that will be resolved to the specified address - domain: docker # you can set '#' for a wilcard address: 127.0.0.1 # return for queries against the domain container_name: dory_dnsmasq port: 53 # port to listen for dns requests on. must be 53 on linux. can be anything that's open on macos # kill_others: kill processes bound to the port we need (see previous setting 'port') # Possible values: # ask (prompt about killing each time. User can accept/reject) # yes|true (go aheand and kill without asking) # no|false (don't kill, and don't even ask) kill_others: ask service_start_delay: 5 # seconds to wait after restarting systemd services nginx_proxy: enabled: true container_name: dory_dinghy_http_proxy https_enabled: true ssl_certs_dir: '' # leave as empty string to use default certs port: 80 # port 80 is default for http tls_port: 443 # port 443 is default for https resolv: enabled: true nameserver: 127.0.0.1 port: 53 # port where the nameserver listens. On linux it must be 53 ).split("\n").map{|s| s.sub(' ' * 8, '')}.join("\n") end
filename()
click to toggle source
# File lib/dory/config.rb, line 24 def self.filename self.find_config_file(Dir.pwd) end
find_config_file(starting_dir)
click to toggle source
# File lib/dory/config.rb, line 10 def self.find_config_file(starting_dir) if self.has_config_file?(starting_dir) "#{starting_dir}/.dory.yml" elsif starting_dir == "/" return self.default_filename else return self.find_config_file(File.dirname(starting_dir)) # recurse up to / end end
has_config_file?(dir)
click to toggle source
# File lib/dory/config.rb, line 6 def self.has_config_file?(dir) File.exist?("#{dir}/.dory.yml") end
settings(filename = self.filename)
click to toggle source
# File lib/dory/config.rb, line 71 def self.settings(filename = self.filename) if File.exist?(filename) defaults = self.default_settings.dup config_file_settings = YAML.load_file(filename).with_indifferent_access [:dnsmasq, :nginx_proxy, :resolv].each do |service| defaults[:dory][service].merge!(config_file_settings[:dory][service] || {}) end defaults[:dory][:debug] = config_file_settings[:dory][:debug] defaults else self.default_settings end end
upgrade(old_hash)
click to toggle source
# File lib/dory/config.rb, line 103 def self.upgrade(old_hash) newsettings = old_hash.dup # If there's a single domain and address, upgrade to the array format if newsettings[:dory][:dnsmasq][:domain] newsettings[:dory][:dnsmasq][:domains] = [{ domain: newsettings[:dory][:dnsmasq][:domain], address: newsettings[:dory][:dnsmasq][:address] || '127.0.0.1' }] newsettings[:dory][:dnsmasq].delete(:domain) newsettings[:dory][:dnsmasq].delete(:address) end # Add the option to skip prompts unless newsettings[:dory][:dnsmasq][:kill_others] newsettings[:dory][:dnsmasq][:kill_others] = 'ask' end unless newsettings[:dory][:dnsmasq][:service_start_delay] newsettings[:dory][:dnsmasq][:service_start_delay] = 5 end # add settings for nginx proxy port unless newsettings[:dory][:nginx_proxy][:port] newsettings[:dory][:nginx_proxy][:port] = 80 end unless newsettings[:dory][:nginx_proxy][:tls_port] newsettings[:dory][:nginx_proxy][:tls_port] = 443 end newsettings end
upgrade_settings_file(filename = self.filename)
click to toggle source
# File lib/dory/config.rb, line 95 def self.upgrade_settings_file(filename = self.filename) self.write_settings(self.upgrade(self.settings), filename, is_yaml: false) end
write_default_settings_file(filename = self.filename)
click to toggle source
# File lib/dory/config.rb, line 91 def self.write_default_settings_file(filename = self.filename) self.write_settings(self.default_yaml, filename, is_yaml: true) end
write_settings(settings, filename = self.filename, is_yaml: false)
click to toggle source
# File lib/dory/config.rb, line 85 def self.write_settings(settings, filename = self.filename, is_yaml: false) settings = settings.to_yaml unless is_yaml settings.gsub!(/\s*!ruby\/hash:ActiveSupport::HashWithIndifferentAccess/, '') File.write(filename, settings) end