# File lib/bundler/cli.rb, line 13
13: def initialize(*)
14: super
15: the_shell = (options["no-color"] ? Thor::Shell::Basic.new : shell)
16: Bundler.ui = UI::Shell.new(the_shell)
17: Bundler.ui.debug! if options["verbose"]
18: Gem::DefaultUserInteraction.ui = UI::RGProxy.new(Bundler.ui)
19: end
# File lib/bundler/cli.rb, line 308
308: def cache
309: Bundler.definition.resolve_with_cache!
310: Bundler.load.cache
311: Bundler.settings[:no_prune] = true if options[:no_prune]
312: Bundler.load.lock
313: rescue GemNotFound => e
314: Bundler.ui.error(e.message)
315: Bundler.ui.warn "Run `bundle install` to install missing gems."
316: exit 128
317: end
# File lib/bundler/cli.rb, line 99
99: def check
100: ENV['BUNDLE_GEMFILE'] = File.expand_path(options[:gemfile]) if options[:gemfile]
101: begin
102: not_installed = Bundler.definition.missing_specs
103: rescue GemNotFound, VersionConflict
104: Bundler.ui.error "Your Gemfile's dependencies could not be satisfied"
105: Bundler.ui.warn "Install missing gems with `bundle install`"
106: exit 1
107: end
108:
109: if not_installed.any?
110: Bundler.ui.error "The following gems are missing"
111: not_installed.each { |s| Bundler.ui.error " * #{s.name} (#{s.version})" }
112: Bundler.ui.warn "Install missing gems with `bundle install`"
113: exit 1
114: else
115: Bundler.load.lock
116: Bundler.ui.info "The Gemfile's dependencies are satisfied"
117: end
118: end
# File lib/bundler/cli.rb, line 370
370: def config(name = nil, *args)
371: values = ARGV.dup
372: values.shift # remove config
373: values.shift # remove the name
374:
375: unless name
376: Bundler.ui.confirm "Settings are listed in order of priority. The top value will be used.\n"
377:
378: Bundler.settings.all.each do |setting|
379: Bundler.ui.confirm "#{setting}"
380: with_padding do
381: Bundler.settings.pretty_values_for(setting).each do |line|
382: Bundler.ui.info line
383: end
384: end
385: Bundler.ui.confirm ""
386: end
387: return
388: end
389:
390: if values.empty?
391: Bundler.ui.confirm "Settings for `#{name}` in order of priority. The top value will be used"
392: with_padding do
393: Bundler.settings.pretty_values_for(name).each { |line| Bundler.ui.info line }
394: end
395: else
396: locations = Bundler.settings.locations(name)
397:
398: if local = locations[:local]
399: Bundler.ui.info "Your application has set #{name} to #{local.inspect}. This will override the " "system value you are currently setting"
400: end
401:
402: if global = locations[:global]
403: Bundler.ui.info "You are replacing the current system value of #{name}, which is currently #{global}"
404: end
405:
406: if env = locations[:env]
407: Bundler.ui.info "You have set a bundler environment variable for #{env}. This will take precedence " "over the system value you are setting"
408: end
409:
410: Bundler.settings.set_global(name, values.join(" "))
411: end
412: end
# File lib/bundler/cli.rb, line 432
432: def console(group = nil)
433: require 'bundler/setup'
434: group ? Bundler.require(:default, group) : Bundler.require
435: ARGV.clear
436:
437: require 'irb'
438: IRB.start
439: end
# File lib/bundler/cli.rb, line 340
340: def exec(*)
341: ARGV.delete("exec")
342:
343: Bundler.setup
344:
345: begin
346: # Run
347: Kernel.exec(*ARGV)
348: rescue Errno::EACCES
349: Bundler.ui.error "bundler: not executable: #{ARGV.first}"
350: exit 126
351: rescue Errno::ENOENT
352: Bundler.ui.error "bundler: command not found: #{ARGV.first}"
353: Bundler.ui.warn "Install missing gem binaries with `bundle install`"
354: exit 127
355: end
356: end
# File lib/bundler/cli.rb, line 479
479: def gem(name)
480: target = File.join(Dir.pwd, name)
481: constant_name = name.split('_').map{|p| p.capitalize}.join
482: constant_name = constant_name.split('-').map{|q| q.capitalize}.join('::') if constant_name =~ /-/
483: constant_array = constant_name.split('::')
484: FileUtils.mkdir_p(File.join(target, 'lib', name))
485: opts = {:name => name, :constant_name => constant_name, :constant_array => constant_array}
486: template(File.join("newgem/Gemfile.tt"), File.join(target, "Gemfile"), opts)
487: template(File.join("newgem/Rakefile.tt"), File.join(target, "Rakefile"), opts)
488: template(File.join("newgem/gitignore.tt"), File.join(target, ".gitignore"), opts)
489: template(File.join("newgem/newgem.gemspec.tt"), File.join(target, "#{name}.gemspec"), opts)
490: template(File.join("newgem/lib/newgem.rb.tt"), File.join(target, "lib/#{name}.rb"), opts)
491: template(File.join("newgem/lib/newgem/version.rb.tt"), File.join(target, "lib/#{name}/version.rb"), opts)
492: if options[:bin]
493: template(File.join("newgem/bin/newgem.tt"), File.join(target, 'bin', name), opts)
494: end
495: Bundler.ui.info "Initializating git repo in #{target}"
496: Dir.chdir(target) { `git init`; `git add .` }
497: end
# File lib/bundler/cli.rb, line 27
27: def help(cli = nil)
28: case cli
29: when "gemfile" then command = "gemfile.5"
30: when nil then command = "bundle"
31: else command = "bundle-#{cli}"
32: end
33:
34: manpages = %(
35: bundle
36: bundle-config
37: bundle-exec
38: bundle-install
39: bundle-package
40: bundle-update
41: gemfile.5)
42:
43: if manpages.include?(command)
44: root = File.expand_path("../man", __FILE__)
45:
46: if have_groff? && root !~ %{^file:/.+!/META-INF/jruby.home/.+}
47: groff = "groff -Wall -mtty-char -mandoc -Tascii"
48: pager = ENV['MANPAGER'] || ENV['PAGER'] || 'more'
49:
50: Kernel.exec "#{groff} #{root}/#{command} | #{pager}"
51: else
52: puts File.read("#{root}/#{command}.txt")
53: end
54: else
55: super
56: end
57: end
# File lib/bundler/cli.rb, line 66
66: def init
67: opts = options.dup
68: if File.exist?("Gemfile")
69: Bundler.ui.error "Gemfile already exists at #{Dir.pwd}/Gemfile"
70: exit 1
71: end
72:
73: if opts[:gemspec]
74: gemspec = File.expand_path(opts[:gemspec])
75: unless File.exist?(gemspec)
76: Bundler.ui.error "Gem specification #{gemspec} doesn't exist"
77: exit 1
78: end
79: spec = Gem::Specification.load(gemspec)
80: puts "Writing new Gemfile to #{Dir.pwd}/Gemfile"
81: File.open('Gemfile', 'wb') do |file|
82: file << "# Generated from #{gemspec}\n"
83: file << spec.to_gemfile
84: end
85: else
86: puts "Writing new Gemfile to #{Dir.pwd}/Gemfile"
87: FileUtils.cp(File.expand_path('../templates/Gemfile', __FILE__), 'Gemfile')
88: end
89: end
# File lib/bundler/cli.rb, line 157
157: def install(path = nil)
158: opts = options.dup
159: opts[:without] ||= []
160: if opts[:without].size == 1
161: opts[:without].map!{|g| g.split(" ") }
162: opts[:without].flatten!
163: end
164: opts[:without].map!{|g| g.to_sym }
165:
166: ENV['BUNDLE_GEMFILE'] = File.expand_path(opts[:gemfile]) if opts[:gemfile]
167: ENV['RB_USER_INSTALL'] = '1' if Bundler::FREEBSD
168:
169: # Just disable color in deployment mode
170: Bundler.ui.shell = Thor::Shell::Basic.new if opts[:deployment]
171:
172: if opts[:production]
173: opts[:deployment] = true
174: Bundler.ui.warn "The --production option is deprecated, and will be removed in " "the final release of Bundler 1.0. Please use --deployment instead."
175: end
176:
177: if (path || opts[:path] || opts[:deployment]) && opts[:system]
178: Bundler.ui.error "You have specified both a path to install your gems to, \n" "as well as --system. Please choose."
179: exit 1
180: end
181:
182: if path && opts[:path]
183: Bundler.ui.error "You have specified a path via `bundle install #{path}` as well as\n" "by `bundle install --path #{options[:path]}`. These options are\n" "equivalent, so please use one or the other."
184: exit 1
185: end
186:
187: if opts["disable-shared-gems"]
188: Bundler.ui.error "The disable-shared-gem option is no longer available.\n\n" "Instead, use `bundle install` to install to your system,\n" "or `bundle install --path path/to/gems` to install to an isolated\n" "location. Bundler will resolve relative paths relative to\n" "your `Gemfile`."
189: exit 1
190: end
191:
192: if opts[:deployment] || opts[:frozen]
193: unless Bundler.default_lockfile.exist?
194: flag = opts[:deployment] ? '--deployment' : '--frozen'
195: raise ProductionError, "The #{flag} flag requires a Gemfile.lock. Please make " "sure you have checked your Gemfile.lock into version control " "before deploying."
196: end
197:
198: if Bundler.root.join("vendor/cache").exist?
199: opts[:local] = true
200: end
201:
202: Bundler.settings[:frozen] = '1'
203: end
204:
205: # Can't use Bundler.settings for this because settings needs gemfile.dirname
206: Bundler.settings[:path] = nil if opts[:system]
207: Bundler.settings[:path] = "vendor/bundle" if opts[:deployment]
208: Bundler.settings[:path] = path if path
209: Bundler.settings[:path] = opts[:path] if opts[:path]
210: Bundler.settings[:bin] = opts["binstubs"] if opts[:binstubs]
211: Bundler.settings[:disable_shared_gems] = '1' if Bundler.settings[:path]
212: Bundler.settings.without = opts[:without] unless opts[:without].empty?
213: Bundler.ui.be_quiet! if opts[:quiet]
214:
215: Installer.install(Bundler.root, Bundler.definition, opts)
216: Bundler.load.cache if Bundler.root.join("vendor/cache").exist?
217:
218: if Bundler.settings[:path]
219: relative_path = Bundler.settings[:path]
220: relative_path = "./" + relative_path unless relative_path[0] == //
221: Bundler.ui.confirm "Your bundle is complete! " +
222: "It was installed into #{relative_path}"
223: else
224: Bundler.ui.confirm "Your bundle is complete! " +
225: "Use `bundle show [gemname]` to see where a bundled gem is installed."
226: end
227:
228: if path
229: Bundler.ui.warn "The path argument to `bundle install` is deprecated. " +
230: "It will be removed in version 1.1. " +
231: "Please use `bundle install --path #{path}` instead."
232: end
233: rescue GemNotFound => e
234: if opts[:local]
235: Bundler.ui.warn "Some gems seem to be missing from your vendor/cache directory."
236: end
237:
238: if Bundler.definition.no_sources?
239: Bundler.ui.warn "Your Gemfile doesn't have any sources. You can add one with a line like 'source :rubygems'"
240: end
241: raise e
242: end
# File lib/bundler/cli.rb, line 278
278: def lock
279: Bundler.ui.warn "Lock is deprecated. Your bundle is now locked whenever you run `bundle install`."
280: end
# File lib/bundler/cli.rb, line 417
417: def open(name)
418: editor = [ENV['BUNDLER_EDITOR'], ENV['VISUAL'], ENV['EDITOR']].find{|e| !e.nil? && !e.empty? }
419: if editor
420: gem_path = locate_gem(name)
421: Dir.chdir(gem_path) do
422: command = "#{editor} #{gem_path}"
423: success = system(command)
424: Bundler.ui.info "Could not run '#{command}'" unless success
425: end
426: else
427: Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR")
428: end
429: end
# File lib/bundler/cli.rb, line 327
327: def package
328: install
329: # TODO: move cache contents here now that all bundles are locked
330: Bundler.load.cache
331: end
# File lib/bundler/cli.rb, line 292
292: def show(gem_name = nil)
293: Bundler.load.lock
294:
295: if gem_name
296: Bundler.ui.info locate_gem(gem_name)
297: else
298: Bundler.ui.info "Gems included by the bundle:"
299: Bundler.load.specs.sort_by { |s| s.name }.each do |s|
300: Bundler.ui.info " * #{s.name} (#{s.version}#{s.git_version})"
301: end
302: end
303: end
# File lib/bundler/cli.rb, line 283
283: def unlock
284: Bundler.ui.warn "Unlock is deprecated. To update to newer gem versions, use `bundle update`."
285: end
# File lib/bundler/cli.rb, line 261
261: def update(*gems)
262: sources = Array(options[:source])
263:
264: if gems.empty? && sources.empty?
265: # We're doing a full update
266: Bundler.definition(true)
267: else
268: Bundler.definition(:gems => gems, :sources => sources)
269: end
270:
271: Installer.install Bundler.root, Bundler.definition, "update" => true
272: Bundler.load.cache if Bundler.root.join("vendor/cache").exist?
273: Bundler.ui.confirm "Your bundle is updated! " +
274: "Use `bundle show [gemname]` to see where a bundled gem is installed."
275: end
# File lib/bundler/cli.rb, line 442
442: def version
443: Bundler.ui.info "Bundler version #{Bundler::VERSION}"
444: end
# File lib/bundler/cli.rb, line 456
456: def viz
457: output_file = File.expand_path(options[:file])
458: graph = Graph.new( Bundler.load )
459:
460: begin
461: graph.viz(output_file, options[:version], options[:requirements])
462: Bundler.ui.info output_file
463: rescue LoadError => e
464: Bundler.ui.error e.inspect
465: Bundler.ui.warn "Make sure you have the graphviz ruby gem. You can install it with:"
466: Bundler.ui.warn "`gem install ruby-graphviz`"
467: rescue StandardError => e
468: if e.message =~ /GraphViz not installed or dot not in PATH/
469: Bundler.ui.error e.message
470: Bundler.ui.warn "The ruby graphviz gem requires GraphViz to be installed"
471: else
472: raise
473: end
474: end
475: end
# File lib/bundler/cli.rb, line 505
505: def have_groff?
506: !(`which groff` rescue '').empty?
507: end
# File lib/bundler/cli.rb, line 509
509: def locate_gem(name)
510: spec = Bundler.load.specs.find{|s| s.name == name }
511: raise GemNotFound, "Could not find gem '#{name}' in the current bundle." unless spec
512: if spec.name == 'bundler'
513: return File.expand_path('../../../', __FILE__)
514: end
515: spec.full_gem_path
516: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.