cmd/switch: improve usability.
- Ensure that we output the available versions where relevant - Use `<formula>` to be consistent with other commands’ help - General code cleanup
This commit is contained in:
parent
5b68bb84d2
commit
33b5ac78ad
@ -1,5 +1,5 @@
|
||||
#: * `switch` <name> <version>:
|
||||
#: Symlink all of the specific <version> of <name>'s install to Homebrew prefix.
|
||||
#: * `switch` <formula> <version>:
|
||||
#: Symlink all of the specific <version> of <formula>'s install to Homebrew prefix.
|
||||
|
||||
require "formula"
|
||||
require "keg"
|
||||
@ -9,14 +9,15 @@ module Homebrew
|
||||
module_function
|
||||
|
||||
def switch
|
||||
if ARGV.named.length != 2
|
||||
onoe "Usage: brew switch <name> <version>"
|
||||
name = ARGV.first
|
||||
|
||||
usage = "Usage: brew switch <formula> <version>"
|
||||
|
||||
unless name
|
||||
onoe usage
|
||||
exit 1
|
||||
end
|
||||
|
||||
name = ARGV.shift
|
||||
version = ARGV.shift
|
||||
|
||||
rack = Formulary.to_rack(name)
|
||||
|
||||
unless rack.directory?
|
||||
@ -24,13 +25,21 @@ module Homebrew
|
||||
exit 2
|
||||
end
|
||||
|
||||
# Does the target version exist?
|
||||
versions = rack.subdirs
|
||||
.map { |d| Keg.new(d).version }
|
||||
.sort
|
||||
.join(", ")
|
||||
version = ARGV[1]
|
||||
|
||||
if !version || ARGV.named.length > 2
|
||||
onoe usage
|
||||
puts "#{name} installed versions: #{versions}"
|
||||
exit 1
|
||||
end
|
||||
|
||||
unless (rack/version).directory?
|
||||
onoe "#{name} does not have a version \"#{version}\" in the Cellar."
|
||||
|
||||
versions = rack.subdirs.map { |d| Keg.new(d).version }.sort
|
||||
puts "Versions available: #{versions.join(", ")}"
|
||||
|
||||
puts "#{name} installed versions: #{versions}"
|
||||
exit 3
|
||||
end
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
describe "brew switch", :integration_test do
|
||||
it "allows switching between Formula versions" do
|
||||
expect { brew "switch" }
|
||||
.to output(/Usage: brew switch <name> <version>/).to_stderr
|
||||
.to output(/Usage: brew switch <formula> <version>/).to_stderr
|
||||
.and not_to_output.to_stdout
|
||||
.and be_a_failure
|
||||
|
||||
@ -25,7 +25,7 @@ describe "brew switch", :integration_test do
|
||||
.and be_a_success
|
||||
|
||||
expect { brew "switch", "testball", "0.3" }
|
||||
.to output("Versions available: 0.1, 0.2\n").to_stdout
|
||||
.to output("testball installed versions: 0.1, 0.2\n").to_stdout
|
||||
.and output(/testball does not have a version "0.3"/).to_stderr
|
||||
.and be_a_failure
|
||||
end
|
||||
|
||||
@ -444,8 +444,8 @@ With `--verbose` or `-v`, many commands print extra debugging information. Note
|
||||
|
||||
Exits with a non-zero status if any style violations are found.
|
||||
|
||||
* `switch` `name` `version`:
|
||||
Symlink all of the specific `version` of `name`'s install to Homebrew prefix.
|
||||
* `switch` `formula` `version`:
|
||||
Symlink all of the specific `version` of `formula`'s install to Homebrew prefix.
|
||||
|
||||
* `tap`:
|
||||
List all installed taps.
|
||||
|
||||
@ -455,8 +455,8 @@ Passing \fB\-\-only\-cops=\fR\fIcops\fR will check for violations of only the li
|
||||
Exits with a non\-zero status if any style violations are found\.
|
||||
.
|
||||
.TP
|
||||
\fBswitch\fR \fIname\fR \fIversion\fR
|
||||
Symlink all of the specific \fIversion\fR of \fIname\fR\'s install to Homebrew prefix\.
|
||||
\fBswitch\fR \fIformula\fR \fIversion\fR
|
||||
Symlink all of the specific \fIversion\fR of \fIformula\fR\'s install to Homebrew prefix\.
|
||||
.
|
||||
.TP
|
||||
\fBtap\fR
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user