mirror of
https://github.com/wavetermdev/homebrew-cask.git
synced 2026-08-05 13:43:24 -07:00
Merge pull request #2555 from rolandwalker/add_debugging
Add copious debugging with `--debug`
This commit is contained in:
+6
-1
@@ -29,6 +29,7 @@ require 'cask/source'
|
||||
require 'cask/system_command'
|
||||
require 'cask/underscore_supporting_uri'
|
||||
require 'cask/url'
|
||||
require 'cask/utils'
|
||||
|
||||
require 'plist/parser'
|
||||
|
||||
@@ -39,6 +40,7 @@ class Cask
|
||||
include Cask::Options
|
||||
|
||||
def self.init
|
||||
odebug 'Creating directories'
|
||||
HOMEBREW_CACHE.mkpath unless HOMEBREW_CACHE.exist?
|
||||
unless caskroom.exist?
|
||||
ohai "We need to make Caskroom for the first time at #{caskroom}"
|
||||
@@ -57,7 +59,10 @@ class Cask
|
||||
end
|
||||
|
||||
def self.load(query)
|
||||
Cask::Source.for_query(query).load
|
||||
odebug 'Loading Cask definitions'
|
||||
cask = Cask::Source.for_query(query).load
|
||||
odumpcask cask
|
||||
cask
|
||||
end
|
||||
|
||||
def self.title
|
||||
|
||||
@@ -43,6 +43,10 @@ module Cask::Artifact
|
||||
end
|
||||
|
||||
def self.for_cask(cask)
|
||||
artifacts.select { |artifact| artifact.me?(cask) }
|
||||
odebug "Determining which artifacts are present in Cask #{cask}"
|
||||
artifacts.select do |artifact|
|
||||
odebug "Checking for artifact class #{artifact}"
|
||||
artifact.me?(cask)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -24,27 +24,32 @@ class Cask::Audit
|
||||
|
||||
|
||||
def _check_required_fields
|
||||
odebug "Auditing required fields"
|
||||
add_error "url is required" unless cask.url
|
||||
add_error "version is required" unless cask.version
|
||||
add_error "homepage is required" unless cask.homepage
|
||||
end
|
||||
|
||||
def _check_checksums
|
||||
odebug "Auditing checksums"
|
||||
return if cask.sums == 0
|
||||
add_error "could not find checksum or no_checksum" unless cask.sums.is_a?(Array) && cask.sums.length > 0
|
||||
end
|
||||
|
||||
def _check_no_checksums_if_latest
|
||||
odebug "Verifying no_checkum with version 'latest'"
|
||||
add_error "you should use no_checksum when version is latest" if cask.version == "latest" && cask.sums.is_a?(Array)
|
||||
end
|
||||
|
||||
def _check_download(download)
|
||||
odebug "Auditing download"
|
||||
download.perform
|
||||
rescue => e
|
||||
add_error "download not possible: #{e.message}"
|
||||
end
|
||||
|
||||
def _check_sourceforge_download_url_format
|
||||
odebug "Auditing URL format"
|
||||
if _bad_sourceforge_url?
|
||||
add_warning "SourceForge URL format incorrect. See https://github.com/phinze/homebrew-cask/blob/master/CONTRIBUTING.md#sourceforge-urls"
|
||||
end
|
||||
|
||||
+3
-3
@@ -49,11 +49,11 @@ class Cask::CLI
|
||||
run_command(command, *rest)
|
||||
rescue CaskAlreadyInstalledError => e
|
||||
opoo e
|
||||
$stderr.puts e.backtrace if @debug
|
||||
$stderr.puts e.backtrace if Cask.debug
|
||||
exit 0
|
||||
rescue CaskError => e
|
||||
onoe e
|
||||
$stderr.puts e.backtrace if @debug
|
||||
$stderr.puts e.backtrace if Cask.debug
|
||||
exit 1
|
||||
end
|
||||
|
||||
@@ -112,7 +112,7 @@ class Cask::CLI
|
||||
Cask.no_binaries = true
|
||||
end
|
||||
opts.on("--debug") do |v|
|
||||
@debug = true
|
||||
Cask.debug = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -47,6 +47,7 @@ class Cask::CLI::Alfred
|
||||
if linked?
|
||||
opoo "Alfred is already linked to homebrew-cask."
|
||||
else
|
||||
odebug 'Linking Alfred scopes'
|
||||
save_alfred_scopes(alfred_scopes << Cask.caskroom)
|
||||
ohai "Successfully linked Alfred to homebrew-cask."
|
||||
end
|
||||
@@ -58,6 +59,7 @@ class Cask::CLI::Alfred
|
||||
if !linked?
|
||||
opoo "Alfred is already unlinked from homebrew-cask."
|
||||
else
|
||||
odebug 'Unlinking Alfred scopes'
|
||||
save_alfred_scopes(alfred_scopes.reject { |x| x == Cask.caskroom.to_s })
|
||||
ohai "Successfully unlinked Alfred from homebrew-cask."
|
||||
end
|
||||
@@ -105,8 +107,10 @@ class Cask::CLI::Alfred
|
||||
|
||||
def self.alfred_preference(key, value=nil)
|
||||
if value
|
||||
odebug 'Writing Alfred preferences'
|
||||
@system_command.run('/usr/bin/defaults', :args => ['write', DOMAIN, key, %Q("#{value}")])
|
||||
else
|
||||
odebug 'Reading Alfred preferences'
|
||||
@system_command.run('/usr/bin/defaults', :args => ['read', DOMAIN, key])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,6 +17,7 @@ class Cask::CLI::Audit
|
||||
end
|
||||
|
||||
def audit(cask)
|
||||
odebug "Auditing Cask #{cask}"
|
||||
@auditor.audit(cask, :audit_download => audit_download?)
|
||||
end
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ class Cask::CLI::Checklinks
|
||||
def self.run(*args)
|
||||
casks_to_check = args.empty? ? Cask.all : args.map { |arg| Cask.load(arg) }
|
||||
casks_to_check.each do |cask|
|
||||
odebug "Checking links for Cask #{cask}"
|
||||
checker = Cask::LinkChecker.new(cask)
|
||||
checker.run
|
||||
puts checker.summary
|
||||
|
||||
@@ -3,6 +3,7 @@ module Cask::CLI::Create
|
||||
raise CaskUnspecifiedError if arguments.empty?
|
||||
cask_name, *_ = *arguments
|
||||
cask_path = Cask.path(cask_name)
|
||||
odebug "Creating Cask #{cask_name}"
|
||||
|
||||
if cask_path.exist?
|
||||
raise CaskAlreadyCreatedError.new cask_name
|
||||
|
||||
@@ -3,6 +3,7 @@ module Cask::CLI::Edit
|
||||
raise CaskUnspecifiedError if arguments.empty?
|
||||
cask_name, *_ = *arguments
|
||||
cask_path = Cask.path(cask_name)
|
||||
odebug "Opening editor for Cask #{cask_name}"
|
||||
unless cask_path.exist?
|
||||
raise CaskUnavailableError, "#{cask_name}, use `brew cask create #{cask_name}` to make a new cask with this name"
|
||||
end
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
module Cask::CLI::Home
|
||||
def self.run(*cask_names)
|
||||
if cask_names.empty?
|
||||
odebug "Opening project homepage"
|
||||
system "/usr/bin/open", 'http://caskroom.io/'
|
||||
else
|
||||
cask_names.each do |cask_name|
|
||||
odebug "Opening homepage for Cask #{cask_name}"
|
||||
cask = Cask.load(cask_name)
|
||||
system "/usr/bin/open", cask.homepage
|
||||
end
|
||||
|
||||
@@ -2,6 +2,7 @@ class Cask::CLI::Info
|
||||
def self.run(*cask_names)
|
||||
raise CaskUnspecifiedError if cask_names.empty?
|
||||
cask_names.each do |cask_name|
|
||||
odebug "Getting info for Cask #{cask_name}"
|
||||
cask = Cask.load(cask_name)
|
||||
puts info(cask)
|
||||
Cask::Installer.print_caveats(cask)
|
||||
|
||||
@@ -4,6 +4,7 @@ class Cask::CLI::Install
|
||||
cask_names = args.reject { |a| a.chars.first == '-' }
|
||||
force = args.include? '--force'
|
||||
cask_names.each do |cask_name|
|
||||
odebug "Installing Cask #{cask_name}"
|
||||
cask = Cask.load(cask_name)
|
||||
Cask::Installer.new(cask).install(force)
|
||||
end
|
||||
|
||||
@@ -9,6 +9,7 @@ class Cask::CLI::List
|
||||
|
||||
def self.list_files(*cask_names)
|
||||
cask_names.each do |cask_name|
|
||||
odebug "Listing files for Cask #{cask_name}"
|
||||
cask = Cask.load(cask_name)
|
||||
if cask.installed?
|
||||
Cask::PrettyListing.new(cask).print
|
||||
|
||||
@@ -3,6 +3,7 @@ class Cask::CLI::Uninstall
|
||||
raise CaskUnspecifiedError if args.empty?
|
||||
cask_names = args.reject { |a| a.chars.first == '-' }
|
||||
cask_names.each do |cask_name|
|
||||
odebug "Uninstalling Cask #{cask_name}"
|
||||
cask = Cask.load(cask_name)
|
||||
raise CaskNotInstalledError.new(cask) unless cask.installed?
|
||||
Cask::Installer.new(cask).uninstall
|
||||
|
||||
@@ -18,7 +18,11 @@ class Cask::Container
|
||||
end
|
||||
|
||||
def self.for_path(path, command)
|
||||
odebug "Determining which containers to use"
|
||||
criteria = Cask::Container::Criteria.new(path, command)
|
||||
containers.find { |c| c.me?(criteria) }
|
||||
containers.find do |c|
|
||||
odebug "Checking container class #{c}"
|
||||
c.me?(criteria)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -21,7 +21,11 @@ class Cask::Download
|
||||
sums.each do |sum|
|
||||
unless sum.empty?
|
||||
computed = Checksum.new(sum.hash_type, Digest.const_get(sum.hash_type.to_s.upcase).file(path).hexdigest)
|
||||
raise ChecksumMismatchError.new(sum, computed) unless sum == computed
|
||||
if sum == computed
|
||||
odebug "Checksums match"
|
||||
else
|
||||
raise ChecksumMismatchError.new(sum, computed)
|
||||
end
|
||||
has_sum = true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,6 +16,7 @@ class Cask::DownloadStrategy < CurlDownloadStrategy
|
||||
end
|
||||
|
||||
def _fetch
|
||||
odebug "Calling curl with args #{curl_args}"
|
||||
curl(*curl_args)
|
||||
end
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ class Cask::Installer
|
||||
end
|
||||
|
||||
def self.print_caveats(cask)
|
||||
odebug "Printing caveats"
|
||||
unless cask.caveats.empty?
|
||||
ohai "Caveats"
|
||||
cask.caveats.each do |caveat|
|
||||
@@ -22,6 +23,7 @@ class Cask::Installer
|
||||
end
|
||||
|
||||
def install(force=false)
|
||||
odebug "Cask::Installer.install"
|
||||
if @cask.installed? && !force
|
||||
raise CaskAlreadyInstalledError.new(@cask)
|
||||
end
|
||||
@@ -43,22 +45,30 @@ class Cask::Installer
|
||||
|
||||
|
||||
def download
|
||||
odebug "Downloading"
|
||||
download = Cask::Download.new(@cask)
|
||||
@downloaded_path = download.perform
|
||||
odebug "Downloaded to -> #{@downloaded_path}"
|
||||
@downloaded_path
|
||||
end
|
||||
|
||||
def extract_primary_container
|
||||
odebug "Extracting primary container"
|
||||
FileUtils.mkdir_p @cask.destination_path
|
||||
container = Cask::Container.for_path(@downloaded_path, @command)
|
||||
unless container
|
||||
raise "uh oh, could not identify primary container for #{@downloaded_path}"
|
||||
end
|
||||
odebug "Using container class #{container} for #{@downloaded_path}"
|
||||
container.new(@cask, @downloaded_path, @command).extract
|
||||
end
|
||||
|
||||
def install_artifacts
|
||||
odebug "Installing artifacts"
|
||||
artifacts = Cask::Artifact.for_cask(@cask)
|
||||
odebug "#{artifacts.length} artifact/s defined", artifacts
|
||||
artifacts.each do |artifact|
|
||||
odebug "Installing artifact of class #{artifact}"
|
||||
artifact.new(@cask, @command).install
|
||||
end
|
||||
end
|
||||
@@ -91,18 +101,23 @@ class Cask::Installer
|
||||
end
|
||||
|
||||
def uninstall
|
||||
odebug "Cask::Installer.uninstall"
|
||||
uninstall_artifacts
|
||||
purge_files
|
||||
end
|
||||
|
||||
def uninstall_artifacts
|
||||
odebug "Un-installing artifacts"
|
||||
artifacts = Cask::Artifact.for_cask(@cask)
|
||||
odebug "#{artifacts.length} artifact/s defined", artifacts
|
||||
artifacts.each do |artifact|
|
||||
odebug "Un-installing artifact of class #{artifact}"
|
||||
artifact.new(@cask, @command).uninstall
|
||||
end
|
||||
end
|
||||
|
||||
def purge_files
|
||||
odebug "Purging files"
|
||||
if @cask.destination_path.exist?
|
||||
@cask.destination_path.rmtree
|
||||
end
|
||||
|
||||
@@ -11,5 +11,13 @@ module Cask::Options
|
||||
def no_binaries=(_no_binaries)
|
||||
@no_binaries = _no_binaries
|
||||
end
|
||||
|
||||
def debug
|
||||
@debug ||= false
|
||||
end
|
||||
|
||||
def debug=(_debug)
|
||||
@debug = _debug
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,9 +13,11 @@ class Cask::Pkg
|
||||
end
|
||||
|
||||
def uninstall
|
||||
odebug "Deleting pkg files"
|
||||
list('files').each_slice(500) do |file_slice|
|
||||
@command.run('/bin/rm', :args => file_slice.unshift('-f'), :sudo => true)
|
||||
end
|
||||
odebug "Deleting pkg directories"
|
||||
_deepest_path_first(list('dirs')).each do |dir|
|
||||
if dir.exist?
|
||||
_with_full_permissions(dir) do
|
||||
@@ -29,6 +31,7 @@ class Cask::Pkg
|
||||
end
|
||||
|
||||
def forget
|
||||
odebug "Unregistering pkg receipt (aka forgetting)"
|
||||
@command.run!('/usr/sbin/pkgutil', :args => ['--forget', package_id], :sudo => true)
|
||||
end
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user