summaryrefslogtreecommitdiff
path: root/lib/license
diff options
context:
space:
mode:
Diffstat (limited to 'lib/license')
-rw-r--r--lib/license/finder/ext.rb1
-rw-r--r--lib/license/finder/ext/bundler.rb61
-rw-r--r--lib/license/management/version.rb2
3 files changed, 63 insertions, 1 deletions
diff --git a/lib/license/finder/ext.rb b/lib/license/finder/ext.rb
index 8d76172..da6a006 100644
--- a/lib/license/finder/ext.rb
+++ b/lib/license/finder/ext.rb
@@ -1,6 +1,7 @@
# frozen_string_literal: true
require 'license/finder/ext/bower'
+require 'license/finder/ext/bundler'
require 'license/finder/ext/conan'
require 'license/finder/ext/dependency'
require 'license/finder/ext/go_modules'
diff --git a/lib/license/finder/ext/bundler.rb b/lib/license/finder/ext/bundler.rb
new file mode 100644
index 0000000..08ab3ac
--- /dev/null
+++ b/lib/license/finder/ext/bundler.rb
@@ -0,0 +1,61 @@
+# frozen_string_literal: true
+
+module LicenseFinder
+ class Bundler < PackageManager
+ def prepare
+ vendor_path = Pathname.pwd.join('.gitlab', 'cache', 'vendor')
+ shell.execute([:mkdir, '-p', vendor_path.to_s])
+
+ Dir.chdir(project_path) do
+ with_clean_bundler do
+ shell.execute([:bundle, :config, '--local', :path, vendor_path.to_s])
+ shell.execute([:bundle, :install, '--verbose'], env: default_env)
+ end
+ end
+ end
+
+ def current_packages
+ Dir.chdir(project_path) do
+ gem_details.map do |gem|
+ Dependency.new(
+ 'Bundler',
+ gem.name,
+ gem.version.to_s,
+ description: gem.description,
+ detection_path: lockfile_path,
+ homepage: gem.homepage,
+ install_path: gem.full_gem_path || '/dev/null',
+ spec_licenses: gem.licenses,
+ summary: gem.summary
+ )
+ end
+ end
+ end
+
+ private
+
+ def default_env
+ @default_env ||= {
+ 'BUNDLE_ALLOW_OFFLINE_INSTALL' => 'true',
+ 'BUNDLE_SUPPRESS_INSTALL_USING_MESSAGES' => 'true',
+ 'BUNDLE_DISABLE_VERSION_CHECK' => 'true',
+ 'BUNDLE_ERROR_ON_STDERR' => 'true',
+ 'BUNDLE_IGNORE_MESSAGES' => 'true',
+ 'BUNDLE_JOBS' => ENV.fetch('BUNDLE_JOBS', `nproc`.chomp),
+ 'BUNDLE_SILENCE_ROOT_WARNING' => 'true',
+ 'BUNDLE_WITH' => ENV.fetch('BUNDLE_WITH', included_groups.to_a.join(':'))
+ }.tap do |env|
+ env['BUNDLE_FROZEN'] = 'true' if lockfile_path.exist?
+ env['BUNDLE_SSL_CA_CERT'] = shell.custom_certificate_path.to_s if shell.custom_certificate_installed?
+ end
+ end
+
+ def with_clean_bundler
+ if ::Bundler.respond_to?(:with_unbundled_env)
+ ::Bundler.with_unbundled_env { yield }
+ else
+ ::Bundler.with_clean_env { yield }
+ end
+ end
+ end
+end
diff --git a/lib/license/management/version.rb b/lib/license/management/version.rb
index eb4ecd4..de5715a 100644
--- a/lib/license/management/version.rb
+++ b/lib/license/management/version.rb
@@ -2,6 +2,6 @@
module License
module Management
- VERSION = '3.13.0'
+ VERSION = '3.14.0'
end
end