prebundler 0.11.7 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3aede9a82a409f6be7544d071dc88d550eca1d958eab7b45cdd77d40c4dbd02
4
- data.tar.gz: 12e5d87c3ae82b1843c2012be18cb1e5c0c0b123ce15578df4c382968b045f94
3
+ metadata.gz: 29f176a7f30feafc0288bcef4e1d519d364fe4b109a7dd2590b3c20a013908e2
4
+ data.tar.gz: dc8d72a575713cf2cb0e287af826a521a291c97266864c68e35da94c8c165d85
5
5
  SHA512:
6
- metadata.gz: 53c6230c94e22514c3001ed18ca32f74cb627e6ff981004665bc1ca36e6554d2293b442dd0bef7a28fa00a59d7e0caba3498db58460df699cde50c320ce071d4
7
- data.tar.gz: df51e8ab2d6927d91481c4232599f1de1b68ed234247ba9b2e5714189072b1bde36bcc4751ebaf825f5661f5f74c302f7d3d8f8e6ede13c4deb8eeb202215b00
6
+ metadata.gz: 7cadcbdeef22c371ac69b91c069b5af37733804786f00562afcf5b38be73a016596e89b250b4f8ab06e7a3c8bdacac491aaeb3d4dce75554b377ce45cfa32f20
7
+ data.tar.gz: 351ac7ac53bbf7f60c3a98fa2b98aed366c1c02f6faf817f73511dae7420b232b130241830d183a31619b06e25b9087603befad9d44a70e4630c054632b84751
data/CHANGELOG.md CHANGED
@@ -1,102 +1,100 @@
1
- 0.11.7
2
- ===
3
- - Fix bug causing platform-specific gems to be installed from source even if they were already present in the backend.
4
-
5
- 0.11.6
6
- ===
7
- - Fix bug causing native extension compile errors.
8
- - Fix bug causing executables to not be included in tarballs.
9
- - Fix bug (maybe introduced by bundler 2?) causing incorrect directory to be tarred. Directory can now include platform apparently.
10
-
11
- 0.11.5
12
- ===
13
- - Add `--retry` flag to CLI (currently does nothing).
14
-
15
- 0.11.4
16
- ===
17
- - Ensure .bundle/config directory exists before writing to it.
18
-
19
- 0.11.3
20
- ===
21
- - Support (well, add stubs for) `ruby` and `git_source` methods in Gemfiles.
22
- - Don't attempt to install gems we can't get a spec for.
23
-
24
- 0.11.2
25
- ===
26
- - Always run `bundle install` just in case.
27
- - Make sure `bundle check` is the _last_ thing that runs.
28
-
29
- 0.11.1
30
- ===
31
- - Exit with nonzero status code if fallback `bundle install` fails.
32
-
33
- 0.11.0
34
- ===
35
- - Allow the caller to pass in a s3 client for non-standard setups
36
-
37
- 0.10.0
38
- ===
39
- - Update aws-sdk client creation to be able to support non-aws s3 api endpoints (e.g. minio)
40
-
41
- 0.9.1
42
- ===
43
- - Woops, also use platform version when determining the gems that have already been built.
44
- - Fix the subsetter so it outputs gems inside correct source blocks.
45
-
46
- 0.9.0
47
- ===
48
- - Include platform version when uploading gem tarballs to the storage backend (this will cause bundles installed by previous versions of prebundler to be rebuilt).
49
-
50
- 0.8.1
51
- ===
52
- - Fix bug causing config to not be loaded.
53
-
54
- 0.8.0
55
- ===
56
- - Add the subset command for generating subsets of gemfiles.
57
-
58
- 0.7.2
59
- ===
60
- - Fix use of continuation token when listing remote files in S3 backend.
61
-
62
- 0.7.1
63
- ===
64
- - Support git-based gems with non-standard repo names.
65
- - Fix `bundle install` fallback (group args were wrong).
66
-
67
- 0.7.0
68
- ===
69
- - Add prefix option to install command.
70
-
71
- 0.6.2
72
- ===
73
- - Provide CLI option to generate binstubs.
74
-
75
- 0.5.2
76
- ===
77
- - Set `BUNDLE_GEMFILE` during prepare step so bundler doesn't complain when we try to call `Bundler.app_config_path`.
78
-
79
- 0.5.1
80
- ===
81
- - Remove pry-byebug require.
82
-
83
- 0.5.0
84
- ===
85
- - Works for a repository with a significant number of dependencies (~ 400).
86
- - Testing on staging server indicates bundle is installed correctly.
87
-
88
- 0.0.4
89
- ===
90
- - Pass bundle path to `gem install`.
91
-
92
- 0.0.3
93
- ===
94
- - Add --with and --without flags to install command.
95
-
96
- 0.0.2
97
- ===
98
- - Better CLI interface.
99
-
100
- 0.0.1
101
- ===
102
- - Birthday!
1
+ ## 0.14.0
2
+ * Add `prebundle binstubs` command, which simply invokes `bundle binstubs`.
3
+
4
+ ## 0.13.0
5
+ * Support the `eval_gemfile` function in gemfiles.
6
+ * Avoid shelling out to the `tar` command.
7
+ - The GNU and BSD versions annoyingly don't accept the same flags, meaning Prebundler can succeed or fail depending on the system it's run on.
8
+ - All tar files are now read and written using pure Ruby.
9
+ * Upgrade S3 client to non-EOL version.
10
+ * Stop ignoring gems that don't match the current platform.
11
+ - Prebundler shells out to `gem install` when installing individual gems. Older versions of rubygems would fetch gems for the "ruby" platform when the `--ignore-dependencies` option was given, ignoring any platform-specific gems. This resulted in either a) unnecessarily building a bunch of native extensions, or b) installing a gem for the wrong platform (i.e. when no gem existed for the "ruby" platform, eg. helm-rb). I addressed the problem by instructing Prebundler to ignore gems with native extensions, relying on `bundle install` to fix them up. However, the bug has been fixed in modern versions of rubygems, so we can stop ignoring gems.
12
+ * Run `bundle lock` before storing or installing gems to make sure the lockfile matches the Gemfile.
13
+
14
+ ## 0.12.0
15
+ * Switch out ohai for ohey, which has many fewer dependencies.
16
+
17
+ ## 0.11.8
18
+ * Don't store gems in the backend if they failed to install.
19
+ * Use an absolute bundle path.
20
+ * Only consider a gem from the lockfile if it matches the current platform.
21
+ * Fix `#install` methods so they all return true/false.
22
+
23
+ ## 0.11.7
24
+ * Fix bug causing platform-specific gems to be installed from source even if they were already present in the backend.
25
+
26
+ ## 0.11.6
27
+ * Fix bug causing native extension compile errors.
28
+ * Fix bug causing executables to not be included in tarballs.
29
+ * Fix bug (maybe introduced by bundler 2?) causing incorrect directory to be tarred. Directory can now include platform apparently.
30
+
31
+ ## 0.11.5
32
+ * Add `--retry` flag to CLI (currently does nothing).
33
+
34
+ ## 0.11.4
35
+ * Ensure .bundle/config directory exists before writing to it.
36
+
37
+ ## 0.11.3
38
+ * Support (well, add stubs for) `ruby` and `git_source` methods in Gemfiles.
39
+ * Don't attempt to install gems we can't get a spec for.
40
+
41
+ ## 0.11.2
42
+ * Always run `bundle install` just in case.
43
+ * Make sure `bundle check` is the _last_ thing that runs.
44
+
45
+ ## 0.11.1
46
+ * Exit with nonzero status code if fallback `bundle install` fails.
47
+
48
+ ## 0.11.0
49
+ * Allow the caller to pass in a s3 client for non-standard setups
50
+
51
+ ## 0.10.0
52
+ * Update aws-sdk client creation to be able to support non-aws s3 api endpoints (e.g. minio)
53
+
54
+ ## 0.9.1
55
+ * Woops, also use platform version when determining the gems that have already been built.
56
+ * Fix the subsetter so it outputs gems inside correct source blocks.
57
+
58
+ ## 0.9.0
59
+ * Include platform version when uploading gem tarballs to the storage backend (this will cause bundles installed by previous versions of prebundler to be rebuilt).
60
+
61
+ ## 0.8.1
62
+ * Fix bug causing config to not be loaded.
63
+
64
+ ## 0.8.0
65
+ * Add the subset command for generating subsets of gemfiles.
66
+
67
+ ## 0.7.2
68
+ * Fix use of continuation token when listing remote files in S3 backend.
69
+
70
+ ## 0.7.1
71
+ * Support git-based gems with non-standard repo names.
72
+ * Fix `bundle install` fallback (group args were wrong).
73
+
74
+ ## 0.7.0
75
+ * Add prefix option to install command.
76
+
77
+ ## 0.6.2
78
+ * Provide CLI option to generate binstubs.
79
+
80
+ ## 0.5.2
81
+ * Set `BUNDLE_GEMFILE` during prepare step so bundler doesn't complain when we try to call `Bundler.app_config_path`.
82
+
83
+ ## 0.5.1
84
+ * Remove pry-byebug require.
85
+
86
+ ## 0.5.0
87
+ * Works for a repository with a significant number of dependencies (~ 400).
88
+ * Testing on staging server indicates bundle is installed correctly.
89
+
90
+ ## 0.0.4
91
+ * Pass bundle path to `gem install`.
92
+
93
+ ## 0.0.3
94
+ * Add --with and --without flags to install command.
95
+
96
+ ## 0.0.2
97
+ * Better CLI interface.
98
+
99
+ ## 0.0.1
100
+ * Birthday!
data/bin/prebundle CHANGED
@@ -1,130 +1,6 @@
1
1
  #! /usr/bin/env ruby
