Class: Package::Audit::Ruby::BundlerSpecs
- Inherits:
-
Object
- Object
- Package::Audit::Ruby::BundlerSpecs
- Defined in:
- lib/package/audit/ruby/bundler_specs.rb
Class Method Summary collapse
- .all(dir) ⇒ Object
- .filter_local_dependencies(specs) ⇒ Object
- .gemfile(dir) ⇒ Object
- .local_dependency?(spec) ⇒ Boolean
Class Method Details
.all(dir) ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/package/audit/ruby/bundler_specs.rb', line 11 def self.all(dir) specs = Bundler.with_unbundled_env do ENV['BUNDLE_GEMFILE'] = "#{dir}/Gemfile" Bundler.ui.silence { Bundler.definition.resolve } end filter_local_dependencies(specs) end |
.filter_local_dependencies(specs) ⇒ Object
35 36 37 |
# File 'lib/package/audit/ruby/bundler_specs.rb', line 35 def self.filter_local_dependencies(specs) specs.reject { |spec| local_dependency?(spec) } end |
.gemfile(dir) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/package/audit/ruby/bundler_specs.rb', line 19 def self.gemfile(dir) current_dependencies = Bundler.with_unbundled_env do ENV['BUNDLE_GEMFILE'] = "#{dir}/Gemfile" Bundler.ui.level = 'error' Bundler.reset! Bundler.ui.silence do Bundler.load.dependencies.to_h { |dep| [dep.name, dep] } end end gemfile_specs, = all(dir).partition do |spec| current_dependencies.key? spec.name end gemfile_specs end |
.local_dependency?(spec) ⇒ Boolean
39 40 41 42 43 44 45 46 |
# File 'lib/package/audit/ruby/bundler_specs.rb', line 39 def self.local_dependency?(spec) # Check if the gem has a local source (path or git with local path) source = spec.source return true if source.is_a?(Bundler::Source::Path) return true if source.is_a?(Bundler::Source::Git) && source.uri.start_with?('file:', './', '../') false end |