Does any one know how to modify a Plist file from command line using defaults?
Currently there are two Dictionaries under the URL types
array; I n
Use the -array-add
value type:
defaults write /path/to/plist/file "URL Types" -array-add '{"URL Identifier" = "com.myapp.2"; "URL Schemes" = { "two"; }; }'
OSX has PlistBuddy, which makes this a lot simpler.
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/PlistBuddy.8.html
See also: https://github.com/kevinSuttle/OSXDefaults/blob/master/REFERENCE.md
XML property lists can be viewed in a text editor directly as Lauri's answer above suggests.
Binary property lists (found in many of Apple's own shipping applications) need to be converted to an XML property list format first.
plutil may be used to do this, in either direction. Take care though as the property list is modified in place, so you make wish to make a copy of the property list first.
plutil -convert xml1 binary-property-list-to-convert.plist
And to convert it back to binary:
plutil -convert binary1 XML-property-list-to-convert.plist
Open the Info.plist in a text editor to see the actual identifiers.
defaults write Absolute/Path/to/Info.plist CFBundleURLTypes -array-add '<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>Mac App Store URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>macappstore</string>
</array>
</dict>'
pbpaste | pl
converts the XML to the old-style format.
defaults write Info.plist CFBundleURLTypes -array-add '{CFBundleTypeRole=Viewer; FBundleURLName="Mac App Store URL";CFBundleURLSchemes=(macappstore);}'