2
2
 
3
- require 'gli'
4
- require 'etc'
5
- require 'bundler'
6
- require 'prebundler'
7
- require 'prebundler/version'
8
-
9
- $out = Prebundler::WritePipe.new
10
-
11
- include GLI::App
12
-
13
- program_desc 'Gem dependency prebuilder'
14
-
15
- version Prebundler::VERSION
16
-
17
- subcommand_option_handling :normal
18
- arguments :strict
19
-
20
- desc "Don't log to stdout"
21
- switch [:s, :silent]
22
-
23
- desc 'Path to config file.'
24
- default_value './.prebundle_config'
25
- flag [:c, :config]
26
-
27
- desc 'Install gems from the Gemfile.lock.'
28
- command :install do |c|
29
- c.desc 'Maximum number of parallel gem installs.'
30
- c.default_value Etc.nprocessors
31
- c.flag [:j, :jobs], type: Integer
32
-
33
- c.desc 'Path to the gemfile to install gems from.'
34
- c.default_value ENV.fetch('BUNDLE_GEMFILE', './Gemfile')
35
- c.flag [:g, :gemfile]
36
-
37
- c.desc 'Path to the bundle installation directory.'
38
- c.default_value ENV.fetch('BUNDLE_PATH', Bundler.bundle_path.to_s)
39
- c.flag [:b, :'bundle-path']
40
-
41
- c.desc 'Backend prefix (i.e. path) at which to store gems.'
42
- c.flag [:prefix]
43
-
44
- c.desc 'A comma-separated list of groups referencing gems to install.'
45
- c.flag :with
46
-
47
- c.desc 'A comma-separated list of groups referencing gems to skip during installation.'
48
- c.flag :without
49
-
50
- c.desc 'Generate binstubs for installed gems.'
51
- c.default_value true
52
- c.switch :binstubs
53
-
54
- c.desc 'Retry failed network requests n times (currently not implemented).'
55
- c.default_value 1
56
- c.flag [:retry], type: Integer
3
+ $stdout.sync = true
57
4
 
