From c7c14e1333aaa379a08014156c44abcb945dcd80 Mon Sep 17 00:00:00 2001 From: "L. E. Segovia" <13498015+amyspark@users.noreply.github.com> Date: Sat, 8 Sep 2018 14:00:44 +0000 Subject: [PATCH] Cask: split quarantine/release functions --- Library/Homebrew/cask/download.rb | 6 ++- Library/Homebrew/cask/quarantine.rb | 64 ++++++++++++++--------------- 2 files changed, 37 insertions(+), 33 deletions(-) diff --git a/Library/Homebrew/cask/download.rb b/Library/Homebrew/cask/download.rb index 8bb97466f6..0a5b2c3578 100644 --- a/Library/Homebrew/cask/download.rb +++ b/Library/Homebrew/cask/download.rb @@ -49,7 +49,11 @@ module Cask return if @quarantine.nil? return unless Quarantine.available? - Quarantine.cask!(cask: @cask, download_path: @downloaded_path, action: @quarantine) + if @quarantine + Quarantine.cask!(cask: @cask, download_path: @downloaded_path) + else + Quarantine.release!(download_path: @downloaded_path) + end end end end diff --git a/Library/Homebrew/cask/quarantine.rb b/Library/Homebrew/cask/quarantine.rb index c51702171c..35888b6749 100644 --- a/Library/Homebrew/cask/quarantine.rb +++ b/Library/Homebrew/cask/quarantine.rb @@ -67,46 +67,46 @@ module Cask fields.join(";") end + def release!(download_path: nil) + return unless detect(download_path) + + odebug "Releasing #{download_path} from quarantine" + + quarantiner = system_command("/usr/bin/xattr", + args: [ + "-d", + QUARANTINE_ATTRIBUTE, + download_path, + ], + print_stderr: false) + + return if quarantiner.success? + + raise CaskQuarantineReleaseError.new(download_path, quarantiner.stderr) + end + def cask!(cask: nil, download_path: nil, action: true) return if cask.nil? || download_path.nil? - if action - return if detect(download_path) + return if detect(download_path) - odebug "Quarantining #{download_path}" + odebug "Quarantining #{download_path}" - quarantiner = system_command(swift, - args: [ - QUARANTINE_SCRIPT, - download_path, - cask.url.to_s, - cask.homepage.to_s, - ]) + quarantiner = system_command(swift, + args: [ + QUARANTINE_SCRIPT, + download_path, + cask.url.to_s, + cask.homepage.to_s, + ]) - return if quarantiner.success? + return if quarantiner.success? - case quarantiner.exit_status - when 2 - raise CaskQuarantineError.new(download_path, "Insufficient parameters") - else - raise CaskQuarantineError.new(download_path, quarantiner.stderr) - end + case quarantiner.exit_status + when 2 + raise CaskQuarantineError.new(download_path, "Insufficient parameters") else - return unless detect(download_path) - - odebug "Releasing #{download_path} from quarantine" - - quarantiner = system_command("/usr/bin/xattr", - args: [ - "-d", - QUARANTINE_ATTRIBUTE, - download_path, - ], - print_stderr: false) - - return if quarantiner.success? - - raise CaskQuarantineReleaseError.new(download_path, quarantiner.stderr) + raise CaskQuarantineError.new(download_path, quarantiner.stderr) end end