Class: Defaulty

Inherits:
Object
  • Object
show all
Defined in:
lib/defaulty.rb,
lib/defaulty/version.rb

Defined Under Namespace

Classes: Domain, Property

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_defaultsObject



70
71
72
73
74
75
76
77
# File 'lib/defaulty.rb', line 70

def self.all_defaults
  all_domains = domains + ['NSGlobalDomain']
  selected_domains = all_domains
  pairs = selected_domains.map do |domain|
    [domain, defaults(domain)]
  end
  Hash[pairs]
end

.defaults(domain) ⇒ Object



63
64
65
66
67
68
# File 'lib/defaulty.rb', line 63

def self.defaults(domain)
  Plist::parse_xml `defaults export #{domain} -`
rescue 
  puts "failed to parse #{domain}"
  []
end

.domainsObject



59
60
61
# File 'lib/defaulty.rb', line 59

def self.domains
  `defaults domains`.split(",").map { |domain| domain.strip }
end

.load(*urls) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/defaulty.rb', line 46

def self.load(*urls)
  defs = urls.map do |url|
    if github_index_url?(url)
      load_ymls_from_github(url)
    else
      load_ymls_from_path(url)
    end
  end 

  Defaulty.new(defs.flatten)
end

Instance Method Details

#write(app, options) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/defaulty.rb', line 79

def write(app, options)
  domain = @domains[app]
  raise "Can't find domain for '#{app}'" unless domain
  options.each do |key, value|
    key = key.to_s
    property = domain.properties[key]
    raise "Can't find a property '#{key}' in domain '#{domain.name}'" unless property
    cmd = "defaults write #{domain.name} #{property.name} -#{property.type} #{value}"
    puts cmd
    `#{cmd}`
  end
end