Skip to content
Newer
Older
100644 241 lines (199 sloc) 6.3 KB
63b636b First pass at gemfile pack
Carlhuda authored Jan 25, 2010
1 require 'fileutils'
ce350cc Get a simple bbl install working
Carlhuda authored Jan 11, 2010
2 require 'pathname'
88741e6 First pass at bbl lock
Carlhuda authored Jan 18, 2010
3 require 'yaml'
820bb93 Rename rubygems-ext to rubygems_ext
Carl Lerche authored Feb 18, 2010
4 require 'bundler/rubygems_ext'
1da7eb3 Don't generate bundler.gemspec anymore
Carlhuda authored Apr 1, 2010
5 require 'bundler/version'
33154fd @joshbuddy Add Bundler.with_clean_env for blocks of ruby without a bundled env
joshbuddy authored Mar 26, 2010
6
152a50a Rename gemfile back to bundler
Carl Lerche authored Jan 26, 2010
7 module Bundler
33154fd @joshbuddy Add Bundler.with_clean_env for blocks of ruby without a bundled env
joshbuddy authored Mar 26, 2010
8 ORIGINAL_ENV = ENV.to_hash
67859e4 Moving in thor
Carlhuda authored Jan 11, 2010
9
152a50a Rename gemfile back to bundler
Carl Lerche authored Jan 26, 2010
10 autoload :Definition, 'bundler/definition'
11 autoload :Dependency, 'bundler/dependency'
12 autoload :Dsl, 'bundler/dsl'
13 autoload :Environment, 'bundler/environment'
f414889 @kevmoo 'bundle viz'
kevmoo authored May 13, 2010
14 autoload :Graph, 'bundler/graph'
152a50a Rename gemfile back to bundler
Carl Lerche authored Jan 26, 2010
15 autoload :Index, 'bundler/index'
16 autoload :Installer, 'bundler/installer'
f779dee First pass at lockfile parser
Carlhuda authored Apr 20, 2010
17 autoload :LazySpecification, 'bundler/lazy_specification'
ba579f4 Remove temporary flex stuff
Carlhuda authored Apr 20, 2010
18 autoload :LockfileParser, 'bundler/lockfile_parser'
152a50a Rename gemfile back to bundler
Carl Lerche authored Jan 26, 2010
19 autoload :RemoteSpecification, 'bundler/remote_specification'
20 autoload :Resolver, 'bundler/resolver'
c0f8641 Persist spec groups to the lockfile
Carl Lerche authored Feb 3, 2010
21 autoload :Runtime, 'bundler/runtime'
ea08895 Add the ability to specify a location with bundle install
Carl Lerche authored Feb 2, 2010
22 autoload :Settings, 'bundler/settings'
f7bfdde Actually disable system gems in .bundle/environment.rb
Carlhuda authored Feb 10, 2010
23 autoload :SharedHelpers, 'bundler/shared_helpers'
529d792 Use tsort to order specifications. It makes teh crazy work.
Carl Lerche authored Mar 9, 2010
24 autoload :SpecSet, 'bundler/spec_set'
152a50a Rename gemfile back to bundler
Carl Lerche authored Jan 26, 2010
25 autoload :Source, 'bundler/source'
0f97e4f @indirect Gems from git need their full_gem_path fixed, even when locked
indirect authored Apr 9, 2010
26 autoload :Specification, 'bundler/shared_helpers'
434fb42 First pass at output
Carlhuda authored Jan 26, 2010
27 autoload :UI, 'bundler/ui'
67859e4 Moving in thor
Carlhuda authored Jan 11, 2010
28
de5054a Rescue all Bundler exceptions and exit with appropriate error code
Carlhuda authored Feb 1, 2010
29 class BundlerError < StandardError
30 def self.status_code(code = nil)
0ae574c DslError should inherit from Bundler::Error so its exceptions are cau…
Carlhuda authored Jul 29, 2010
31 define_method(:status_code) { code }
de5054a Rescue all Bundler exceptions and exit with appropriate error code
Carlhuda authored Feb 2, 2010
32 end
33 end
34
5894862 Print useful warnings when deprecated options are used
Yehuda Katz authored Feb 4, 2010
35 class GemfileNotFound < BundlerError; status_code(10) ; end
36 class GemNotFound < BundlerError; status_code(7) ; end
37 class GemfileError < BundlerError; status_code(4) ; end
248ca34 Raise a better error in the case that a git repo is not cloned yet.
Carl Lerche authored Mar 9, 2010
38 class PathError < BundlerError; status_code(13) ; end
5894862 Print useful warnings when deprecated options are used
Yehuda Katz authored Feb 4, 2010
39 class GitError < BundlerError; status_code(11) ; end
6a82ed0 @indirect Add GemspecError so it can be raised
indirect authored Apr 19, 2010
40 class GemspecError < BundlerError; status_code(14) ; end
d7e1dc1 @wycats Remove standalone #git in the DSL. Instead, use the block form of #gi…
wycats authored Jul 9, 2010
41 class DeprecatedError < BundlerError; status_code(12) ; end
2a24019 @indirect Print a useful error if a gemspec require fails
indirect authored Mar 30, 2010
42 class GemspecError < BundlerError; status_code(14) ; end
0ae574c DslError should inherit from Bundler::Error so its exceptions are cau…
Carlhuda authored Jul 29, 2010
43 class DslError < BundlerError; status_code(15) ; end
44 class InvalidOption < DslError ; end
67859e4 Moving in thor
Carlhuda authored Jan 11, 2010
45
3edfddb Hacked together some crap that doesn't really work
Carl Lerche authored Jun 3, 2010
46 class VersionConflict < BundlerError
47 attr_reader :conflicts
48
49 def initialize(conflicts, msg = nil)
50 super(msg)
51 @conflicts = conflicts
52 end
53
54 status_code(6)
55 end
56
cf736cf Use the Lockfile's specs as LazySpecifications instead of converting …
Carl Lerche authored Jun 2, 2010
57 # Internal errors, should be rescued
58 class InvalidSpecSet < StandardError; end
59
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
60 class << self
78a6b48 Rename vendor/lock.yml to Gemfile.lock
Carl Lerche authored Feb 1, 2010
61 attr_writer :ui, :bundle_path
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
62
63 def configure
64 @configured ||= begin
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored Feb 3, 2010
65 configure_gem_home_and_path
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
66 true
67 end
68 end
434fb42 First pass at output
Carlhuda authored Jan 27, 2010
69
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
70 def ui
71 @ui ||= UI.new
72 end
434fb42 First pass at output
Carlhuda authored Jan 27, 2010
73
5ad1279 Add the ability to set bundle env settings in a .bundleconfig file
Carl Lerche authored Feb 1, 2010
74 def bundle_path
5b2d02f Make bundle install [PATH] namespace its gems to specific rubies
Carlhuda authored Jul 7, 2010
75 # STDERR.puts settings.path
76 @bundle_path ||= Pathname.new(settings.path).expand_path(root)
5ad1279 Add the ability to set bundle env settings in a .bundleconfig file
Carl Lerche authored Feb 1, 2010
77 end
78
5f26a03 Have bundler generate executable stubs into ~/.bundler/bin that will …
Carl Lerche authored May 9, 2010
79 def bin_path
80 @bin_path ||= begin
25ab2dc Make generating bin stubs an option
Carl Lerche authored Jul 9, 2010
81 path = settings[:bin] || "bin"
82 path = Pathname.new(path).expand_path(root)
5f26a03 Have bundler generate executable stubs into ~/.bundler/bin that will …
Carl Lerche authored May 8, 2010
83 FileUtils.mkdir_p(path)
84 Pathname.new(path).expand_path
85 end
86 end
87
1674aef No need to alias setup and require in Bundler
Carl Lerche authored Apr 23, 2010
88 def setup(*groups)
9cd1836 @lenary avoid warning: instance variable @setup not initialized
lenary authored Jun 13, 2010
89 return @setup if defined?(@setup) && @setup
2c8d6ae @indirect Don't call #setup after loading env.rb in Bundler.load
indirect authored Apr 9, 2010
90
5dfc54c @indirect Don't call exit! if Bundler.setup has an exception
indirect authored Apr 21, 2010
91 if groups.empty?
92 # Load all groups, but only once
93 @setup = load.setup
94 else
95 # Figure out which groups haven't been loaded yet
96 unloaded = groups - (@completed_groups || [])
97 # Record groups that are now loaded
98 @completed_groups = groups | (@completed_groups || [])
99 # Load any groups that are not yet loaded
100 unloaded.any? ? load.setup(*unloaded) : load
4980111 @indirect Fix Bundler.setup so it can be called more than once safely
indirect authored Apr 8, 2010
101 end
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
102 end
ce350cc Get a simple bbl install working
Carlhuda authored Jan 12, 2010
103
1674aef No need to alias setup and require in Bundler
Carl Lerche authored Apr 23, 2010
104 def require(*groups)
69acfd8 @indirect Call Bundler.setup from Bundler.require, only set up each group once
indirect authored Apr 5, 2010
105 setup(*groups).require(*groups)
a8cbf77 @jeremy Group autorequire: pass :require => 'autorequire' option to gem depen…
jeremy authored Feb 3, 2010
106 end
107
625818a @indirect Clean up bundler.rb a bit
indirect authored Mar 31, 2010
108 def load
91c74f4 Bundle.load and Bundle.runtime are the same thing again.
Carl Lerche authored Apr 24, 2010
109 @load ||= Runtime.new(root, definition)
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
110 end
67859e4 Moving in thor
Carlhuda authored Jan 11, 2010
111
3687843 @kevmoo check only needs Environment (not Runtime)
kevmoo authored May 22, 2010
112 def environment
113 Bundler::Environment.new(root, definition)
114 end
115
8a4dc7a Remove a little bit of crazy from Definition
Carl Lerche authored Jun 2, 2010
116 def definition(unlock = nil)
117 @definition = nil if unlock
2b9094e Scope specs in the lock file by source
Carl Lerche authored May 10, 2010
118 @definition ||= begin
119 configure
e0e79df @indirect Upgrade 0.9 lockfiles to 1.0 lockfiles in-place
indirect authored Jun 7, 2010
120 upgrade_lockfile
2b9094e Scope specs in the lock file by source
Carl Lerche authored May 10, 2010
121 lockfile = root.join("Gemfile.lock")
8a4dc7a Remove a little bit of crazy from Definition
Carl Lerche authored Jun 2, 2010
122 Definition.build(default_gemfile, lockfile, unlock)
2b9094e Scope specs in the lock file by source
Carl Lerche authored May 10, 2010
123 end
ab5b1fc Add Bundler.flexdef, move locking into Environment, and lock from fle…
Carlhuda authored Apr 7, 2010
124 end
125
eda7324 @wycats Git should never use sudo
wycats authored Jul 9, 2010
126 def ruby_scope
127 "#{Gem.ruby_engine}/#{Gem::ConfigMap[:ruby_version]}"
128 end
129
130 def user_bundle_path
131 Pathname.new(Gem.user_home).join(".bundler")
132 end
133
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
134 def home
625818a @indirect Clean up bundler.rb a bit
indirect authored Mar 31, 2010
135 bundle_path.join("bundler")
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
136 end
f31835e More work towards awesomeness
Carlhuda authored Jan 12, 2010
137
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
138 def install_path
139 home.join("gems")
140 end
0d2492d Add more stuff for git
Carl Lerche authored Jan 13, 2010
141
0d92de7 @indirect Add Bundler::Source::BundlerGems, to distingush from SystemGems.
indirect authored Mar 26, 2010
142 def specs_path
143 bundle_path.join("specifications")
144 end
145
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
146 def cache
0d92de7 @indirect Add Bundler::Source::BundlerGems, to distingush from SystemGems.
indirect authored Mar 27, 2010
147 bundle_path.join("cache/bundler")
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
148 end
ee0e2c1 Start working on the environment.rb lock file
Carl Lerche authored Jan 22, 2010
149
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
150 def root
2d87c36 Move <root>/vendor/cache to a Bundler class method
Carl Lerche authored May 5, 2010
151 default_gemfile.dirname.expand_path
152 end
153
154 def app_cache
155 root.join("vendor/cache")
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
156 end
157
32a2eb2 First pass at getting bundler to play well when $GEM_HOME is owned by…
Carl Lerche authored May 18, 2010
158 def tmp
eda7324 @wycats Git should never use sudo
wycats authored Jul 9, 2010
159 user_bundle_path.join("tmp")
32a2eb2 First pass at getting bundler to play well when $GEM_HOME is owned by…
Carl Lerche authored May 18, 2010
160 end
161
ea08895 Add the ability to specify a location with bundle install
Carl Lerche authored Feb 2, 2010
162 def settings
163 @settings ||= Settings.new(root)
164 end
165
33154fd @joshbuddy Add Bundler.with_clean_env for blocks of ruby without a bundled env
joshbuddy authored Mar 26, 2010
166 def with_clean_env
167 bundled_env = ENV.to_hash
168 ENV.replace(ORIGINAL_ENV)
169 yield
170 ensure
171 ENV.replace(bundled_env.to_hash)
172 end
173
fb1e725 Make bundler/setup something you can add to your .profile. To do this…
Carlhuda authored Feb 10, 2010
174 def default_gemfile
175 SharedHelpers.default_gemfile
ee0e2c1 Start working on the environment.rb lock file
Carl Lerche authored Jan 22, 2010
176 end
177
16259ea @wycats Improve sudo support
wycats authored Jun 8, 2010
178 WINDOWS = Config::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw)!
179 NULL = WINDOWS ? "NUL" : "/dev/null"
180
32a2eb2 First pass at getting bundler to play well when $GEM_HOME is owned by…
Carl Lerche authored May 18, 2010
181 def requires_sudo?
3f350e0 Add more sanity to the cases where bundler runs commands with sudo
Carlhuda authored Jul 1, 2010
182 path = bundle_path
183 path = path.parent until path.exist?
52576d5 @spastorino requires_sudo if the path is not writable and sudo command exist
spastorino authored Jul 11, 2010
184 sudo_present = !`which sudo 2>#{NULL}`.empty?
3f350e0 Add more sanity to the cases where bundler runs commands with sudo
Carlhuda authored Jul 1, 2010
185
52576d5 @spastorino requires_sudo if the path is not writable and sudo command exist
spastorino authored Jul 11, 2010
186 !File.writable?(path) && sudo_present
3f350e0 Add more sanity to the cases where bundler runs commands with sudo
Carlhuda authored Jul 1, 2010
187 end
188
189 def mkdir_p(path)
190 if requires_sudo?
191 sudo "mkdir -p '#{path}'"
192 else
193 FileUtils.mkdir_p(path)
194 end
195 end
196
197 def sudo(str)
c5f25d6 Remove sudo -E, which never actually worked for what we wanted, and d…
Carlhuda authored Jul 12, 2010
198 `sudo -p 'Enter your password to install the bundled RubyGems to your system: ' #{str}`
32a2eb2 First pass at getting bundler to play well when $GEM_HOME is owned by…
Carl Lerche authored May 18, 2010
199 end
200
9ef6aa6 @indirect Disable rubygems more fully when unlocked
indirect authored Apr 8, 2010
201 private
202
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored Feb 3, 2010
203 def configure_gem_home_and_path
3d82929 Separate bundle install foo and bundle install --disable-shared-gems.
Carl Lerche authored Feb 10, 2010
204 if settings[:disable_shared_gems]
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored Feb 3, 2010
205 ENV['GEM_PATH'] = ''
9ef6aa6 @indirect Disable rubygems more fully when unlocked
indirect authored Apr 9, 2010
206 ENV['GEM_HOME'] = File.expand_path(bundle_path, root)
da1ba63 Don't set $GEM_HOME unless necessary
Carl Lerche authored Jul 24, 2010
207 elsif Gem.dir != bundle_path.to_s
7a7628c @indirect Don't duplicate gem paths
indirect authored Apr 5, 2010
208 paths = [Gem.dir, Gem.path].flatten.compact.uniq.reject{|p| p.empty? }
55509f2 @indirect Ignore paths like GEM_HOME that are empty strings
indirect authored Feb 25, 2010
209 ENV["GEM_PATH"] = paths.join(File::PATH_SEPARATOR)
739c0f3 Install bundles to ~/.bundle by default
Carlhuda authored Feb 3, 2010
210 ENV["GEM_HOME"] = bundle_path.to_s
211 end
212
bc310f7 First pass at being able to set the bundle install path.
Carl Lerche authored Feb 1, 2010
213 Gem.clear_paths
214 end
e0e79df @indirect Upgrade 0.9 lockfiles to 1.0 lockfiles in-place
indirect authored Jun 8, 2010
215
216 def upgrade_lockfile
217 lockfile = root.join("Gemfile.lock")
218 if lockfile.exist? && lockfile.read(3) == "---"
91c3beb @indirect Back to deleting old lockfiles for the beta release
indirect authored Jun 8, 2010
219 Bundler.ui.warn "Detected Gemfile.lock generated by 0.9, deleting..."
220 lockfile.rmtree
221 # lock = YAML.load_file(lockfile)
222 #
223 # source_uris = lock["sources"].map{|s| s["Rubygems"]["uri"] }
224 # sources = [Bundler::Source::Rubygems.new({"remotes" => source_uris})]
225 #
226 # deps = lock["dependencies"].map do |name, opts|
227 # version = opts.delete("version")
228 # Bundler::Dependency.new(name, version, opts)
229 # end
230 #
231 # definition = Bundler::Definition.new(nil, deps, sources, {})
232 #
233 # File.open(lockfile, 'w') do |f|
234 # f.write definition.to_lock
235 # end
e0e79df @indirect Upgrade 0.9 lockfiles to 1.0 lockfiles in-place
indirect authored Jun 8, 2010
236 end
237 end
238
ee0e2c1 Start working on the environment.rb lock file
Carl Lerche authored Jan 22, 2010
239 end
a8cbf77 @jeremy Group autorequire: pass :require => 'autorequire' option to gem depen…
jeremy authored Feb 4, 2010
240 end
Something went wrong with that request. Please try again.