From 4ef8c8279f7bd571a98481c711711e3a18ced41c Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Mon, 18 Jan 2021 13:30:47 -0500 Subject: [PATCH] completions: complete files where appropriate in bash --- Library/Homebrew/completions.rb | 1 + Library/Homebrew/completions/bash.erb | 5 +++++ Library/Homebrew/dev-cmd/bottle.rb | 2 +- Library/Homebrew/dev-cmd/ruby.rb | 2 ++ completions/bash/brew | 9 +++++++++ docs/Manpage.md | 2 +- manpages/brew.1 | 2 +- 7 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/completions.rb b/Library/Homebrew/completions.rb index 87d5b232784cb..bb061d92e529f 100644 --- a/Library/Homebrew/completions.rb +++ b/Library/Homebrew/completions.rb @@ -35,6 +35,7 @@ module Completions installed_tap: "__brew_complete_tapped", command: "__brew_complete_commands", diagnostic_check: '__brewcomp "$(brew doctor --list-checks)"', + file: "__brew_complete_files", }.freeze sig { void } diff --git a/Library/Homebrew/completions/bash.erb b/Library/Homebrew/completions/bash.erb index 1cba71da9f69c..f93aefb5f5b91 100644 --- a/Library/Homebrew/completions/bash.erb +++ b/Library/Homebrew/completions/bash.erb @@ -117,6 +117,11 @@ __brew_complete_commands() { COMPREPLY+=($(compgen -W "$cmds" -- "$cur")) } +# compopt is only available in newer versions of bash +__brew_complete_files() { + command -v compopt &> /dev/null && compopt -o default +} + <%= completion_functions.join("\n") %> _brew() { diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index 1d239eee3a1da..5389a9c27c4c0 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -85,7 +85,7 @@ def bottle_args conflicts "--no-rebuild", "--keep-old" - named_args :installed_formula, min: 1 + named_args [:installed_formula, :file], min: 1 end end diff --git a/Library/Homebrew/dev-cmd/ruby.rb b/Library/Homebrew/dev-cmd/ruby.rb index eac6ea45ea552..9abf025742584 100644 --- a/Library/Homebrew/dev-cmd/ruby.rb +++ b/Library/Homebrew/dev-cmd/ruby.rb @@ -20,6 +20,8 @@ def ruby_args description: "Load a library using `require`." flag "-e=", description: "Execute the given text string as a script." + + named_args :file end end diff --git a/completions/bash/brew b/completions/bash/brew index b1e9758f49881..7941e54feefc3 100644 --- a/completions/bash/brew +++ b/completions/bash/brew @@ -104,6 +104,11 @@ __brew_complete_commands() { COMPREPLY+=($(compgen -W "$cmds" -- "$cur")) } +# compopt is only available in newer versions of bash +__brew_complete_files() { + command -v compopt &> /dev/null && compopt -o default +} + _brew___cache() { local cur="${COMP_WORDS[COMP_CWORD]}" case "$cur" in @@ -413,6 +418,7 @@ _brew_bottle() { ;; esac __brew_complete_installed_formulae + __brew_complete_files } _brew_bump() { @@ -1732,6 +1738,7 @@ _brew_ruby() { return ;; esac + __brew_complete_files } _brew_search() { @@ -1776,6 +1783,7 @@ _brew_sh() { return ;; esac + __brew_complete_files } _brew_sponsors() { @@ -1813,6 +1821,7 @@ _brew_style() { return ;; esac + __brew_complete_files __brew_complete_tapped __brew_complete_formulae __brew_complete_casks diff --git a/docs/Manpage.md b/docs/Manpage.md index 0e06c37f7e3a9..8bb4acbe68720 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -794,7 +794,7 @@ non-zero status if any errors are found. * `--token-conflicts`: Audit for token conflicts -### `bottle` [*`options`*] *`installed_formula`* [...] +### `bottle` [*`options`*] *`installed_formula`*|*`file`* [...] Generate a bottle (binary package) from a formula that was installed with `--build-bottle`. diff --git a/manpages/brew.1 b/manpages/brew.1 index 0513a2af82bed..0a8d6e460e562 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1085,7 +1085,7 @@ Audit the appcast \fB\-\-token\-conflicts\fR Audit for token conflicts . -.SS "\fBbottle\fR [\fIoptions\fR] \fIinstalled_formula\fR [\.\.\.]" +.SS "\fBbottle\fR [\fIoptions\fR] \fIinstalled_formula\fR|\fIfile\fR [\.\.\.]" Generate a bottle (binary package) from a formula that was installed with \fB\-\-build\-bottle\fR\. If the formula specifies a rebuild version, it will be incremented in the generated DSL\. Passing \fB\-\-keep\-old\fR will attempt to keep it at its original value, while \fB\-\-no\-rebuild\fR will remove it\. . .TP