Merge pull request #3975 from GauthamGoli/bottle-args

bottle: Use Parser to parse args
This commit is contained in:
Mike McQuaid 2018-03-25 17:39:25 +01:00 committed by GitHub
commit f04de219c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,6 +34,7 @@ require "utils/bottles"
require "tab"
require "keg"
require "formula_versions"
require "cli_parser"
require "utils/inreplace"
require "erb"
require "extend/pathname"
@ -68,6 +69,26 @@ MAXIMUM_STRING_MATCHES = 100
module Homebrew
module_function
def bottle
@args = Homebrew::CLI::Parser.parse do
switch "--merge"
switch "-v", "--verbose"
switch "--skip-relocation"
switch "--force-core-tap"
switch "--no-rebuild"
switch "--keep-old"
switch "--write"
switch "--no-commit"
switch "--json"
flag "--root-url"
end
return merge if @args.merge?
ARGV.resolved_formulae.each do |f|
bottle_formula f
end
end
def keg_contain?(string, keg, ignores)
@put_string_exists_header, @put_filenames = nil
@ -93,7 +114,7 @@ module Homebrew
linked_libraries = Keg.file_linked_libraries(file, string)
result ||= !linked_libraries.empty?
if ARGV.verbose?
if @args.verbose?
print_filename.call(string, file) unless linked_libraries.empty?
linked_libraries.each do |lib|
puts " #{Tty.bold}-->#{Tty.reset} links to #{lib}"
@ -116,7 +137,7 @@ module Homebrew
end
end
next unless ARGV.verbose? && !text_matches.empty?
next unless @args.verbose? && !text_matches.empty?
print_filename.call(string, file)
text_matches.first(MAXIMUM_STRING_MATCHES).each do |match, offset|
puts " #{Tty.bold}-->#{Tty.reset} match '#{match}' at offset #{Tty.bold}0x#{offset}#{Tty.reset}"
@ -137,7 +158,7 @@ module Homebrew
absolute_symlinks_start_with_string << pn if link.to_s.start_with?(string)
end
if ARGV.verbose?
if @args.verbose?
unless absolute_symlinks_start_with_string.empty?
opoo "Absolute symlink starting with #{string}:"
absolute_symlinks_start_with_string.each do |pn|
@ -160,7 +181,7 @@ module Homebrew
end
unless tap = f.tap
unless ARGV.include?("--force-core-tap")
unless @args.force_core_tap?
return ofail "Formula not from core or any taps: #{f.full_name}"
end
@ -179,9 +200,9 @@ module Homebrew
return ofail "Formula has no stable version: #{f.full_name}" unless f.stable
if ARGV.include?("--no-rebuild") || !f.tap
if @args.no_rebuild? || !f.tap
rebuild = 0
elsif ARGV.include? "--keep-old"
elsif @args.keep_old?
rebuild = f.bottle_specification.rebuild
else
ohai "Determining #{f.full_name} bottle rebuild..."
@ -214,7 +235,7 @@ module Homebrew
begin
keg.delete_pyc_files!
unless ARGV.include? "--skip-relocation"
unless @args.skip_relocation?
changed_files = keg.replace_locations_with_placeholders
end
@ -265,7 +286,7 @@ module Homebrew
end
relocatable = true
if ARGV.include? "--skip-relocation"
if @args.skip_relocation?
skip_relocation = true
else
relocatable = false if keg_contain?(prefix_check, keg, ignores)
@ -278,23 +299,21 @@ module Homebrew
end
skip_relocation = relocatable && !keg.require_relocation?
end
puts if !relocatable && ARGV.verbose?
puts if !relocatable && @args.verbose?
rescue Interrupt
ignore_interrupts { bottle_path.unlink if bottle_path.exist? }
raise
ensure
ignore_interrupts do
original_tab&.write
unless ARGV.include? "--skip-relocation"
unless @args.skip_relocation?
keg.replace_placeholders_with_locations changed_files
end
end
end
end
root_url = ARGV.value("root-url")
# Use underscored version for legacy reasons. Remove at some point.
root_url ||= ARGV.value("root_url")
root_url = @args.root_url
bottle = BottleSpecification.new
bottle.tap = tap
@ -314,7 +333,7 @@ module Homebrew
bottle.sha256 sha256 => Utils::Bottles.tag
old_spec = f.bottle_specification
if ARGV.include?("--keep-old") && !old_spec.checksums.empty?
if @args.keep_old? && !old_spec.checksums.empty?
mismatches = [:root_url, :prefix, :cellar, :rebuild].reject do |key|
old_spec.send(key) == bottle.send(key)
end
@ -340,7 +359,7 @@ module Homebrew
puts "./#{filename}"
puts output
return unless ARGV.include? "--json"
return unless @args.json?
json = {
f.full_name => {
"formula" => {
@ -371,7 +390,7 @@ module Homebrew
end
def merge
write = ARGV.include? "--write"
write = @args.write?
bottles_hash = ARGV.named.reduce({}) do |hash, json_file|
deep_merge_hashes hash, JSON.parse(IO.read(json_file))
@ -400,7 +419,7 @@ module Homebrew
Utils::Inreplace.inreplace(path) do |s|
if s.include? "bottle do"
update_or_add = "update"
if ARGV.include? "--keep-old"
if @args.keep_old?
mismatches = []
bottle_block_contents = s[/ bottle do(.+?)end\n/m, 1]
bottle_block_contents.lines.each do |line|
@ -443,7 +462,7 @@ module Homebrew
string = s.sub!(/ bottle do.+?end\n/m, output)
odie "Bottle block update failed!" unless string
else
if ARGV.include? "--keep-old"
if @args.keep_old?
odie "--keep-old was passed but there was no existing bottle block!"
end
puts output
@ -472,7 +491,7 @@ module Homebrew
end
end
unless ARGV.include? "--no-commit"
unless @args.no_commit?
if ENV["HOMEBREW_GIT_NAME"]
ENV["GIT_AUTHOR_NAME"] =
ENV["GIT_COMMITTER_NAME"] =
@ -498,14 +517,4 @@ module Homebrew
end
end
end
def bottle
if ARGV.include? "--merge"
merge
else
ARGV.resolved_formulae.each do |f|
bottle_formula f
end
end
end
end