58
- c.action do |global_options, options, args|
59
- raise 'Must specify a non-zero number of jobs' if options[:jobs] < 1
60
- Prebundler::Cli::Install.run($out, global_options, options, args)
61
- end
62
- end
63
-
64
- desc 'List each gem and associated source.'
65
- command :list do |c|
66
- c.desc 'Path to the gemfile.'
67
- c.default_value ENV.fetch('BUNDLE_GEMFILE', './Gemfile')
68
- c.flag [:g, :gemfile]
69
-
70
- c.desc 'Filter by source. Will perform partial matching.'
71
- c.flag [:s, :source], multiple: true
72
-
73
- c.action do |global_options, options, args|
74
- Prebundler::Cli::List.run($out, global_options, options, args)
75
- end
76
- end
77
-
78
- desc 'Generate a subset of a Gemfile.'
79
- command :subset do |c|
80
- c.desc 'Path to the gemfile.'
81
- c.default_value ENV.fetch('BUNDLE_GEMFILE', './Gemfile')
82
- c.flag [:g, :gemfile]
83
-
84
- c.desc 'Path to the bundle installation directory.'
85
- c.default_value ENV.fetch('BUNDLE_PATH', Bundler.bundle_path.to_s)
86
- c.flag [:b, :'bundle-path']
87
-
88
- c.desc 'Gem (and dependencies) to include in the subset.'
89
- c.flag [:i, :include], multiple: true
90
-
91
- c.desc "Add an additional gem to the subset. The gem doesn't have to be part of the original Gemfile."
92
- c.flag [:a, :add], multiple: true
93
-
94
- c.desc 'Include development dependencies of subsetted gems.'
95
- c.default_value false
96
- c.switch [:d, :development]
97
-
98
- c.desc 'File path to output the resulting Gemfile into. Use - for standard output.'
99
- c.default_value '-'
100
- c.flag [:o, :output]
101
-
102
- c.action do |global_options, options, args|
103
- Prebundler::Cli::Subset.run($out, global_options, options, args)
104
- end
105
- end
106
-
107
- pre do |global, command, options, args|
108
- # Pre logic here
109
- # Return true to proceed; false to abort and not call the
110
- # chosen command
111
- # Use skips_pre before a command to skip this block
112
- # on that command only
113
- $out.silence! if global[:silent]
114
- load global[:config] if global[:config]
115
- true
116
- end
117
-
118
- post do |global, command, options, args|
119
- # Post logic here
120
- # Use skips_post before a command to skip this
121
- # block on that command only
122
- end
123
-
124
- on_error do |exception|
125
- # Error logic here
126
- # return false to skip default error handling
127
- true
128
- end
129
-
130
- exit run(ARGV)
5
+ require 'prebundler'
6
+ exit Prebundler::Commands.run(ARGV)
@@ -17,6 +17,7 @@ module Prebundler
17
17
 
