Merge pull request #10266 from gromgit/prefix_non_installed
cmd/--prefix: add --installed flag
This commit is contained in:
		
						commit
						cdf8ff9052
					
				@ -23,6 +23,9 @@ module Homebrew
 | 
			
		||||
      EOS
 | 
			
		||||
      switch "--unbrewed",
 | 
			
		||||
             description: "List files in Homebrew's prefix not installed by Homebrew."
 | 
			
		||||
      switch "--installed",
 | 
			
		||||
             description: "Outputs nothing and returns a failing status code if <formula> is not installed."
 | 
			
		||||
      conflicts "--unbrewed", "--installed"
 | 
			
		||||
 | 
			
		||||
      named_args :formula
 | 
			
		||||
    end
 | 
			
		||||
@ -31,6 +34,8 @@ module Homebrew
 | 
			
		||||
  def __prefix
 | 
			
		||||
    args = __prefix_args.parse
 | 
			
		||||
 | 
			
		||||
    raise UsageError, "`--installed` requires a formula argument." if args.installed? && args.no_named?
 | 
			
		||||
 | 
			
		||||
    if args.unbrewed?
 | 
			
		||||
      raise UsageError, "`--unbrewed` does not take a formula argument." unless args.no_named?
 | 
			
		||||
 | 
			
		||||
@ -38,9 +43,27 @@ module Homebrew
 | 
			
		||||
    elsif args.no_named?
 | 
			
		||||
      puts HOMEBREW_PREFIX
 | 
			
		||||
    else
 | 
			
		||||
      puts args.named.to_resolved_formulae.map { |f|
 | 
			
		||||
        f.opt_prefix.exist? ? f.opt_prefix : f.latest_installed_prefix
 | 
			
		||||
      }
 | 
			
		||||
      formulae = args.named.to_resolved_formulae
 | 
			
		||||
      prefixes = formulae.map do |f|
 | 
			
		||||
        if f.opt_prefix.exist?
 | 
			
		||||
          f.opt_prefix
 | 
			
		||||
        elsif args.installed?
 | 
			
		||||
          nil
 | 
			
		||||
        else
 | 
			
		||||
          f.latest_installed_prefix
 | 
			
		||||
        end
 | 
			
		||||
      end.compact
 | 
			
		||||
      puts prefixes
 | 
			
		||||
      if args.installed?
 | 
			
		||||
        missing_formulae = formulae.reject(&:optlinked?)
 | 
			
		||||
                                   .map(&:name)
 | 
			
		||||
        return if missing_formulae.blank?
 | 
			
		||||
 | 
			
		||||
        raise NotAKegError, <<~EOS
 | 
			
		||||
          The following formulae are not installed:
 | 
			
		||||
          #{missing_formulae.join(" ")}
 | 
			
		||||
        EOS
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -14,4 +14,18 @@ describe "brew --prefix", :integration_test do
 | 
			
		||||
      .and not_to_output.to_stderr
 | 
			
		||||
      .and be_a_success
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  it "errors if the given Formula doesn't exist" do
 | 
			
		||||
    expect { brew "--prefix", "--installed", "nonexistent" }
 | 
			
		||||
      .to output(/No available formula/).to_stderr
 | 
			
		||||
      .and not_to_output.to_stdout
 | 
			
		||||
      .and be_a_failure
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  it "prints a warning with `--installed` if the given Formula is not installed" do
 | 
			
		||||
    expect { brew "--prefix", "--installed", testball }
 | 
			
		||||
      .to not_to_output.to_stdout
 | 
			
		||||
      .and output(/testball/).to_stderr
 | 
			
		||||
      .and be_a_failure
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -202,6 +202,7 @@ _brew___prefix() {
 | 
			
		||||
      __brewcomp "
 | 
			
		||||
      --debug
 | 
			
		||||
      --help
 | 
			
		||||
      --installed
 | 
			
		||||
      --quiet
 | 
			
		||||
      --unbrewed
 | 
			
		||||
      --verbose
 | 
			
		||||
 | 
			
		||||
@ -248,6 +248,7 @@ __fish_brew_complete_arg '--env' -a '(__fish_brew_suggest_formulae_all)'
 | 
			
		||||
__fish_brew_complete_cmd '--prefix' 'Display Homebrew\'s install path'
 | 
			
		||||
__fish_brew_complete_arg '--prefix' -l debug -d 'Display any debugging information'
 | 
			
		||||
__fish_brew_complete_arg '--prefix' -l help -d 'Show this message'
 | 
			
		||||
__fish_brew_complete_arg '--prefix' -l installed -d 'Outputs nothing and returns a failing status code if formula is not installed'
 | 
			
		||||
__fish_brew_complete_arg '--prefix' -l quiet -d 'Make some output more quiet'
 | 
			
		||||
__fish_brew_complete_arg '--prefix' -l unbrewed -d 'List files in Homebrew\'s prefix not installed by Homebrew'
 | 
			
		||||
__fish_brew_complete_arg '--prefix' -l verbose -d 'Make some output more verbose'
 | 
			
		||||
 | 
			
		||||
@ -309,8 +309,9 @@ _brew___prefix() {
 | 
			
		||||
  _arguments \
 | 
			
		||||
    '--debug[Display any debugging information]' \
 | 
			
		||||
    '--help[Show this message]' \
 | 
			
		||||
    '(--unbrewed)--installed[Outputs nothing and returns a failing status code if formula is not installed]' \
 | 
			
		||||
    '--quiet[Make some output more quiet]' \
 | 
			
		||||
    '--unbrewed[List files in Homebrew'\''s prefix not installed by Homebrew]' \
 | 
			
		||||
    '(--installed)--unbrewed[List files in Homebrew'\''s prefix not installed by Homebrew]' \
 | 
			
		||||
    '--verbose[Make some output more verbose]' \
 | 
			
		||||
    '::formula:__brew_formulae'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -723,7 +723,7 @@ the list is formatted for export to `bash`(1) unless `--plain` is passed.
 | 
			
		||||
