diff --git a/Library/Homebrew/cmd/versions.rb b/Library/Homebrew/cmd/versions.rb index 55703c8112..101addb045 100644 --- a/Library/Homebrew/cmd/versions.rb +++ b/Library/Homebrew/cmd/versions.rb @@ -63,21 +63,17 @@ class Formula path = Pathname.new(Pathname.pwd+"#{name}.rb") path.write text_from_sha(sha) - # Determine the version by loading the old class file. - # Note that this means that the command will error out after it - # encounters a formula that won't import. This doesn't matter - # for most formulae, but e.g. Bash at revision aae084c9db has a - # syntax error and so `versions` isn't able to walk very far back - # through the history. - - # Unload the class so Formula#version returns the correct value. + # Unload the class so Formula#version returns the correct value # FIXME shouldn't have to do this? - Object.send(:remove_const, Formula.class_s(name)) begin - nostdout { Formula.factory(path).version } - rescue SyntaxError + version = nostdout { Formula.factory(path).version } + Object.send(:remove_const, Formula.class_s(name)) + version + rescue SyntaxError, TypeError + # We rescue these so that we can skip bad versions and + # continue walking the history nil end - end rescue nil + end end end