class Object

Constants

CURRENT_HOST_PREFIX
CURRENT_HOST_SUFFIX
DEFAULTS
DOMAINS
PLISTS
PREFERENCES

Public Instance Methods

debug(string) click to toggle source
# File bin/pn, line 39
def debug(string)
  if ENV['DEBUG']
    puts "DEBUG: #{string}"
  end
end
normalize(plist) click to toggle source
# File bin/pn, line 45
def normalize(plist)
  plist = plist.chomp
  if plist !~ /\.plist\z/
    nil
  elsif plist == File.join(PREFERENCES, File.basename(plist))
    # File is an immediate child of ~/Library/Preferences; return it sans the
    # ".plist" extension.
    DOMAINS[File.basename(plist, '.plist')]
  elsif plist == File.join(PREFERENCES, 'ByHost', File.basename(plist)) &&
    plist.end_with?(CURRENT_HOST_SUFFIX)
    # File is in ~/Library/Preferences/ByHost and matches the UUID of the
    # current host.
    CURRENT_HOST_PREFIX + DOMAINS[File.basename(plist).chomp(CURRENT_HOST_SUFFIX)]
  else
    plist
  end
end
read(plist) click to toggle source
# File bin/pn, line 27
def read(plist)
  # Swallow stderr; it's usually harmless.
  if plist.start_with?(CURRENT_HOST_PREFIX)
    stdout, stderr, status = Open3.capture3(
      'defaults', '-currentHost', 'read', plist[CURRENT_HOST_PREFIX.length..-1]
    )
  else
    stdout, stderr, status = Open3.capture3('defaults', 'read', plist)
  end
  stdout
end