[git] Use PlistBuddy for plist manipulation
change
commit a2617722929bf03b72c5187c5c5128adf5afb537
author Alpha Chen <alpha.chen@gmail.com>
date
parent 9c84d271
diff --git a/bin/clean_alfred_workflow b/bin/clean_alfred_workflow
index 83914cdf..8babd7a9 100755
--- a/bin/clean_alfred_workflow
+++ b/bin/clean_alfred_workflow
@@ -1,13 +1,19 @@
 #!/usr/bin/env ruby
 
-require 'rexml/document'
+require 'tempfile'
 
-doc = REXML::Document.new(ARGF.read, ignore_whitespace_nodes: :all)
-xpath = '//dict/key[text()="variablesdontexport"]/following-sibling::array'
-vars = doc.elements[xpath].map(&:text)
+plist = ARGF.read
+Tempfile.create('info.plist') do |f|
+  f << plist
+  f.flush
 
-vars.each do |var|
-  doc.elements["//key[text()='#{var}']/following-sibling::string"].text = ''
-end
+  vars = `/usr/libexec/PlistBuddy -c "Print :variablesdontexport" #{f.path}`
+  vars = vars.split("\n")[1..-2].map(&:strip)
+
+  vars.each do |var|
+    `/usr/libexec/PlistBuddy -c "Set :variables:#{var} ''" #{f.path}`
+  end
 
-doc.write
+  f.rewind
+  puts f.read
+end