# File lib/bundler/cli.rb, line 289 289: def cache 290: Bundler.definition.resolve_with_cache! 291: Bundler.load.cache 292: Bundler.settings[:no_prune] = true if options[:no_prune] 293: Bundler.load.lock 294: rescue GemNotFound => e 295: Bundler.ui.error(e.message) 296: Bundler.ui.warn "Run `bundle install` to install missing gems." 297: exit 128 298: end
# File lib/bundler/cli.rb, line 98 98: def check 99: ENV['BUNDLE_GEMFILE'] = File.expand_path(options[:gemfile]) if options[:gemfile] 100: begin 101: not_installed = Bundler.definition.missing_specs 102: rescue GemNotFound, VersionConflict 103: Bundler.ui.error "Your Gemfile's dependencies could not be satisfied" 104: Bundler.ui.warn "Install missing gems with `bundle install`" 105: exit 1 106: end 107: 108: if not_installed.any? 109: Bundler.ui.error "The following gems are missing" 110: not_installed.each { |s| Bundler.ui.error " * #{s.name} (#{s.version})" } 111: Bundler.ui.warn "Install missing gems with `bundle install`" 112: exit 1 113: else 114: Bundler.load.lock 115: Bundler.ui.info "The Gemfile's dependencies are satisfied" 116: end 117: end
# File lib/bundler/cli.rb, line 351 351: def config(name = nil, *args) 352: values = ARGV.dup 353: values.shift # remove config 354: values.shift # remove the name 355: 356: unless name 357: Bundler.ui.confirm "Settings are listed in order of priority. The top value will be used.\n" 358: 359: Bundler.settings.all.each do |setting| 360: Bundler.ui.confirm "#{setting}" 361: with_padding do 362: Bundler.settings.pretty_values_for(setting).each do |line| 363: Bundler.ui.info line 364: end 365: end 366: Bundler.ui.confirm "" 367: end 368: return 369: end 370: 371: if values.empty? 372: Bundler.ui.confirm "Settings for `#{name}` in order of priority. The top value will be used" 373: with_padding do 374: Bundler.settings.pretty_values_for(name).each { |line| Bundler.ui.info line } 375: end 376: else 377: locations = Bundler.settings.locations(name) 378: 379: if local = locations[:local] 380: Bundler.ui.info "Your application has set #{name} to #{local.inspect}. This will override the " "system value you are currently setting" 381: end 382: 383: if global = locations[:global] 384: Bundler.ui.info "You are replacing the current system value of #{name}, which is currently #{global}" 385: end 386: 387: if env = locations[:env] 388: Bundler.ui.info "You have set a bundler environment variable for #{env}. This will take precedence " "over the system value you are setting" 389: end 390: 391: Bundler.settings.set_global(name, values.join(" ")) 392: end 393: end
# File lib/bundler/cli.rb, line 410 410: def console(group = nil) 411: require 'bundler/setup' 412: group ? Bundler.require(:default, group) : Bundler.require 413: ARGV.clear 414: 415: require 'irb' 416: IRB.start 417: end
# File lib/bundler/cli.rb, line 321 321: def exec(*) 322: ARGV.delete("exec") 323: 324: Bundler.setup 325: 326: begin 327: # Run 328: Kernel.exec(*ARGV) 329: rescue Errno::EACCES 330: Bundler.ui.error "bundler: not executable: #{ARGV.first}" 331: exit 126 332: rescue Errno::ENOENT 333: Bundler.ui.error "bundler: command not found: #{ARGV.first}" 334: Bundler.ui.warn "Install missing gem binaries with `bundle install`" 335: exit 127 336: end 337: end
# File lib/bundler/cli.rb, line 456 456: def gem(name) 457: target = File.join(Dir.pwd, name) 458: if File.exist?(name) 459: Bundler.ui.error "File already exists at #{File.join(Dir.pwd, name)}" 460: exit 1 461: end 462: 463: constant_name = name.split('_').map{|p| p.capitalize}.join 464: constant_name = constant_name.split('-').map{|q| q.capitalize}.join('::') if constant_name =~ /-/ 465: constant_array = constant_name.split('::') 466: FileUtils.mkdir_p(File.join(target, 'lib', name)) 467: opts = {:name => name, :constant_name => constant_name, :constant_array => constant_array} 468: template(File.join('newgem', 'Gemfile.tt'), File.join(target, 'Gemfile'), opts) 469: template(File.join('newgem', 'Rakefile.tt'), File.join(target, 'Rakefile'), opts) 470: template(File.join('newgem', 'gitignore.tt'), File.join(target, '.gitignore'), opts) 471: template(File.join('newgem', 'newgem.gemspec.tt'), File.join(target, "#{name}.gemspec"), opts) 472: template(File.join('newgem', 'lib', 'newgem.rb.tt'), File.join(target, 'lib', "#{name}.rb"), opts) 473: template(File.join('newgem', 'lib', 'newgem', 'version.rb.tt'), File.join(target, 'lib', name, 'version.rb'), opts) 474: Bundler.ui.info "Initializating git repo in #{target}" 475: Dir.chdir(target) { `git init`; `git add .` } 476: end
# File lib/bundler/cli.rb, line 26 26: def help(cli = nil) 27: case cli 28: when "gemfile" then command = "gemfile.5" 29: when nil then command = "bundle" 30: else command = "bundle-#{cli}" 31: end 32: 33: manpages = %( 34: bundle 35: bundle-config 36: bundle-exec 37: bundle-install 38: bundle-package 39: bundle-update 40: gemfile.5) 41: 42: if manpages.include?(command) 43: root = File.expand_path("../man", __FILE__) 44: 45: if have_groff? 46: groff = "groff -Wall -mtty-char -mandoc -Tascii" 47: pager = ENV['MANPAGER'] || ENV['PAGER'] || 'more' 48: 49: Kernel.exec "#{groff} #{root}/#{command} | #{pager}" 50: else 51: puts File.read("#{root}/#{command}.txt") 52: end 53: else 54: super 55: end 56: end
# File lib/bundler/cli.rb, line 65 65: def init 66: opts = options.dup 67: if File.exist?("Gemfile") 68: Bundler.ui.error "Gemfile already exists at #{Dir.pwd}/Gemfile" 69: exit 1 70: end 71: 72: if opts[:gemspec] 73: gemspec = File.expand_path(opts[:gemspec]) 74: unless File.exist?(gemspec) 75: Bundler.ui.error "Gem specification #{gemspec} doesn't exist" 76: exit 1 77: end 78: spec = Gem::Specification.load(gemspec) 79: puts "Writing new Gemfile to #{Dir.pwd}/Gemfile" 80: File.open('Gemfile', 'wb') do |file| 81: file << "# Generated from #{gemspec}\n" 82: file << spec.to_gemfile 83: end 84: else 85: puts "Writing new Gemfile to #{Dir.pwd}/Gemfile" 86: FileUtils.cp(File.expand_path('../templates/Gemfile', __FILE__), 'Gemfile') 87: end 88: end
# File lib/bundler/cli.rb, line 156 156: def install(path = nil) 157: opts = options.dup 158: opts[:without] ||= [] 159: opts[:without].map! { |g| g.to_sym } 160: 161: 162: ENV['BUNDLE_GEMFILE'] = File.expand_path(opts[:gemfile]) if opts[:gemfile] 163: 164: if opts[:production] 165: opts[:deployment] = true 166: Bundler.ui.warn "The --production option is deprecated, and will be removed in " "the final release of Bundler 1.0. Please use --deployment instead." 167: end 168: 169: if (path || opts[:path] || opts[:deployment]) && opts[:system] 170: Bundler.ui.error "You have specified both a path to install your gems to, \n" "as well as --system. Please choose." 171: exit 1 172: end 173: 174: if path && opts[:path] 175: 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." 176: exit 1 177: end 178: 179: if opts["disable-shared-gems"] 180: 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`." 181: exit 1 182: end 183: 184: if opts[:deployment] || opts[:frozen] 185: Bundler.settings[:frozen] = '1' 186: 187: unless Bundler.default_lockfile.exist? 188: flag = opts[:deployment] ? '--deployment' : '--frozen' 189: raise ProductionError, "The #{flag} flag requires a Gemfile.lock. Please make " "sure you have checked your Gemfile.lock into version control " "before deploying." 190: end 191: 192: if Bundler.root.join("vendor/cache").exist? 193: opts[:local] = true 194: end 195: end 196: 197: # Can't use Bundler.settings for this because settings needs gemfile.dirname 198: Bundler.settings[:path] = nil if opts[:system] 199: Bundler.settings[:path] = "vendor/bundle" if opts[:deployment] 200: Bundler.settings[:path] = path if path 201: Bundler.settings[:path] = opts[:path] if opts[:path] 202: Bundler.settings[:bin] = opts["binstubs"] if opts[:binstubs] 203: Bundler.settings[:disable_shared_gems] = '1' if Bundler.settings[:path] 204: Bundler.settings.without = opts[:without] 205: Bundler.ui.be_quiet! if opts[:quiet] 206: 207: Installer.install(Bundler.root, Bundler.definition, opts) 208: Bundler.load.cache if Bundler.root.join("vendor/cache").exist? 209: Bundler.ui.confirm "Your bundle is complete! " + 210: "Use `bundle show [gemname]` to see where a bundled gem is installed." 211: 212: Bundler.ui.confirm "\nYour bundle was installed to `#{Bundler.settings[:path]}`" if Bundler.settings[:path] 213: 214: if path 215: Bundler.ui.warn "\nIf you meant to install it to your system, please remove the\n" "`#{path}` directory and run `bundle install --system`" 216: end 217: rescue GemNotFound => e 218: if Bundler.definition.no_sources? 219: Bundler.ui.warn "Your Gemfile doesn't have any sources. You can add one with a line like 'source :gemcutter'" 220: end 221: raise e 222: end
# File lib/bundler/cli.rb, line 259 259: def lock 260: Bundler.ui.warn "Lock is deprecated. Your bundle is now locked whenever you run `bundle install`." 261: end
# File lib/bundler/cli.rb, line 398 398: def open(name) 399: editor = [ENV['BUNDLER_EDITOR'], ENV['VISUAL'], ENV['EDITOR']].find{|e| !e.nil? && !e.empty? } 400: if editor 401: command = "#{editor} #{locate_gem(name)}" 402: success = system(command) 403: Bundler.ui.info "Could not run '#{command}'" unless success 404: else 405: Bundler.ui.info("To open a bundled gem, set $EDITOR or $BUNDLER_EDITOR") 406: end 407: end
# File lib/bundler/cli.rb, line 308 308: def package 309: install 310: # TODO: move cache contents here now that all bundles are locked 311: Bundler.load.cache 312: end
# File lib/bundler/cli.rb, line 273 273: def show(gem_name = nil) 274: Bundler.load.lock 275: 276: if gem_name 277: Bundler.ui.info locate_gem(gem_name) 278: else 279: Bundler.ui.info "Gems included by the bundle:" 280: Bundler.load.specs.sort_by { |s| s.name }.each do |s| 281: Bundler.ui.info " * #{s.name} (#{s.version}#{s.git_version})" 282: end 283: end 284: end
# File lib/bundler/cli.rb, line 264 264: def unlock 265: Bundler.ui.warn "Unlock is deprecated. To update to newer gem versions, use `bundle update`." 266: end
# File lib/bundler/cli.rb, line 242 242: def update(*gems) 243: sources = Array(options[:source]) 244: 245: if gems.empty? && sources.empty? 246: # We're doing a full update 247: Bundler.definition(true) 248: else 249: Bundler.definition(:gems => gems, :sources => sources) 250: end 251: 252: Installer.install Bundler.root, Bundler.definition, "update" => true 253: Bundler.load.cache if Bundler.root.join("vendor/cache").exist? 254: Bundler.ui.confirm "Your bundle is updated! " + 255: "Use `bundle show [gemname]` to see where a bundled gem is installed." 256: end
# File lib/bundler/cli.rb, line 420 420: def version 421: Bundler.ui.info "Bundler version #{Bundler::VERSION}" 422: end
# File lib/bundler/cli.rb, line 434 434: def viz 435: output_file = File.expand_path(options[:file]) 436: graph = Graph.new( Bundler.load ) 437: 438: begin 439: graph.viz(output_file, options[:version], options[:requirements]) 440: Bundler.ui.info output_file 441: rescue LoadError => e 442: Bundler.ui.error e.inspect 443: Bundler.ui.warn "Make sure you have the graphviz ruby gem. You can install it with:" 444: Bundler.ui.warn "`gem install ruby-graphviz`" 445: rescue StandardError => e 446: if e.message =~ /GraphViz not installed or dot not in PATH/ 447: Bundler.ui.error e.message 448: Bundler.ui.warn "The ruby graphviz gem requires GraphViz to be installed" 449: else 450: raise 451: end 452: end 453: end
# File lib/bundler/cli.rb, line 484 484: def have_groff? 485: `which groff 2>#{NULL}` 486: $? == 0 487: end
# File lib/bundler/cli.rb, line 489 489: def locate_gem(name) 490: spec = Bundler.load.specs.find{|s| s.name == name } 491: raise GemNotFound, "Could not find gem '#{name}' in the current bundle." unless spec 492: if spec.name == 'bundler' 493: return File.expand_path('../../../', __FILE__) 494: end 495: spec.full_gem_path 496: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.