From 41a05b62fe47baf402639990d3762f85dec60bec Mon Sep 17 00:00:00 2001 From: Gautham Goli Date: Sun, 25 Mar 2018 12:22:29 +0530 Subject: [PATCH] bottle: Use Parser to parse args --- Library/Homebrew/dev-cmd/bottle.rb | 67 +++++++++++++++++------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index a233dfb57a..d3909e06e8 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -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