From f4a3bc100b4b98a3d06222c15934abb36bf16594 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Thu, 10 Nov 2016 11:56:00 +0900 Subject: 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. --- Library/Homebrew/cask/lib/hbc/artifact/pkg.rb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'Library/Homebrew/cask/lib') 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 -- cgit v1.2.3 From 28072021031836937a01e9fd995b03995fe49443 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Sat, 19 Nov 2016 13:05:55 +0900 Subject: cask: use Tempfile and some style fixes --- Library/Homebrew/cask/lib/hbc/artifact/pkg.rb | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'Library/Homebrew/cask/lib') diff --git a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb index 2f34814ab..cede9f4d5 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb @@ -55,19 +55,16 @@ 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 + choices_file = choices_xml + args << "-applyChoiceChangesXML" << choices_file.path 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 + file = Tempfile.open(["", ".xml"]) + file.write Plist::Emit.dump(pkg_install_opts(:choices)) + file end end end -- cgit v1.2.3 From 0c22cc45e6fe7da64f037fc2fc1556c0e967d55f Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Sun, 20 Nov 2016 14:09:16 +0900 Subject: cask: Call Tempfile#close(true) with the choices file to ensure it deleted --- Library/Homebrew/cask/lib/hbc/artifact/pkg.rb | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'Library/Homebrew/cask/lib') diff --git a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb index cede9f4d5..fffb10cae 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb @@ -54,17 +54,25 @@ module Hbc ] args << "-verboseR" if Hbc.verbose args << "-allowUntrusted" if pkg_install_opts :allow_untrusted - if pkg_install_opts :choices - choices_file = choices_xml - args << "-applyChoiceChangesXML" << choices_file.path + with_choices_file pkg_install_opts(:choices) do |choices_path| + args << "-applyChoiceChangesXML" << choices_path if choices_path + @command.run!("/usr/sbin/installer", sudo: true, args: args, print_stdout: true) end - @command.run!("/usr/sbin/installer", sudo: true, args: args, print_stdout: true) end - def choices_xml - file = Tempfile.open(["", ".xml"]) - file.write Plist::Emit.dump(pkg_install_opts(:choices)) - file + def with_choices_file(choices) + unless choices + yield nil + return + end + + begin + file = Tempfile.new(["choices", ".xml"]) + file.write Plist::Emit.dump(choices) + yield file.path + ensure + file.close(true) + end end end end -- cgit v1.2.3 From df635c8259dffca891424352765088a3b88a87d2 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Mon, 21 Nov 2016 04:13:29 +0900 Subject: cask: compact the code --- Library/Homebrew/cask/lib/hbc/artifact/pkg.rb | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'Library/Homebrew/cask/lib') diff --git a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb index fffb10cae..0569d2a86 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/pkg.rb @@ -54,24 +54,23 @@ module Hbc ] args << "-verboseR" if Hbc.verbose args << "-allowUntrusted" if pkg_install_opts :allow_untrusted - with_choices_file pkg_install_opts(:choices) do |choices_path| + with_choices_file do |choices_path| args << "-applyChoiceChangesXML" << choices_path if choices_path @command.run!("/usr/sbin/installer", sudo: true, args: args, print_stdout: true) end end - def with_choices_file(choices) - unless choices - yield nil - return - end + def with_choices_file + return yield nil unless pkg_install_opts(:choices) - begin - file = Tempfile.new(["choices", ".xml"]) - file.write Plist::Emit.dump(choices) - yield file.path - ensure - file.close(true) + Tempfile.open(["choices", ".xml"]) do |file| + begin + file.write Plist::Emit.dump(pkg_install_opts(:choices)) + file.close + yield file.path + ensure + file.unlink + end end end end -- cgit v1.2.3