18
18
  class Install < Base
19
19
  def run
20
+ lock
20
21
  prepare
21
22
  install
22
23
  update_bundle_config
@@ -30,6 +31,10 @@ module Prebundler
30
31
 
31
32
  private
32
33
 
34
+ def lock
35
+ system "bundle lock --gemfile #{gemfile_path}"
36
+ end
37
+
33
38
  def prepare
34
39
  FileUtils.mkdir_p(bundle_path)
35
40
  ENV['BUNDLE_GEMFILE'] = gemfile_path
@@ -102,8 +107,12 @@ module Prebundler
102
107
  FileUtils.rm(dest_file)
103
108
  else
104
109
  out.puts "Installing #{gem_ref.id} from source"
105
- gem_ref.install
106
- store_gem(gem_ref, dest_file) if gem_ref.storable?
110
+
111
+ if gem_ref.install
112
+ store_gem(gem_ref, dest_file) if gem_ref.storable?
113
+ else
114
+ out.puts "Failed to install #{gem_ref.id} from source"
115
+ end
107
116
  end
108
117
  end
109
118
 
@@ -179,7 +188,7 @@ module Prebundler
179
188
  end
180
189
 
181
190
  def bundle_path
182
- options.fetch(:'bundle-path')
191
+ File.expand_path(options.fetch(:'bundle-path'))
183
192
  end
184
193
 
185
194
  def config
