class MacSetup::DefaultsInstaller
Public Class Methods
new(defaults_file, config, status)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 14 def initialize(defaults_file, config, status) @defaults = YAML.load_file(defaults_file) @config = config @status = status end
run(config, status)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 3 def self.run(config, status) defaults_file = File.join(MacSetup.dotfiles_path, "mac_setup/defaults.yml") if File.exist?(defaults_file) MacSetup.log "Setting defaults..." new(defaults_file, config, status).run else MacSetup.log "No config file at #{MacSetup.shorten_path(defaults_file)}. Skipping..." end end
Public Instance Methods
run()
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 20 def run @defaults.each do |domain, values| MacSetup.log "Setting defaults for domain #{domain}..." set_defaults(domain, values) end end
Private Instance Methods
extract_array_values(string)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 69 def extract_array_values(string) string.split("\n")[1..-2].map { |line| line.lstrip.gsub(/(^")|(",?$)/, "") } end
qualify_value(value)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 73 def qualify_value(value) case value when Integer "-int #{value}" when Float "-float #{value}" when TrueClass, FalseClass "-bool #{value}" when Array values = value.map { |val| "'#{val}'" }.join(" ") "-array #{values}" when String "-string '#{value}'" end end
set_defaults(domain, values)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 29 def set_defaults(domain, values) values.each do |key, value| existing_value = @status.defaults_value(domain, key) if values_equal?(existing_value, value) MacSetup.log "Value for #{domain} #{key} is already set. Skipping..." else MacSetup.log "Changing #{existing_value} to #{value}" set_value(domain, key, value) end end end
set_value(domain, key, value)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 61 def set_value(domain, key, value) MacSetup.log "Setting #{domain} #{key} to #{value}" qualified_value = qualify_value(value) sudo = "sudo " if domain.start_with?("/") Shell.run(%(#{sudo}defaults write #{domain} "#{key}" #{qualified_value})) end
values_equal?(existing, desired)
click to toggle source
# File lib/mac_setup/defaults_installer.rb, line 42 def values_equal?(existing, desired) return if existing.nil? case desired when Integer existing.to_i == desired when Float existing.to_f == desired when Array extract_array_values(existing) == desired when TrueClass existing == "1" when FalseClass existing == "0" when String existing == desired end end