diff --git a/Library/Homebrew/cli/parser.rb b/Library/Homebrew/cli/parser.rb index 0db260c0a4..3b635e7e5b 100644 --- a/Library/Homebrew/cli/parser.rb +++ b/Library/Homebrew/cli/parser.rb @@ -64,27 +64,27 @@ module Homebrew description: "Target location for Services " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:servicedir]}`).", }], - [:flag, "--input_methoddir=", { + [:flag, "--input-methoddir=", { description: "Target location for Input Methods " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:input_methoddir]}`).", }], - [:flag, "--internet_plugindir=", { + [:flag, "--internet-plugindir=", { description: "Target location for Internet Plugins " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:internet_plugindir]}`).", }], - [:flag, "--audio_unit_plugindir=", { + [:flag, "--audio-unit-plugindir=", { description: "Target location for Audio Unit Plugins " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:audio_unit_plugindir]}`).", }], - [:flag, "--vst_plugindir=", { + [:flag, "--vst-plugindir=", { description: "Target location for VST Plugins " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:vst_plugindir]}`).", }], - [:flag, "--vst3_plugindir=", { + [:flag, "--vst3-plugindir=", { description: "Target location for VST3 Plugins " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:vst3_plugindir]}`).", }], - [:flag, "--screen_saverdir=", { + [:flag, "--screen-saverdir=", { description: "Target location for Screen Savers " \ "(default: `#{Cask::Config::DEFAULT_DIRS[:screen_saverdir]}`).", }], diff --git a/Library/Homebrew/test/cli/parser_spec.rb b/Library/Homebrew/test/cli/parser_spec.rb index e5fae5af8e..f737b4b8ce 100644 --- a/Library/Homebrew/test/cli/parser_spec.rb +++ b/Library/Homebrew/test/cli/parser_spec.rb @@ -252,6 +252,42 @@ describe Homebrew::CLI::Parser do end end + describe "test inferrability of args" do + subject(:parser) { + described_class.new do + switch "--switch-a" + switch "--switch-b" + switch "--foo-switch" + flag "--flag-foo=" + comma_array "--comma-array-foo" + end + } + + it "parses a valid switch that uses `_` instead of `-`" do + args = parser.parse(["--switch_a"]) + expect(args).to be_switch_a + end + + it "parses a valid flag that uses `_` instead of `-`" do + args = parser.parse(["--flag_foo=foo.txt"]) + expect(args.flag_foo).to eq "foo.txt" + end + + it "parses a valid comma_array that uses `_` instead of `-`" do + args = parser.parse(["--comma_array_foo=foo.txt,bar.txt"]) + expect(args.comma_array_foo).to eq %w[foo.txt bar.txt] + end + + it "raises an error when option is ambiguous" do + expect { parser.parse(["--switch"]) }.to raise_error(RuntimeError, /ambiguous option: --switch/) + end + + it "inferrs the option from an abbreviated name" do + args = parser.parse(["--foo"]) + expect(args).to be_foo_switch + end + end + describe "test argv extensions" do subject(:parser) { described_class.new do diff --git a/completions/bash/brew b/completions/bash/brew index 49eed71526..887acc5ddc 100644 --- a/completions/bash/brew +++ b/completions/bash/brew @@ -799,7 +799,7 @@ _brew_cask () done if [[ $i -eq $COMP_CWORD ]]; then - __brew_caskcomp "abv audit cat create doctor edit fetch home info install list ls outdated reinstall remove rm search style uninstall upgrade zap -S --force --verbose --appdir --colorpickerdir --prefpanedir --qlplugindir --fontdir --servicedir --input_methoddir --internet_plugindir --screen_saverdir --no-binaries --debug --version" + __brew_caskcomp "abv audit cat create doctor edit fetch home info install list ls outdated reinstall remove rm search style uninstall upgrade zap -S --force --verbose --appdir --colorpickerdir --prefpanedir --qlplugindir --fontdir --servicedir --input-methoddir --internet-plugindir --screen-saverdir --no-binaries --debug --version" return fi diff --git a/completions/zsh/_brew_cask b/completions/zsh/_brew_cask index 44f5cc869b..81c8a3fee4 100644 --- a/completions/zsh/_brew_cask +++ b/completions/zsh/_brew_cask @@ -179,12 +179,12 @@ _brew_cask() '--dictionarydir=-:Target location for Dictionaries. The default value is ~/Library/Dictionaries.' \ '--fontdir=-:Target location for Fonts. The default value is ~/Library/Fonts.' \ '--servicedir=-:Target location for Services. The default value is ~/Library/Services.' \ - '--input_methoddir=-:Target location for Input Methods. The default value is ~/Library/Input Methods.' \ - '--internet_plugindir=-:Target location for Internet Plugins. The default value is ~/Library/Internet Plug-Ins.' \ - '--audio_unit_plugindir=-:Target location for Audio Unit Plugins. The default value is ~/Library/Audio/Plug-Ins/Components.' \ - '--vst_plugindir=-:Target location for VST Plugins. The default value is ~/Library/Audio/Plug-Ins/VST.' \ - '--vst3_plugindir=-:Target location for VST3 Plugins. The default value is ~/Library/Audio/Plug-Ins/VST3.' \ - '--screen_saverdir=-:Target location for Screen Savers. The default value is ~/Library/Screen Savers.' \ + '--input-methoddir=-:Target location for Input Methods. The default value is ~/Library/Input Methods.' \ + '--internet-plugindir=-:Target location for Internet Plugins. The default value is ~/Library/Internet Plug-Ins.' \ + '--audio-unit-plugindir=-:Target location for Audio Unit Plugins. The default value is ~/Library/Audio/Plug-Ins/Components.' \ + '--vst-plugindir=-:Target location for VST Plugins. The default value is ~/Library/Audio/Plug-Ins/VST.' \ + '--vst3-plugindir=-:Target location for VST3 Plugins. The default value is ~/Library/Audio/Plug-Ins/VST3.' \ + '--screen-saverdir=-:Target location for Screen Savers. The default value is ~/Library/Screen Savers.' \ '--no-binaries:Do not link "helper" executables to /usr/local/bin.' \ '--debug:Output debugging information of use to Cask authors and developers.' \ ':command:->command' \ diff --git a/docs/Manpage.md b/docs/Manpage.md index c7b9d3615d..946d3c0a15 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1422,22 +1422,22 @@ These options are applicable to subcommands accepting a `--cask` flag and all `c * `--servicedir`: Target location for Services (default: `~/Library/Services`). -* `--input_methoddir`: +* `--input-methoddir`: Target location for Input Methods (default: `~/Library/Input Methods`). -* `--internet_plugindir`: +* `--internet-plugindir`: Target location for Internet Plugins (default: `~/Library/Internet Plug-Ins`). -* `--audio_unit_plugindir`: +* `--audio-unit-plugindir`: Target location for Audio Unit Plugins (default: `~/Library/Audio/Plug-Ins/Components`). -* `--vst_plugindir`: +* `--vst-plugindir`: Target location for VST Plugins (default: `~/Library/Audio/Plug-Ins/VST`). -* `--vst3_plugindir`: +* `--vst3-plugindir`: Target location for VST3 Plugins (default: `~/Library/Audio/Plug-Ins/VST3`). -* `--screen_saverdir`: +* `--screen-saverdir`: Target location for Screen Savers (default: `~/Library/Screen Savers`). * `--language`: diff --git a/manpages/brew.1 b/manpages/brew.1 index 0810cdaf2f..0284bb679f 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1980,27 +1980,27 @@ Target location for Fonts (default: \fB~/Library/Fonts\fR)\. Target location for Services (default: \fB~/Library/Services\fR)\. . .TP -\fB\-\-input_methoddir\fR +\fB\-\-input\-methoddir\fR Target location for Input Methods (default: \fB~/Library/Input Methods\fR)\. . .TP -\fB\-\-internet_plugindir\fR +\fB\-\-internet\-plugindir\fR Target location for Internet Plugins (default: \fB~/Library/Internet Plug\-Ins\fR)\. . .TP -\fB\-\-audio_unit_plugindir\fR +\fB\-\-audio\-unit\-plugindir\fR Target location for Audio Unit Plugins (default: \fB~/Library/Audio/Plug\-Ins/Components\fR)\. . .TP -\fB\-\-vst_plugindir\fR +\fB\-\-vst\-plugindir\fR Target location for VST Plugins (default: \fB~/Library/Audio/Plug\-Ins/VST\fR)\. . .TP -\fB\-\-vst3_plugindir\fR +\fB\-\-vst3\-plugindir\fR Target location for VST3 Plugins (default: \fB~/Library/Audio/Plug\-Ins/VST3\fR)\. . .TP -\fB\-\-screen_saverdir\fR +\fB\-\-screen\-saverdir\fR Target location for Screen Savers (default: \fB~/Library/Screen Savers\fR)\. . .TP