diff options
| author | Kaito Udagawa | 2016-11-10 11:56:00 +0900 |
|---|---|---|
| committer | Kaito Udagawa | 2016-11-19 04:41:21 +0900 |
| commit | f4a3bc100b4b98a3d06222c15934abb36bf16594 (patch) | |
| tree | 0da2c51ec9bd50c9f201b8722e5d0124a1da36af /Library/Homebrew/cask/lib | |
| parent | 7853406fb40f9b2785cef805e6f9a19183ae3017 (diff) | |
| download | brew-f4a3bc100b4b98a3d06222c15934abb36bf16594.tar.bz2 | |
cask: add the choices option to pkg stanza
installer command accepts -applyChoiceChangesXML option to change
customize options on the GUI installer from the commandline.
(`man installer` for more detailed information)
The introduced option `choice` enables the choice changes to be supplied
via pkg stanza without tricks in preflight code.
Diffstat (limited to 'Library/Homebrew/cask/lib')
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/artifact/pkg.rb | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb index d5e63d8ef..2f34814ab 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb @@ -2,6 +2,8 @@ require "hbc/artifact/base" require "hbc/utils/hash_validator" +require "vendor/plist/plist" + module Hbc module Artifact class Pkg < Base @@ -16,7 +18,7 @@ module Hbc @pkg_install_opts = pkg_description.shift begin if @pkg_install_opts.respond_to?(:keys) - @pkg_install_opts.extend(HashValidator).assert_valid_keys(:allow_untrusted) + @pkg_install_opts.extend(HashValidator).assert_valid_keys(:allow_untrusted, :choices) elsif @pkg_install_opts raise end @@ -52,8 +54,21 @@ module Hbc ] args << "-verboseR" if Hbc.verbose args << "-allowUntrusted" if pkg_install_opts :allow_untrusted + if pkg_install_opts :choices + args << "-applyChoiceChangesXML" + args << choices_xml + end @command.run!("/usr/sbin/installer", sudo: true, args: args, print_stdout: true) end + + def choices_xml + path = @cask.staged_path.join("Choices.xml") + unless File.exist? path + choices = pkg_install_opts :choices + IO.write path, Plist::Emit.dump(choices) + end + path + end end end end |
