aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorJack Nagel2015-04-05 14:57:06 -0400
committerJack Nagel2015-04-05 14:57:06 -0400
commitdeebf8668319114ff342753047f2bf057ff2970d (patch)
tree46a027cd7892ddb422121267aa9100c81ab4c232 /Library/Homebrew/cmd
parent27092cabc4bda0904e1616bb2e5d4d949dbd3178 (diff)
downloadbrew-deebf8668319114ff342753047f2bf057ff2970d.tar.bz2
switch: do not require an existing formula
Diffstat (limited to 'Library/Homebrew/cmd')
-rw-r--r--Library/Homebrew/cmd/switch.rb27
1 files changed, 14 insertions, 13 deletions
diff --git a/Library/Homebrew/cmd/switch.rb b/Library/Homebrew/cmd/switch.rb
index a626aaf4c..c90d66fa8 100644
--- a/Library/Homebrew/cmd/switch.rb
+++ b/Library/Homebrew/cmd/switch.rb
@@ -1,48 +1,49 @@
-require 'formula'
-require 'keg'
+require "formula"
+require "keg"
+require "cmd/link"
module Homebrew
def switch
if ARGV.named.length != 2
- onoe "Usage: brew switch <formula> <version>"
+ onoe "Usage: brew switch <name> <version>"
exit 1
end
name = ARGV.shift
version = ARGV.shift
- # Does this formula have any versions?
- f = Formula.factory(name.downcase)
- cellar = f.prefix.parent
- unless cellar.directory?
+ canonical_name = Formulary.canonical_name(name)
+ rack = HOMEBREW_CELLAR.join(canonical_name)
+
+ unless rack.directory?
onoe "#{name} not found in the Cellar."
exit 2
end
# Does the target version exist?
- unless (cellar+version).directory?
+ unless (rack+version).directory?
onoe "#{name} does not have a version \"#{version}\" in the Cellar."
- versions = cellar.subdirs.map { |d| Keg.new(d).version }
+ versions = rack.subdirs.map { |d| Keg.new(d).version }
puts "Versions available: #{versions.join(', ')}"
exit 3
end
# Unlink all existing versions
- cellar.subdirs.each do |v|
+ rack.subdirs.each do |v|
keg = Keg.new(v)
puts "Cleaning #{keg}"
keg.unlink
end
+ keg = Keg.new(rack+version)
+
# Link new version, if not keg-only
- if f.keg_only?
- keg = Keg.new(cellar+version)
+ if keg_only?(canonical_name)
keg.optlink
puts "Opt link created for #{keg}"
else
- keg = Keg.new(cellar+version)
puts "#{keg.link} links created for #{keg}"
end
end