Add --fresh option to brew install
When invoked, this option will ensure brew doesn't re-use any options from previous installs of a formula.
This commit is contained in:
		
							parent
							
								
									8ec2d8e043
								
							
						
					
					
						commit
						33a61d1897
					
				@ -127,7 +127,7 @@ _brew_to_completion()
 | 
				
			|||||||
            local opts=$(
 | 
					            local opts=$(
 | 
				
			||||||
                local opts=(--force --verbose --debug --use-clang --use-gcc
 | 
					                local opts=(--force --verbose --debug --use-clang --use-gcc
 | 
				
			||||||
                    --use-llvm --ignore-dependencies --build-from-source --HEAD
 | 
					                    --use-llvm --ignore-dependencies --build-from-source --HEAD
 | 
				
			||||||
                    --interactive $(brew options --compact "$prev"))
 | 
					                    --interactive --fresh $(brew options --compact "$prev"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                # options that make sense with '--interactive'
 | 
					                # options that make sense with '--interactive'
 | 
				
			||||||
                if [[ "${COMP_WORDS[*]}" =~ "--interactive" ]]; then
 | 
					                if [[ "${COMP_WORDS[*]}" =~ "--interactive" ]]; then
 | 
				
			||||||
 | 
				
			|||||||
@ -135,7 +135,7 @@ For the full command list, see the COMMANDS section.
 | 
				
			|||||||
  * `info` <URL>:
 | 
					  * `info` <URL>:
 | 
				
			||||||
    Print the name and version that will be detected for <URL>.
 | 
					    Print the name and version that will be detected for <URL>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  * `install [--force] [--debug] [--ignore-dependencies] [--use-clang] [--use-gcc] [--use-llvm] [--build-from-source] [--HEAD]` <formula>:
 | 
					  * `install [--force] [--debug] [--ignore-dependencies] [--fresh] [--use-clang] [--use-gcc] [--use-llvm] [--build-from-source] [--HEAD]` <formula>:
 | 
				
			||||||
    Install <formula>.
 | 
					    Install <formula>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <formula> is usually the name of the formula to install, but may also be
 | 
					    <formula> is usually the name of the formula to install, but may also be
 | 
				
			||||||
@ -152,6 +152,9 @@ For the full command list, see the COMMANDS section.
 | 
				
			|||||||
    any kind. If they are not already present, the formula will probably fail
 | 
					    any kind. If they are not already present, the formula will probably fail
 | 
				
			||||||
    to install.
 | 
					    to install.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    If `--fresh` is passed, the installation process will not re-use any
 | 
				
			||||||
 | 
					    options from previous installs.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    If `--use-clang` is passed, attempt to compile using clang.
 | 
					    If `--use-clang` is passed, attempt to compile using clang.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    If `--use-gcc` is passed, attempt to compile using GCC. This is useful for
 | 
					    If `--use-gcc` is passed, attempt to compile using GCC. This is useful for
 | 
				
			||||||
 | 
				
			|||||||
@ -245,8 +245,9 @@ class FormulaInstaller
 | 
				
			|||||||
  # This method gives us a chance to pre-process command line arguments before the
 | 
					  # This method gives us a chance to pre-process command line arguments before the
 | 
				
			||||||
  # installer forks and `Formula.install` kicks in.
 | 
					  # installer forks and `Formula.install` kicks in.
 | 
				
			||||||
  def filtered_args
 | 
					  def filtered_args
 | 
				
			||||||
    # Did the user actually pass the formula this installer is considering on
 | 
					    # Returns true if the formula attached to this installer was explicitly
 | 
				
			||||||
    # the command line?
 | 
					    # passed on the command line by the user as opposed to being automatically
 | 
				
			||||||
 | 
					    # added to satisfy a dependency.
 | 
				
			||||||
    def explicitly_requested?
 | 
					    def explicitly_requested?
 | 
				
			||||||
      # `ARGV.formulae` will throw an exception if it comes up with an empty
 | 
					      # `ARGV.formulae` will throw an exception if it comes up with an empty
 | 
				
			||||||
      # list.
 | 
					      # list.
 | 
				
			||||||
@ -257,13 +258,23 @@ class FormulaInstaller
 | 
				
			|||||||
      return false if ARGV.named.empty?
 | 
					      return false if ARGV.named.empty?
 | 
				
			||||||
      ARGV.formulae.include? f
 | 
					      ARGV.formulae.include? f
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
    previous_install = Tab.for_formula f
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    args = ARGV.clone
 | 
					    args = ARGV.clone
 | 
				
			||||||
    args.concat previous_install.used_options
 | 
					 | 
				
			||||||
    args.uniq! # Just in case some dupes were added
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    %w[--HEAD --verbose -v --debug -d --interactive -i].each {|f| args.delete f} unless explicitly_requested?
 | 
					    %w[
 | 
				
			||||||
 | 
					      --debug -d
 | 
				
			||||||
 | 
					      --fresh
 | 
				
			||||||
 | 
					      --HEAD
 | 
				
			||||||
 | 
					      --interactive -i
 | 
				
			||||||
 | 
					      --verbose -v
 | 
				
			||||||
 | 
					    ].each {|flag| args.delete flag} unless explicitly_requested?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    unless args.include? '--fresh'
 | 
				
			||||||
 | 
					      previous_install = Tab.for_formula f
 | 
				
			||||||
 | 
					      args.concat previous_install.used_options
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    args.uniq! # Just in case some dupes slipped by
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return args
 | 
					    return args
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
				
			|||||||
@ -158,7 +158,7 @@ To view formula history locally: \fBbrew log \-p <formula>\fR\.
 | 
				
			|||||||
Print the name and version that will be detected for \fIURL\fR\.
 | 
					Print the name and version that will be detected for \fIURL\fR\.
 | 
				
			||||||
.
 | 
					.
 | 
				
			||||||
.TP
 | 
					.TP
 | 
				
			||||||
\fBinstall [\-\-force] [\-\-debug] [\-\-ignore\-dependencies] [\-\-use\-clang] [\-\-use\-gcc] [\-\-use\-llvm] [\-\-build\-from\-source] [\-\-HEAD]\fR \fIformula\fR
 | 
					\fBinstall [\-\-force] [\-\-debug] [\-\-ignore\-dependencies] [\-\-fresh] [\-\-use\-clang] [\-\-use\-gcc] [\-\-use\-llvm] [\-\-build\-from\-source] [\-\-HEAD]\fR \fIformula\fR
 | 
				
			||||||
Install \fIformula\fR\.
 | 
					Install \fIformula\fR\.
 | 
				
			||||||
.
 | 
					.
 | 
				
			||||||
.IP
 | 
					.IP
 | 
				
			||||||
@ -174,6 +174,9 @@ If \fB\-\-debug\fR is passed and brewing fails, open a shell inside the temporar
 | 
				
			|||||||
If \fB\-\-ignore\-dependencies\fR is passed, skip installing any dependencies of any kind\. If they are not already present, the formula will probably fail to install\.
 | 
					If \fB\-\-ignore\-dependencies\fR is passed, skip installing any dependencies of any kind\. If they are not already present, the formula will probably fail to install\.
 | 
				
			||||||
.
 | 
					.
 | 
				
			||||||
.IP
 | 
					.IP
 | 
				
			||||||
 | 
					If \fB\-\-fresh\fR is passed, the installation process will not re\-use any options from previous installs\.
 | 
				
			||||||
 | 
					.
 | 
				
			||||||
 | 
					.IP
 | 
				
			||||||
If \fB\-\-use\-clang\fR is passed, attempt to compile using clang\.
 | 
					If \fB\-\-use\-clang\fR is passed, attempt to compile using clang\.
 | 
				
			||||||
.
 | 
					.
 | 
				
			||||||
.IP
 | 
					.IP
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user