* `--plain`:
 | 
			
		||||
  Generate plain output even when piped.
 | 
			
		||||
 | 
			
		||||
### `--prefix` [*`--unbrewed`*] [*`formula`* ...]
 | 
			
		||||
### `--prefix` [*`--unbrewed`*] [*`--installed`*] [*`formula`* ...]
 | 
			
		||||
 | 
			
		||||
Display Homebrew's install path. *Default:*
 | 
			
		||||
 | 
			
		||||
@ -736,6 +736,8 @@ is or would be installed.
 | 
			
		||||
 | 
			
		||||
* `--unbrewed`:
 | 
			
		||||
  List files in Homebrew's prefix not installed by Homebrew.
 | 
			
		||||
* `--installed`:
 | 
			
		||||
  Outputs nothing and returns a failing status code if *`formula`* is not installed.
 | 
			
		||||
 | 
			
		||||
### `--repository`, `--repo` [*`tap`* ...]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -978,7 +978,7 @@ Generate a list of environment variables for the specified shell, or \fB\-\-shel
 | 
			
		||||
\fB\-\-plain\fR
 | 
			
		||||
Generate plain output even when piped\.
 | 
			
		||||
.
 | 
			
		||||
.SS "\fB\-\-prefix\fR [\fI\-\-unbrewed\fR] [\fIformula\fR \.\.\.]"
 | 
			
		||||
.SS "\fB\-\-prefix\fR [\fI\-\-unbrewed\fR] [\fI\-\-installed\fR] [\fIformula\fR \.\.\.]"
 | 
			
		||||
Display Homebrew\'s install path\. \fIDefault:\fR
 | 
			
		||||
.
 | 
			
		||||
.IP "\(bu" 4
 | 
			
		||||
@ -999,6 +999,10 @@ If \fIformula\fR is provided, display the location in the Cellar where \fIformul
 | 
			
		||||
\fB\-\-unbrewed\fR
 | 
			
		||||
List files in Homebrew\'s prefix not installed by Homebrew\.
 | 
			
		||||
.
 | 
			
		||||
.TP
 | 
			
		||||
\fB\-\-installed\fR
 | 
			
		||||
Outputs nothing and returns a failing status code if \fIformula\fR is not installed\.
 | 
			
		||||
.
 | 
			
		||||
.SS "\fB\-\-repository\fR, \fB\-\-repo\fR [\fItap\fR \.\.\.]"
 | 
			
		||||
Display where Homebrew\'s git repository is located\.
 | 
			
		||||
.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user