@@ -0,0 +1,146 @@
1
+ require 'gli'
2
+ require 'etc'
3
+ require 'bundler'
4
+ require 'prebundler'
5
+ require 'prebundler/version'
6
+
7
+ module Prebundler
8
+ class Commands
9
+ extend GLI::App
10
+
11
+ program_desc 'Gem dependency prebuilder'
12
+
13
+ version Prebundler::VERSION
14
+
15
+ subcommand_option_handling :normal
16
+ arguments :strict
17
+
18
+ def self.out
19
+ @out ||= Prebundler::WritePipe.new
20
+ end
21
+
22
+ desc "Don't log to stdout"
23
+ switch [:s, :silent]
24
+
25
+ desc 'Path to config file.'
26
+ default_value './.prebundle_config'
27
+ flag [:c, :config]
28
+
29
+ desc 'Install gems from the Gemfile.lock.'
30
+ command :install do |c|
31
+ c.desc 'Maximum number of parallel gem installs.'
32
+ c.default_value Etc.nprocessors
33
+ c.flag [:j, :jobs], type: Integer
34
+
35
+ c.desc 'Path to the gemfile to install gems from.'
36
+ c.default_value ENV.fetch('BUNDLE_GEMFILE', './Gemfile')
37
+ c.flag [:g, :gemfile]
38
+
39
+ c.desc 'Path to the bundle installation directory.'
40
+ c.default_value ENV.fetch('BUNDLE_PATH', Bundler.bundle_path.to_s)
41
+ c.flag [:b, :'bundle-path']
42
+
43
+ c.desc 'Backend prefix (i.e. path) at which to store gems.'
44
+ c.flag [:prefix]
45
+
46
+ c.desc 'A comma-separated list of groups referencing gems to install.'
47
+ c.flag :with
48
+
49
+ c.desc 'A comma-separated list of groups referencing gems to skip during installation.'
50
+ c.flag :without
51
+
52
+ c.desc 'Generate binstubs for installed gems.'
53
+ c.default_value true
54
+ c.switch :binstubs
55
+
56
+ c.desc 'Retry failed network requests n times (currently not implemented).'
57
+ c.default_value 1
58
+ c.flag [:retry], type: Integer
59
+
60
+ c.action do |global_options, options, args|
61
+ raise 'Must specify a non-zero number of jobs' if options[:jobs] < 1
62
+ Prebundler::Cli::Install.run(out, global_options, options, args)
63
+ end
64
+ end
65
+
66
+ desc 'List each gem and associated source.'
67
+ command :list do |c|
68
+ c.desc 'Path to the gemfile.'
69
+ c.default_value ENV.fetch('BUNDLE_GEMFILE', './Gemfile')
70
+ c.flag [:g, :gemfile]
71
+
72
+ c.desc 'Filter by source. Will perform partial matching.'
73
+ c.flag [:s, :source], multiple: true
74
+
75
+ c.action do |global_options, options, args|
76
+ Prebundler::Cli::List.run(out, global_options, options, args)
77
+ end
78
+ end
79
+
80
+ desc 'Generate a subset of a Gemfile.'
81
+ command :subset do |c|
82
+ c.desc 'Path to the gemfile.'
83
+ c.default_value ENV.fetch('BUNDLE_GEMFILE', './Gemfile')
84
+ c.flag [:g, :gemfile]
85
+
86
+ c.desc 'Path to the bundle installation directory.'
87
+ c.default_value ENV.fetch('BUNDLE_PATH', Bundler.bundle_path.to_s)
88
+ c.flag [:b, :'bundle-path']
89
+
90
+ c.desc 'Gem (and dependencies) to include in the subset.'
91
+ c.flag [:i, :include], multiple: true
92
+
93
+ c.desc "Add an additional gem to the subset. The gem doesn't have to be part of the original Gemfile."
94
+ c.flag [:a, :add], multiple: true
95
+
96
+ c.desc 'Include development dependencies of subsetted gems.'
97
+ c.default_value false
98
+ c.switch [:d, :development]
99
+
100
+ c.desc 'File path to output the resulting Gemfile into. Use - for standard output.'
101
+ c.default_value '-'
102
+ c.flag [:o, :output]
103
+
104
+ c.action do |global_options, options, args|
105
+ Prebundler::Cli::Subset.run(out, global_options, options, args)
106
+ end
107
+ end
108
+
109
+ desc 'Generate binstubs. Accepts the same arguments as `bundle binstubs`.'
110
+ command :binstubs do
111
+ end
112
+
113
+ singleton_class.send(:prepend, Module.new do
114
+ def run(args)
115
+ if args[0] == 'binstubs'
116
+ exec "bundle binstubs #{args[1..-1].join(' ')}"
117
+ else
118
+ super
119
+ end
120
+ end
121
+ end)
122
+
123
+ pre do |global, command, options, args|
124
+ # Pre logic here
125
+ # Return true to proceed; false to abort and not call the
126
+ # chosen command
127
+ # Use skips_pre before a command to skip this block
128
+ # on that command only
129
+ out.silence! if global[:silent]
130
+ load global[:config] if global[:config]
131
+ true
132
+ end
133
+
134
+ post do |global, command, options, args|
135
+ # Post logic here
136
+ # Use skips_post before a command to skip this
137
+ # block on that command only
138
+ end
139
+
140
+ on_error do |exception|
141
+ # Error logic here
142
+ # return false to skip default error handling
143
+ true
144
+ end
145
+ end
146
+ end
@@ -1,3 +1,4 @@
1
+ require 'rubygems/package'
1
2
  require 'fileutils'
