opt
/
alt
/
ruby26
/
lib64
/
ruby
/
2.6.0
/
bundler
/
cli
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
add.rb
1.25 KB
Rename
Delete
binstubs.rb
1.65 KB
Rename
Delete
cache.rb
1.07 KB
Rename
Delete
check.rb
1.24 KB
Rename
Delete
clean.rb
606 bytes
Rename
Delete
common.rb
3.43 KB
Rename
Delete
config.rb
3.28 KB
Rename
Delete
console.rb
1.05 KB
Rename
Delete
doctor.rb
3.86 KB
Rename
Delete
exec.rb
2.97 KB
Rename
Delete
gem.rb
8.55 KB
Rename
Delete
info.rb
1.48 KB
Rename
Delete
init.rb
1.16 KB
Rename
Delete
inject.rb
2.11 KB
Rename
Delete
install.rb
8.61 KB
Rename
Delete
issue.rb
1.25 KB
Rename
Delete
list.rb
1.93 KB
Rename
Delete
lock.rb
1.77 KB
Rename
Delete
open.rb
771 bytes
Rename
Delete
outdated.rb
8.62 KB
Rename
Delete
package.rb
1.44 KB
Rename
Delete
platform.rb
1.38 KB
Rename
Delete
plugin.rb
1.03 KB
Rename
Delete
pristine.rb
1.53 KB
Rename
Delete
remove.rb
375 bytes
Rename
Delete
show.rb
2.21 KB
Rename
Delete
update.rb
3.30 KB
Rename
Delete
viz.rb
1.06 KB
Rename
Delete
# frozen_string_literal: true require "rbconfig" module Bundler class CLI::Doctor DARWIN_REGEX = /\s+(.+) \(compatibility / LDD_REGEX = /\t\S+ => (\S+) \(\S+\)/ attr_reader :options def initialize(options) @options = options end def otool_available? Bundler.which("otool") end def ldd_available? Bundler.which("ldd") end def dylibs_darwin(path) output = `/usr/bin/otool -L "#{path}"`.chomp dylibs = output.split("\n")[1..-1].map {|l| l.match(DARWIN_REGEX).captures[0] }.uniq # ignore @rpath and friends dylibs.reject {|dylib| dylib.start_with? "@" } end def dylibs_ldd(path) output = `/usr/bin/ldd "#{path}"`.chomp output.split("\n").map do |l| match = l.match(LDD_REGEX) next if match.nil? match.captures[0] end.compact end def dylibs(path) case RbConfig::CONFIG["host_os"] when /darwin/ return [] unless otool_available? dylibs_darwin(path) when /(linux|solaris|bsd)/ return [] unless ldd_available? dylibs_ldd(path) else # Windows, etc. Bundler.ui.warn("Dynamic library check not supported on this platform.") [] end end def bundles_for_gem(spec) Dir.glob("#{spec.full_gem_path}/**/*.bundle") end def check! require "bundler/cli/check" Bundler::CLI::Check.new({}).run end def run Bundler.ui.level = "error" if options[:quiet] Bundler.settings.validate! check! definition = Bundler.definition broken_links = {} definition.specs.each do |spec| bundles_for_gem(spec).each do |bundle| bad_paths = dylibs(bundle).select {|f| !File.exist?(f) } if bad_paths.any? broken_links[spec] ||= [] broken_links[spec].concat(bad_paths) end end end permissions_valid = check_home_permissions if broken_links.any? message = "The following gems are missing OS dependencies:" broken_links.map do |spec, paths| paths.uniq.map do |path| "\n * #{spec.name}: #{path}" end end.flatten.sort.each {|m| message += m } raise ProductionError, message elsif !permissions_valid Bundler.ui.info "No issues found with the installed bundle" end end private def check_home_permissions require "find" files_not_readable_or_writable = [] files_not_rw_and_owned_by_different_user = [] files_not_owned_by_current_user_but_still_rw = [] Find.find(Bundler.home.to_s).each do |f| if !File.writable?(f) || !File.readable?(f) if File.stat(f).uid != Process.uid files_not_rw_and_owned_by_different_user << f else files_not_readable_or_writable << f end elsif File.stat(f).uid != Process.uid files_not_owned_by_current_user_but_still_rw << f end end ok = true if files_not_owned_by_current_user_but_still_rw.any? Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \ "user, but are still readable/writable. These files are:\n - #{files_not_owned_by_current_user_but_still_rw.join("\n - ")}" ok = false end if files_not_rw_and_owned_by_different_user.any? Bundler.ui.warn "Files exist in the Bundler home that are owned by another " \ "user, and are not readable/writable. These files are:\n - #{files_not_rw_and_owned_by_different_user.join("\n - ")}" ok = false end if files_not_readable_or_writable.any? Bundler.ui.warn "Files exist in the Bundler home that are not " \ "readable/writable by the current user. These files are:\n - #{files_not_readable_or_writable.join("\n - ")}" ok = false end ok end end end
Save