Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 205 lines (170 sloc) 5.183 kb
63b636b First pass at gemfile pack
Carlhuda authored
1 require 'fileutils'
ce350cc Get a simple bbl install working
Carlhuda authored
2 require 'pathname'
88741e6 First pass at bbl lock
Carlhuda authored
3 require 'yaml'
820bb93 Rename rubygems-ext to rubygems_ext
Carl Lerche authored
4 require 'bundler/rubygems_ext'
1da7eb3 Don't generate bundler.gemspec anymore
Carlhuda authored
5 require 'bundler/version'
33154fd Joshua Hull Add Bundler.with_clean_env for blocks of ruby without a bundled env
joshbuddy authored
6
152a50a Rename gemfile back to bundler
Carl Lerche authored
7 module Bundler
33154fd Joshua Hull Add Bundler.with_clean_env for blocks of ruby without a bundled env
joshbuddy authored
8 ORIGINAL_ENV = ENV.to_hash
67859e4 Moving in thor
Carlhuda authored
9
152a50a Rename gemfile back to bundler
Carl Lerche authored
10 autoload :Definition, 'bundler/definition'
11 autoload :Dependency, 'bundler/dependency'
12 autoload :Dsl, 'bundler/dsl'
13 autoload :Environment, 'bundler/environment'
f414889 Kevin Moore 'bundle viz'
kevmoo authored
14 autoload :Graph, 'bundler/graph'
152a50a Rename gemfile back to bundler
Carl Lerche authored
15 autoload :Index, 'bundler/index'
16 autoload :Installer, 'bundler/installer'
f779dee First pass at lockfile parser
Carlhuda authored
17 autoload :LazySpecification, 'bundler/lazy_specification'
ba579f4 Remove temporary flex stuff
Carlhuda authored
18 autoload :LockfileParser, 'bundler/lockfile_parser'
152a50a Rename gemfile back to bundler
Carl Lerche authored
19 autoload :RemoteSpecification, 'bundler/remote_specification'
20 autoload :Resolver, 'bundler/resolver'
c0f8641 Persist spec groups to the lockfile
Carl Lerche authored
21 autoload :Runtime, 'bundler/runtime'
ea08895 Add the ability to specify a location with bundle install
Carl Lerche authored
22 autoload :Settings, 'bundler/settings'
f7bfdde Actually disable system gems in .bundle/environment.rb
Carlhuda authored
23 autoload :SharedHelpers, 'bundler/shared_helpers'
529d792 Use tsort to order specifications. It makes teh crazy work.
Carl Lerche authored
24 autoload :SpecSet, 'bundler/spec_set'
152a50a Rename gemfile back to bundler
Carl Lerche authored
25 autoload :Source, 'bundler/source'
0f97e4f André Arko Gems from git need their full_gem_path fixed, even when locked
indirect authored
26 autoload :Specification, 'bundler/shared_helpers'
434fb42 First pass at output
Carlhuda authored
27 autoload :UI, 'bundler/ui'
67859e4 Moving in thor
Carlhuda authored
28
de5054a Rescue all Bundler exceptions and exit with appropriate error code
Carlhuda authored
29 class BundlerError < StandardError
30 def self.status_code(code = nil)
31 return @code unless code
32 @code = code
33 end
34
35 def status_code
36 self.class.status_code
37 end
38 end
39
5894862 Print useful warnings when deprecated options are used
Yehuda Katz authored
40 class GemfileNotFound < BundlerError; status_code(10) ; end
41 class GemNotFound < BundlerError; status_code(7) ; end
42 class GemfileError < BundlerError; status_code(4) ; end
ef6a00f André Arko Print better error during install when you need to relock
indirect authored
43 class GemfileChanged < GemfileError; status_code(4) ; end
248ca34 Raise a better error in the case that a git repo is not cloned yet.
Carl Lerche authored
44 class PathError < BundlerError; status_code(13) ; end
5894862 Print useful warnings when deprecated options are used
Yehuda Katz authored
45 class GitError < BundlerError; status_code(11) ; end
6a82ed0 André Arko Add GemspecError so it can be raised
indirect authored
46 class GemspecError < BundlerError; status_code(14) ; end
5894862 Print useful warnings when deprecated options are used
Yehuda Katz authored
47 class DeprecatedMethod < BundlerError; status_code(12) ; end
48 class DeprecatedOption < BundlerError; status_code(12) ; end
2a24019 André Arko Print a useful error if a gemspec require fails
indirect authored
49 class GemspecError < BundlerError; status_code(14) ; end
7514b20 Yehuda Katz If an option is invalid, don't fail silently
wycats authored
50 class InvalidOption < BundlerError; status_code(15) ; end
67859e4 Moving in thor
Carlhuda authored
51
3edfddb Hacked together some crap that doesn't really work
Carl Lerche authored
52 class VersionConflict < BundlerError
53 attr_reader :conflicts
54
55 def initialize(conflicts, msg = nil)
56 super(msg)
57 @conflicts = conflicts
58 end
59
60 status_code(6)
61 end
62
cf736cf Use the Lockfile's specs as LazySpecifications instead of converting the...
Carl Lerche authored
63 # Internal errors, should be rescued
64 class InvalidSpecSet < StandardError; end
65
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
66 class << self
78a6b48 Rename vendor/lock.yml to Gemfile.lock
Carl Lerche authored
67 attr_writer :ui, :bundle_path
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
68
69 def configure
70 @configured ||= begin
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
71 configure_gem_home_and_path
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
72 true
73 end
74 end
434fb42 First pass at output
Carlhuda authored
75
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
76 def ui
77 @ui ||= UI.new
78 end
434fb42 First pass at output
Carlhuda authored
79
5ad1279 Add the ability to set bundle env settings in a .bundleconfig file
Carl Lerche authored
80 def bundle_path
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
81 @bundle_path ||= begin
8f2099b Have bundler install to $GEM_HOME by default instead of ~/.bundle. This ...
Carlhuda authored
82 path = settings[:path] || Gem.dir
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
83 Pathname.new(path).expand_path(root)
84 end
5ad1279 Add the ability to set bundle env settings in a .bundleconfig file
Carl Lerche authored
85 end
86
5f26a03 Have bundler generate executable stubs into ~/.bundler/bin that will aut...
Carl Lerche authored
87 def bin_path
88 @bin_path ||= begin
89 path = settings[:bin] || "#{Gem.user_home}/.bundler/bin"
90 FileUtils.mkdir_p(path)
91 Pathname.new(path).expand_path
92 end
93 end
94
1674aef No need to alias setup and require in Bundler
Carl Lerche authored
95 def setup(*groups)
2c8d6ae André Arko Don't call #setup after loading env.rb in Bundler.load
indirect authored
96 return @setup if @setup
97
5dfc54c André Arko Don't call exit! if Bundler.setup has an exception
indirect authored
98 if groups.empty?
99 # Load all groups, but only once
100 @setup = load.setup
101 else
102 # Figure out which groups haven't been loaded yet
103 unloaded = groups - (@completed_groups || [])
104 # Record groups that are now loaded
105 @completed_groups = groups | (@completed_groups || [])
106 # Load any groups that are not yet loaded
107 unloaded.any? ? load.setup(*unloaded) : load
4980111 André Arko Fix Bundler.setup so it can be called more than once safely
indirect authored
108 end
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
109 end
ce350cc Get a simple bbl install working
Carlhuda authored
110
1674aef No need to alias setup and require in Bundler
Carl Lerche authored
111 def require(*groups)
69acfd8 André Arko Call Bundler.setup from Bundler.require, only set up each group once
indirect authored
112 setup(*groups).require(*groups)
a8cbf77 Jeremy Kemper Group autorequire: pass :require => 'autorequire' option to gem dependen...
jeremy authored
113 end
114
625818a André Arko Clean up bundler.rb a bit
indirect authored
115 def load
91c74f4 Bundle.load and Bundle.runtime are the same thing again.
Carl Lerche authored
116 @load ||= Runtime.new(root, definition)
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
117 end
67859e4 Moving in thor
Carlhuda authored
118
3687843 Kevin Moore check only needs Environment (not Runtime)
kevmoo authored
119 def environment
120 Bundler::Environment.new(root, definition)
121 end
122
8a4dc7a Remove a little bit of crazy from Definition
Carl Lerche authored
123 def definition(unlock = nil)
124 @definition = nil if unlock
2b9094e Scope specs in the lock file by source
Carl Lerche authored
125 @definition ||= begin
126 configure
127 lockfile = root.join("Gemfile.lock")
8a4dc7a Remove a little bit of crazy from Definition
Carl Lerche authored
128 Definition.build(default_gemfile, lockfile, unlock)
2b9094e Scope specs in the lock file by source
Carl Lerche authored
129 end
ab5b1fc Add Bundler.flexdef, move locking into Environment, and lock from flex_i...
Carlhuda authored
130 end
131
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
132 def home
625818a André Arko Clean up bundler.rb a bit
indirect authored
133 bundle_path.join("bundler")
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
134 end
f31835e More work towards awesomeness
Carlhuda authored
135
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
136 def install_path
137 home.join("gems")
138 end
0d2492d Add more stuff for git
Carl Lerche authored
139
0d92de7 André Arko Add Bundler::Source::BundlerGems, to distingush from SystemGems.
indirect authored
140 def specs_path
141 bundle_path.join("specifications")
142 end
143
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
144 def cache
0d92de7 André Arko Add Bundler::Source::BundlerGems, to distingush from SystemGems.
indirect authored
145 bundle_path.join("cache/bundler")
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
146 end
ee0e2c1 Start working on the environment.rb lock file
Carl Lerche authored
147
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
148 def root
2d87c36 Move <root>/vendor/cache to a Bundler class method
Carl Lerche authored
149 default_gemfile.dirname.expand_path
150 end
151
152 def app_cache
153 root.join("vendor/cache")
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
154 end
155
32a2eb2 First pass at getting bundler to play well when $GEM_HOME is owned by ro...
Carl Lerche authored
156 def tmp
157 "#{Gem.user_home}/.bundler/tmp"
158 end
159
ea08895 Add the ability to specify a location with bundle install
Carl Lerche authored
160 def settings
161 @settings ||= Settings.new(root)
162 end
163
33154fd Joshua Hull Add Bundler.with_clean_env for blocks of ruby without a bundled env
joshbuddy authored
164 def with_clean_env
165 bundled_env = ENV.to_hash
166 ENV.replace(ORIGINAL_ENV)
167 yield
168 ensure
169 ENV.replace(bundled_env.to_hash)
170 end
171
fb1e725 Make bundler/setup something you can add to your .profile. To do this, a...
Carlhuda authored
172 def default_gemfile
173 SharedHelpers.default_gemfile
ee0e2c1 Start working on the environment.rb lock file
Carl Lerche authored
174 end
175
32a2eb2 First pass at getting bundler to play well when $GEM_HOME is owned by ro...
Carl Lerche authored
176 def requires_sudo?
177 case
178 when File.writable?(bundle_path) ||
179 `which sudo 2>NUL`.empty? ||
180 File.owned?(bundle_path)
181 false
182 else
183 true
184 end
185 rescue Errno::ENOENT
186 false
187 end
188
9ef6aa6 André Arko Disable rubygems more fully when unlocked
indirect authored
189 private
190
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
191 def configure_gem_home_and_path
3d82929 Separate bundle install foo and bundle install --disable-shared-gems.
Carl Lerche authored
192 if settings[:disable_shared_gems]
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
193 ENV['GEM_PATH'] = ''
9ef6aa6 André Arko Disable rubygems more fully when unlocked
indirect authored
194 ENV['GEM_HOME'] = File.expand_path(bundle_path, root)
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
195 else
7a7628c André Arko Don't duplicate gem paths
indirect authored
196 paths = [Gem.dir, Gem.path].flatten.compact.uniq.reject{|p| p.empty? }
55509f2 André Arko Ignore paths like GEM_HOME that are empty strings
indirect authored
197 ENV["GEM_PATH"] = paths.join(File::PATH_SEPARATOR)
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored
198 ENV["GEM_HOME"] = bundle_path.to_s
199 end
200
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored
201 Gem.clear_paths
202 end
ee0e2c1 Start working on the environment.rb lock file
Carl Lerche authored
203 end
a8cbf77 Jeremy Kemper Group autorequire: pass :require => 'autorequire' option to gem dependen...
jeremy authored
204 end
Something went wrong with that request. Please try again.