2
3
  require 'set'
3
4
 
@@ -48,34 +49,61 @@ module Prebundler
48
49
  end
49
50
 
50
51
  def install
52
+ # NOTE: the --platform argument used to not work when --ignore-dependencies
53
+ # was specified, but has been fixed in modern versions of rubygems. See:
54
+ # https://github.com/rubygems/rubygems/pull/2446 for a very long rabbit hole.
51
55
  Bundler.with_unbundled_env do
52
- system({ "GEM_HOME" => bundle_path }, "gem install -N --ignore-dependencies --source #{source} #{name} -v #{version}")
56
+ system(
57
+ { "GEM_HOME" => bundle_path },
58
+ 'gem install -N --ignore-dependencies '\
59
+ "--source #{source} #{name} "\
60
+ "--version #{version} "\
61
+ "--platform #{Bundler.local_platform.to_s}"
62
+ )
53
63
  end
54
64
 
55
- $?.exitstatus
56
- end
57
-
58
- def install_from_tar(tar_file)
59
- system "tar -C #{bundle_path} -xf #{tar_file}"
60
65
  $?.exitstatus == 0
61
66
  end
62
67
 
63
- def add_to_tar(tar_file)
64
- tar_flags = File.exist?(tar_file) ? '-rf' : '-cf'
65
-
66
- system "tar -C #{bundle_path} #{tar_flags} #{tar_file} #{relative_gem_dir}"
67
-
68
- relative_gemspec_files.each do |relative_gemspec_file|
69
- system "tar -C #{bundle_path} -rf #{tar_file} #{relative_gemspec_file}"
68
+ def install_from_tar(tar_file)
69
+ File.open(tar_file) do |f|
70
+ Gem::Package::TarReader.new(f) do |tar|
71
+ tar.each do |entry|
72
+ path = File.join(bundle_path, entry.full_name)
73
+
74
+ if entry.directory?
75
+ FileUtils.mkdir_p(path)
76
+ else
77
+ FileUtils.mkdir_p(File.dirname(path))
78
+ File.open(path, 'wb') do |new_file|
79
+ new_file.write(entry.read)
80
+ end
81
+ end
82
+ end
83
+ end
70
84
  end
71
85
 
72
- if File.directory?(extension_dir)
73
- system "tar -C #{bundle_path} -rf #{tar_file} #{relative_extension_dir}"
74
- end
86
+ true
87
+ rescue => e
88
+ return false
89
+ end
75
90
 
76
- gemspecs.each do |gemspec|
77
- gemspec.executables.each do |executable|
78
- system "tar -C #{bundle_path} -rf #{tar_file} #{File.join(relative_gem_dir, gemspec.bindir, executable)}"
91
+ def add_to_tar(tar_file)
92
+ File.open(tar_file, 'wb') do |f|
93
+ Gem::Package::TarWriter.new(f) do |tar_io|
94
+ Dir.chdir(bundle_path) do
95
+ add_files_to_tar(
96
+ tar_io, Dir.glob(File.join(relative_gem_dir, '**', '*'))
97
+ )
98
+
99
+ add_files_to_tar(tar_io, relative_gemspec_files)
100
+
101
+ if File.directory?(extension_dir)
102
+ add_files_to_tar(
103
+ tar_io, Dir.glob(File.join(relative_extension_dir, '**', '*'))
104
+ )
105
+ end
106
+ end
79
107
  end
80
108
  end
81
109
  end
@@ -147,6 +175,17 @@ module Prebundler
147
175
 
148
176
  private
149
177
 
178
+ def add_files_to_tar(tar_io, files)
179
+ files.each do |file|
180
+ next if File.directory?(file)
181
+
182
+ mode = File.stat(file).mode
183
+ tar_io.add_file(file, mode) do |new_file|
184
+ new_file.write(File.binread(file))
185
+ end
186
+ end
187
+ end
188
+
150
189
  def find_platform_dir(base)
151
190
  platform = Bundler.local_platform.to_a
152
191
 
@@ -73,5 +73,9 @@ module Prebundler
73
73
  def gemspec
74
74
  # do nothing
75
75
  end
76
+
77
+ def eval_gemfile(path)
78
+ instance_eval(File.read(path))
79
+ end
76
80
  end
77
81
  end
