Class: RunLoop::PlistBuddy
- Inherits:
-
Object
- Object
- RunLoop::PlistBuddy
- Defined in:
- lib/run_loop/plist_buddy.rb
Overview
A class for reading and writing property list values.
Why not use CFPropertyList? Because it is super wonky. Among its other faults, it matches Boolean to a string type with ‘true/false’ values which is problematic for our purposes.
Instance Method Summary collapse
-
#plist_key_exists?(key, file, opts = {}) ⇒ Boolean
Checks if the key exists in plist.
-
#plist_read(key, file, opts = {}) ⇒ String
Reads key from file and returns the result.
-
#plist_set(key, type, value, file, opts = {}) ⇒ Boolean
Replaces or creates the value of key in the file.
Instance Method Details
#plist_key_exists?(key, file, opts = {}) ⇒ Boolean
Checks if the key exists in plist.
35 36 37 |
# File 'lib/run_loop/plist_buddy.rb', line 35 def plist_key_exists?(key, file, opts={}) plist_read(key, file, opts) != nil end |
#plist_read(key, file, opts = {}) ⇒ String
Reads key from file and returns the result.
16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/run_loop/plist_buddy.rb', line 16 def plist_read(key, file, opts={}) if key.nil? or key.length == 0 raise(ArgumentError, "key '#{key}' must not be nil or empty") end cmd = build_plist_cmd(:print, {:key => key}, file) res = execute_plist_cmd(cmd, opts) if res == "Print: Entry, \":#{key}\", Does Not Exist" nil else res end end |
#plist_set(key, type, value, file, opts = {}) ⇒ Boolean
Replaces or creates the value of key in the file.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/run_loop/plist_buddy.rb', line 49 def plist_set(key, type, value, file, opts={}) default_opts = {:verbose => false} merged = default_opts.merge(opts) if key.nil? or key.length == 0 raise(ArgumentError, "key '#{key}' must not be nil or empty") end cmd_args = {:key => key, :type => type, :value => value} if plist_key_exists?(key, file, merged) cmd = build_plist_cmd(:set, cmd_args, file) else cmd = build_plist_cmd(:add, cmd_args, file) end res = execute_plist_cmd(cmd, merged) res == '' end |