From f3f04e595d919cff81ed342ed0fd119f16a33bc0 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Fri, 6 Jan 2012 14:35:48 -0600 Subject: versions: enable '--compact' output This will be useful for shell tab completion when something like `brew install --version ` is implemented. Signed-off-by: Jack Nagel --- Library/Contributions/brew_bash_completion.sh | 5 +++++ Library/Contributions/manpages/brew.1.md | 5 ++++- Library/Homebrew/cmd/versions.rb | 28 +++++++++++++-------------- 3 files changed, 23 insertions(+), 15 deletions(-) (limited to 'Library') diff --git a/Library/Contributions/brew_bash_completion.sh b/Library/Contributions/brew_bash_completion.sh index 355d6443f..8299ef9a9 100644 --- a/Library/Contributions/brew_bash_completion.sh +++ b/Library/Contributions/brew_bash_completion.sh @@ -197,6 +197,11 @@ _brew_to_completion() COMPREPLY=( $(compgen -W "$opts" -- ${cur}) ) return ;; + versions) + local opts=$([[ "${COMP_WORDS[*]}" =~ "--compact" ]] || echo "--compact") + COMPREPLY=( $(compgen -W "$opts" -- ${cur}) ) + return + ;; esac fi diff --git a/Library/Contributions/manpages/brew.1.md b/Library/Contributions/manpages/brew.1.md index 2293b60f6..66fb3eb41 100644 --- a/Library/Contributions/manpages/brew.1.md +++ b/Library/Contributions/manpages/brew.1.md @@ -272,10 +272,13 @@ For the full command list, see the COMMANDS section. If `--installed` is passed, only list installed formulae. - * `versions` : + * `versions [--compact]` : List previous versions of , along with a command to checkout each version. + If `--compact` is passed, show all options on a single line separated by + spaces. + * `--cache`: Display Homebrew's download cache. *Default:* `~/Library/Caches/Homebrew` diff --git a/Library/Homebrew/cmd/versions.rb b/Library/Homebrew/cmd/versions.rb index bd234d843..906fc4f8c 100644 --- a/Library/Homebrew/cmd/versions.rb +++ b/Library/Homebrew/cmd/versions.rb @@ -5,11 +5,15 @@ module Homebrew extend self raise "Please `brew install git` first" unless system "/usr/bin/which -s git" ARGV.formulae.all? do |f| - f.versions do |version, sha| - print Tty.white - print "#{version.ljust(8)} " - print Tty.reset - puts "git checkout #{sha} #{f.pretty_relative_path}" + if ARGV.include? '--compact' + puts f.versions * " " + else + f.versions do |version, sha| + print Tty.white + print "#{version.ljust(8)} " + print Tty.reset + puts "git checkout #{sha} #{f.pretty_relative_path}" + end end end end @@ -55,14 +59,10 @@ class Formula end def version_for_sha sha - begin - version = mktemp do - path = Pathname.new(Pathname.pwd+"#{name}.rb") - path.write text_from_sha(sha) - Formula.factory(path).version - end - rescue - opoo "Version of #{name} could not be determined for #{sha}." - end + mktemp do + path = Pathname.new(Pathname.pwd+"#{name}.rb") + path.write text_from_sha(sha) + Formula.factory(path).version + end rescue nil end end -- cgit v1.2.3