@@ -22,15 +22,15 @@ module Prebundler
22
22
  FileUtils.mkdir_p(install_path)
23
23
  FileUtils.mkdir_p(cache_path)
24
24
 
25
- return if File.exist?(cache_dir) || File.exist?(install_dir)
25
+ return true if File.exist?(cache_dir) || File.exist?(install_dir)
26
26
  system "git clone #{uri} \"#{cache_dir}\" --bare --no-hardlinks --quiet"
27
- return $? if $?.exitstatus != 0
27
+ return false if $?.exitstatus != 0
28
28
  system "git clone --no-checkout --quiet \"#{cache_dir}\" \"#{install_dir}\""
29
- return $? if $?.exitstatus != 0
29
+ return false if $?.exitstatus != 0
30
30
  Dir.chdir(install_dir) { system "git reset --hard --quiet #{revision}" }
31
31
  serialize_gemspecs
32
32
  copy_gemspecs
33
- $?
33
+ $?.exitstatus == 0
34
34
  end
35
35
 
36
36
  def to_gem
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'aws-sdk'
3
+ require 'aws-sdk-s3'
4
4
 
5
5
  module Prebundler
6
6
  class S3Backend
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Prebundler
4
- VERSION = '0.11.7'
4
+ VERSION = '0.14.0'
5
5
  end
data/lib/prebundler.rb CHANGED
@@ -1,7 +1,8 @@
1
- require 'ohai'
1
+ require 'ohey'
2
2
 
3
3
  module Prebundler
4
4
  autoload :Cli, 'prebundler/cli'
5
+ autoload :Commands, 'prebundler/commands'
5
6
  autoload :Configurator, 'prebundler/configurator'
6
7
  autoload :FileBackend, 'prebundler/file_backend'
7
8
  autoload :PathGemRef, 'prebundler/path_gem_ref'
@@ -27,13 +28,13 @@ module Prebundler
27
28
  end
28
29
 
29
30
  def platform_version
30
- @platform_version ||= "#{system_info['platform']}-#{system_info['platform_version']}"
31
+ @platform_version ||= "#{platform.name}-#{platform.version}"
31
32
  end
32
33
 
33
34
  private
34
35
 
35
- def system_info
36
- @@system_info ||= Ohai::System.new.all_plugins(['platform'])
36
+ def platform
37
+ @platform ||= Ohey.current_platform
37
38
  end
38
39
  end
39
40
  end
data/prebundler.gemspec CHANGED
@@ -14,10 +14,10 @@ Gem::Specification.new do |s|
14
14
  s.add_dependency 'bundler'
15
15
  s.add_dependency 'parallel', '~> 1.0'
16
16
  s.add_dependency 'gli', '~> 2.0'
17
- s.add_dependency 'ohai', '~> 14.0'
17
+ s.add_dependency 'ohey', '~> 1.0'
18
18
 
19
19
  # @TODO: move s3 support into separate gem
20
- s.add_dependency 'aws-sdk', '~> 2.0'
20
+ s.add_dependency 'aws-sdk-s3', '~> 1.0'
21
21
 
22
22
  s.executables << 'prebundle'
23
23
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prebundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.7
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-15 00:00:00.000000000 Z
11
+ date: 2022-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -53,33 +53,33 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: ohai
56
+ name: ohey
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '14.0'
61
+ version: '1.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '14.0'
68
+ version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: aws-sdk
70
+ name: aws-sdk-s3
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '2.0'
75
+ version: '1.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '2.0'
82
+ version: '1.0'
83
83
  description: Gem dependency prebuilder
84
84
  email:
85
85
  - camertron@gmail.com
@@ -99,6 +99,7 @@ files:
99
99
  - lib/prebundler/cli/install.rb
100
100
  - lib/prebundler/cli/list.rb
101
101
  - lib/prebundler/cli/subset.rb
102
+ - lib/prebundler/commands.rb
102
103
  - lib/prebundler/configurator.rb
103
104
  - lib/prebundler/file_backend.rb
104
105
  - lib/prebundler/gem_ref.rb
@@ -129,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
130
  - !ruby/object:Gem::Version
130
131
  version: '0'
131
132
  requirements: []
132
- rubygems_version: 3.1.4
133
+ rubygems_version: 3.3.3
133
134
  signing_key:
134
135
  specification_version: 4
135
136
  summary: Gem dependency prebuilder