Module: Brew::Gem::CLI
- Defined in:
- lib/brew/gem/cli.rb
Defined Under Namespace
Classes: Arguments
Constant Summary collapse
- COMMANDS =
{ "install" => ("Install a brew gem, accepts an optional version argument\n" + " (e.g. brew gem install <name> [version])"), "upgrade" => "Upgrade to the latest version of a brew gem", "uninstall" => "Uninstall a brew gem", "info" => "Show information for an installed gem", "formula" => "Print out the generated formula for a gem", "help" => "This message" }
- HOMEBREW_RUBY_FLAG =
"--homebrew-ruby"
- SYSTEM_RUBY_FLAG =
"--system-ruby"
- RUBY_FLAGS =
[HOMEBREW_RUBY_FLAG, SYSTEM_RUBY_FLAG]
Class Method Summary collapse
- .expand_formula(name, version, use_homebrew_ruby = false, gem_arguments = []) ⇒ Object
- .fetch_version(name, version = nil) ⇒ Object
- .help_msg ⇒ Object
- .homebrew_prefix ⇒ Object
- .homebrew_ruby?(ruby_flag) ⇒ Boolean
- .process_args(args) ⇒ Object
- .run(args = ARGV) ⇒ Object
- .with_temp_formula(name, version, use_homebrew_ruby, gem_arguments) ⇒ Object
Class Method Details
.expand_formula(name, version, use_homebrew_ruby = false, gem_arguments = []) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/brew/gem/cli.rb', line 95 def (name, version, use_homebrew_ruby = false, gem_arguments = []) klass = 'Gem' + name.capitalize.gsub(/[-_.\s]([a-zA-Z0-9])/) { $1.upcase }.gsub('+', 'x') user_gemrc = "#{ENV['HOME']}/.gemrc" template_file = File.('../formula.rb.erb', __FILE__) template = ERB.new(File.read(template_file)) template.result(binding) end |
.fetch_version(name, version = nil) ⇒ Object
66 67 68 69 70 71 72 73 74 75 |
# File 'lib/brew/gem/cli.rb', line 66 def fetch_version(name, version = nil) gems = `gem list --remote "^#{name}$"`.lines unless gems.detect { |f| f =~ /^#{name} \(([^\s,]+).*\)/ } abort "Could not find a valid gem '#{name}'" end version ||= $1 version end |
.help_msg ⇒ Object
61 62 63 64 |
# File 'lib/brew/gem/cli.rb', line 61 def help_msg (["Please specify a gem name (e.g. brew gem command <name>)"] + COMMANDS.map {|name, desc| " #{name} - #{desc}"}).join("\n") end |
.homebrew_prefix ⇒ Object
91 92 93 |
# File 'lib/brew/gem/cli.rb', line 91 def homebrew_prefix ENV['HOMEBREW_PREFIX'] || `brew --prefix`.chomp end |
.homebrew_ruby?(ruby_flag) ⇒ Boolean
115 116 117 118 |
# File 'lib/brew/gem/cli.rb', line 115 def homebrew_ruby?(ruby_flag) File.exist?("#{homebrew_prefix}/opt/ruby") && ruby_flag.nil? || ruby_flag == HOMEBREW_RUBY_FLAG end |
.process_args(args) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/brew/gem/cli.rb', line 77 def process_args(args) arguments = Arguments.new(args) command = arguments.command abort help_msg unless command abort "unknown command: #{command}\n#{help_msg}" unless COMMANDS.keys.include?(command) if command == 'help' STDERR.puts help_msg exit 0 end arguments end |
.run(args = ARGV) ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/brew/gem/cli.rb', line 120 def run(args = ARGV) arguments = process_args(args) name = arguments.gem version = fetch_version(name, arguments.supplied_version) with_temp_formula(name, version, homebrew_ruby?(arguments.ruby_flag), arguments.to_gem_args) do |filename| case arguments.command when "formula" $stdout.puts File.read(filename) else system "brew #{arguments.to_brew_args.shelljoin} --formula #{filename}" exit $?.exitstatus unless $?.success? end end end |
.with_temp_formula(name, version, use_homebrew_ruby, gem_arguments) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/brew/gem/cli.rb', line 103 def with_temp_formula(name, version, use_homebrew_ruby, gem_arguments) filename = File.join Dir.tmpdir, "gem-#{name}.rb" open(filename, 'w') do |f| f.puts (name, version, use_homebrew_ruby, gem_arguments) end yield filename ensure File.unlink filename end |