Class: Bundler::CLI::Install
- Inherits:
-
Object
- Object
- Bundler::CLI::Install
- Defined in:
- lib/bundler/cli/install.rb
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
Returns the value of attribute options.
Instance Method Summary collapse
-
#initialize(options) ⇒ Install
constructor
A new instance of Install.
- #run ⇒ Object
Constructor Details
#initialize(options) ⇒ Install
Returns a new instance of Install.
4 5 6 |
# File 'lib/bundler/cli/install.rb', line 4 def initialize() @options = end |
Instance Attribute Details
#options ⇒ Object (readonly)
Returns the value of attribute options.
3 4 5 |
# File 'lib/bundler/cli/install.rb', line 3 def @options end |
Instance Method Details
#run ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/bundler/cli/install.rb', line 8 def run Bundler.ui.level = "error" if [:quiet] warn_if_root [:with, :without].each do |option| if [option] [option] = [option].join(":").tr(" ", ":").split(":") end end if [:without] && [:with] conflicting_groups = [:without] & [:with] unless conflicting_groups.empty? Bundler.ui.error "You can't list a group in both, --with and --without." \ "The offending groups are: #{conflicting_groups.join(", ")}." exit 1 end end Bundler.settings.with = [] if [:with] && [:with].empty? Bundler.settings.without = [] if [:without] && [:without].empty? with = .fetch("with", []) with |= Bundler.settings.with.map {|group| group.to_s } with -= [:without] if [:without] without = .fetch("without", []) without |= Bundler.settings.without.map {|group| group.to_s } without -= [:with] if [:with] [:with] = with [:without] = without ENV['RB_USER_INSTALL'] = '1' if Bundler::FREEBSD # Just disable color in deployment mode Bundler.ui.shell = Thor::Shell::Basic.new if [:deployment] if ([:path] || [:deployment]) && [:system] Bundler.ui.error "You have specified both a path to install your gems to, \n" \ "as well as --system. Please choose." exit 1 end if (["trust-policy"]) unless (Bundler.rubygems.security_policies.keys.include?(["trust-policy"])) Bundler.ui.error "Rubygems doesn't know about trust policy '#{["trust-policy"]}'. " \ "The known policies are: #{Bundler.rubygems.security_policies.keys.join(', ')}." exit 1 end Bundler.settings["trust-policy"] = ["trust-policy"] else Bundler.settings["trust-policy"] = nil if Bundler.settings["trust-policy"] end if [:deployment] || [:frozen] unless Bundler.default_lockfile.exist? flag = [:deployment] ? '--deployment' : '--frozen' raise ProductionError, "The #{flag} flag requires a Gemfile.lock. Please make " \ "sure you have checked your Gemfile.lock into version control " \ "before deploying." end if Bundler.app_cache.exist? [:local] = true end Bundler.settings[:frozen] = '1' end # When install is called with --no-deployment, disable deployment mode if [:deployment] == false Bundler.settings.delete(:frozen) [:system] = true end Bundler.settings[:path] = nil if [:system] Bundler.settings[:path] = "vendor/bundle" if [:deployment] Bundler.settings[:path] = ["path"] if ["path"] Bundler.settings[:path] ||= "bundle" if ["standalone"] Bundler.settings[:bin] = ["binstubs"] if ["binstubs"] Bundler.settings[:bin] = nil if ["binstubs"] && ["binstubs"].empty? Bundler.settings[:shebang] = ["shebang"] if ["shebang"] Bundler.settings[:jobs] = ["jobs"] if ["jobs"] Bundler.settings[:no_prune] = true if ["no-prune"] Bundler.settings[:no_install] = true if ["no-install"] Bundler.settings[:clean] = ["clean"] if ["clean"] Bundler.settings.without = [:without] Bundler.settings.with = [:with] Bundler::Fetcher.disable_endpoint = ["full-index"] Bundler.settings[:disable_shared_gems] = Bundler.settings[:path] ? '1' : nil # rubygems plugins sometimes hook into the gem install process Gem.load_env_plugins if Gem.respond_to?(:load_env_plugins) definition = Bundler.definition definition.validate_ruby! Installer.install(Bundler.root, definition, ) Bundler.load.cache if Bundler.app_cache.exist? && !["no-cache"] && !Bundler.settings[:frozen] Bundler.ui.confirm "Bundle complete! #{dependencies_count_for(definition)}, #{gems_installed_for(definition)}." confirm_without_groups if Bundler.settings[:path] absolute_path = File.(Bundler.settings[:path]) relative_path = absolute_path.sub(File.('.'), '.') Bundler.ui.confirm "Bundled gems are installed into #{relative_path}." else Bundler.ui.confirm "Use `bundle show [gemname]` to see where a bundled gem is installed." end unless Bundler.settings["ignore_messages"] Installer..to_a.each do |name, msg| (name, msg) unless Bundler.settings["ignore_messages.#{name}"] end end Installer.ambiguous_gems.to_a.each do |name, installed_from_uri, *also_found_in_uris| Bundler.ui.error "Warning: the gem '#{name}' was found in multiple sources." Bundler.ui.error "Installed from: #{installed_from_uri}" Bundler.ui.error "Also found in:" also_found_in_uris.each { |uri| Bundler.ui.error " * #{uri}" } Bundler.ui.error "You should add a source requirement to restrict this gem to your preferred source." Bundler.ui.error "For example:" Bundler.ui.error " gem '#{name}', :source => '#{installed_from_uri}'" Bundler.ui.error "Then uninstall the gem '#{name}' (or delete all bundled gems) and then install again." end if Bundler.settings[:clean] && Bundler.settings[:path] require "bundler/cli/clean" Bundler::CLI::Clean.new().run end rescue GemNotFound, VersionConflict => e if [:local] && Bundler.app_cache.exist? Bundler.ui.warn "Some gems seem to be missing from your #{Bundler.settings.app_cache_path} directory." end unless Bundler.definition.has_rubygems_remotes? Bundler.ui.warn <<-WARN, :wrap => true Your Gemfile has no gem server sources. If you need gems that are \ not already on your machine, add a line like this to your Gemfile: source 'https://rubygems.org' WARN end raise e end |