GRAYBYTE WORDPRESS FILE MANAGER3225

Server IP : 198.54.121.189 / Your IP : 216.73.216.112
System : Linux premium69.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Directory : /opt/alt/ruby26/lib64/ruby/2.6.0/bundler/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/ruby26/lib64/ruby/2.6.0/bundler//injector.rb
# frozen_string_literal: true

module Bundler
  class Injector
    INJECTED_GEMS = "injected gems".freeze

    def self.inject(new_deps, options = {})
      injector = new(new_deps, options)
      injector.inject(Bundler.default_gemfile, Bundler.default_lockfile)
    end

    def self.remove(gems, options = {})
      injector = new(gems, options)
      injector.remove(Bundler.default_gemfile, Bundler.default_lockfile)
    end

    def initialize(deps, options = {})
      @deps = deps
      @options = options
    end

    # @param [Pathname] gemfile_path The Gemfile in which to inject the new dependency.
    # @param [Pathname] lockfile_path The lockfile in which to inject the new dependency.
    # @return [Array]
    def inject(gemfile_path, lockfile_path)
      if Bundler.frozen_bundle?
        # ensure the lock and Gemfile are synced
        Bundler.definition.ensure_equivalent_gemfile_and_lockfile(true)
      end

      # temporarily unfreeze
      Bundler.settings.temporary(:deployment => false, :frozen => false) do
        # evaluate the Gemfile we have now
        builder = Dsl.new
        builder.eval_gemfile(gemfile_path)

        # don't inject any gems that are already in the Gemfile
        @deps -= builder.dependencies

        # add new deps to the end of the in-memory Gemfile
        # Set conservative versioning to false because
        # we want to let the resolver resolve the version first
        builder.eval_gemfile(INJECTED_GEMS, build_gem_lines(false)) if @deps.any?

        # resolve to see if the new deps broke anything
        @definition = builder.to_definition(lockfile_path, {})
        @definition.resolve_remotely!

        # since nothing broke, we can add those gems to the gemfile
        append_to(gemfile_path, build_gem_lines(@options[:conservative_versioning])) if @deps.any?

        # since we resolved successfully, write out the lockfile
        @definition.lock(Bundler.default_lockfile)

        # invalidate the cached Bundler.definition
        Bundler.reset_paths!

        # return an array of the deps that we added
        @deps
      end
    end

    # @param [Pathname] gemfile_path The Gemfile from which to remove dependencies.
    # @param [Pathname] lockfile_path The lockfile from which to remove dependencies.
    # @return [Array]
    def remove(gemfile_path, lockfile_path)
      # remove gems from each gemfiles we have
      Bundler.definition.gemfiles.each do |path|
        deps = remove_deps(path)

        show_warning("No gems were removed from the gemfile.") if deps.empty?

        deps.each {|dep| Bundler.ui.confirm "#{SharedHelpers.pretty_dependency(dep, false)} was removed." }
      end
    end

  private

    def conservative_version(spec)
      version = spec.version
      return ">= 0" if version.nil?
      segments = version.segments
      seg_end_index = version >= Gem::Version.new("1.0") ? 1 : 2

      prerelease_suffix = version.to_s.gsub(version.release.to_s, "") if version.prerelease?
      "#{version_prefix}#{segments[0..seg_end_index].join(".")}#{prerelease_suffix}"
    end

    def version_prefix
      if @options[:strict]
        "= "
      elsif @options[:optimistic]
        ">= "
      else
        "~> "
      end
    end

    def build_gem_lines(conservative_versioning)
      @deps.map do |d|
        name = d.name.dump

        requirement = if conservative_versioning
          ", \"#{conservative_version(@definition.specs[d.name][0])}\""
        else
          ", #{d.requirement.as_list.map(&:dump).join(", ")}"
        end

        if d.groups != Array(:default)
          group = d.groups.size == 1 ? ", :group => #{d.groups.first.inspect}" : ", :groups => #{d.groups.inspect}"
        end

        source = ", :source => \"#{d.source}\"" unless d.source.nil?

        %(gem #{name}#{requirement}#{group}#{source})
      end.join("\n")
    end

    def append_to(gemfile_path, new_gem_lines)
      gemfile_path.open("a") do |f|
        f.puts
        f.puts new_gem_lines
      end
    end

    # evalutes a gemfile to remove the specified gem
    # from it.
    def remove_deps(gemfile_path)
      initial_gemfile = IO.readlines(gemfile_path)

      Bundler.ui.info "Removing gems from #{gemfile_path}"

      # evaluate the Gemfile we have
      builder = Dsl.new
      builder.eval_gemfile(gemfile_path)

      removed_deps = remove_gems_from_dependencies(builder, @deps, gemfile_path)

      # abort the opertion if no gems were removed
      # no need to operate on gemfile furthur
      return [] if removed_deps.empty?

      cleaned_gemfile = remove_gems_from_gemfile(@deps, gemfile_path)

      SharedHelpers.write_to_gemfile(gemfile_path, cleaned_gemfile)

      # check for errors
      # including extra gems being removed
      # or some gems not being removed
      # and return the actual removed deps
      cross_check_for_errors(gemfile_path, builder.dependencies, removed_deps, initial_gemfile)
    end

    # @param [Dsl]      builder Dsl object of current Gemfile.
    # @param [Array]    gems Array of names of gems to be removed.
    # @param [Pathname] path of the Gemfile
    # @return [Array]   removed_deps Array of removed dependencies.
    def remove_gems_from_dependencies(builder, gems, gemfile_path)
      removed_deps = []

      gems.each do |gem_name|
        deleted_dep = builder.dependencies.find {|d| d.name == gem_name }

        if deleted_dep.nil?
          raise GemfileError, "`#{gem_name}` is not specified in #{gemfile_path} so it could not be removed."
        end

        builder.dependencies.delete(deleted_dep)

        removed_deps << deleted_dep
      end

      removed_deps
    end

    # @param [Array] gems            Array of names of gems to be removed.
    # @param [Pathname] gemfile_path The Gemfile from which to remove dependencies.
    def remove_gems_from_gemfile(gems, gemfile_path)
      patterns = /gem\s+(['"])#{Regexp.union(gems)}\1|gem\s*\((['"])#{Regexp.union(gems)}\2\)/

      # remove lines which match the regex
      new_gemfile = IO.readlines(gemfile_path).reject {|line| line.match(patterns) }

      # remove lone \n and append them with other strings
      new_gemfile.each_with_index do |_line, index|
        if new_gemfile[index + 1] == "\n"
          new_gemfile[index] += new_gemfile[index + 1]
          new_gemfile.delete_at(index + 1)
        end
      end

      %w[group source env install_if].each {|block| remove_nested_blocks(new_gemfile, block) }

      new_gemfile.join.chomp
    end

    # @param [Array] gemfile       Array of gemfile contents.
    # @param [String] block_name   Name of block name to look for.
    def remove_nested_blocks(gemfile, block_name)
      nested_blocks = 0

      # count number of nested blocks
      gemfile.each_with_index {|line, index| nested_blocks += 1 if !gemfile[index + 1].nil? && gemfile[index + 1].include?(block_name) && line.include?(block_name) }

      while nested_blocks >= 0
        nested_blocks -= 1

        gemfile.each_with_index do |line, index|
          next unless !line.nil? && line.include?(block_name)
          if gemfile[index + 1] =~ /^\s*end\s*$/
            gemfile[index] = nil
            gemfile[index + 1] = nil
          end
        end

        gemfile.compact!
      end
    end

    # @param [Pathname] gemfile_path   The Gemfile from which to remove dependencies.
    # @param [Array] original_deps     Array of original dependencies.
    # @param [Array] removed_deps      Array of removed dependencies.
    # @param [Array] initial_gemfile   Contents of original Gemfile before any operation.
    def cross_check_for_errors(gemfile_path, original_deps, removed_deps, initial_gemfile)
      # evalute the new gemfile to look for any failure cases
      builder = Dsl.new
      builder.eval_gemfile(gemfile_path)

      # record gems which were removed but not requested
      extra_removed_gems = original_deps - builder.dependencies

      # if some extra gems were removed then raise error
      # and revert Gemfile to original
      unless extra_removed_gems.empty?
        SharedHelpers.write_to_gemfile(gemfile_path, initial_gemfile.join)

        raise InvalidOption, "Gems could not be removed. #{extra_removed_gems.join(", ")} would also have been removed. Bundler cannot continue."
      end

      # record gems which could not be removed due to some reasons
      errored_deps = builder.dependencies.select {|d| d.gemfile == gemfile_path } & removed_deps.select {|d| d.gemfile == gemfile_path }

      show_warning "#{errored_deps.map(&:name).join(", ")} could not be removed." unless errored_deps.empty?

      # return actual removed dependencies
      removed_deps - errored_deps
    end

    def show_warning(message)
      Bundler.ui.info Bundler.ui.add_color(message, :yellow)
    end
  end
end

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
March 03 2024 22:47:39
root / root
0755
cli
--
March 03 2024 22:47:32
root / linksafe
0755
compact_index_client
--
March 03 2024 22:47:32
root / linksafe
0755
fetcher
--
March 03 2024 22:47:32
root / linksafe
0755
installer
--
March 03 2024 22:47:32
root / linksafe
0755
plugin
--
March 03 2024 22:47:32
root / linksafe
0755
resolver
--
March 03 2024 22:47:32
root / linksafe
0755
settings
--
March 03 2024 22:47:32
root / linksafe
0755
source
--
March 03 2024 22:47:32
root / linksafe
0755
ssl_certs
--
March 03 2024 22:47:32
root / linksafe
0755
templates
--
March 03 2024 22:47:32
root / linksafe
0755
ui
--
March 03 2024 22:47:32
root / linksafe
0755
vendor
--
March 03 2024 22:47:32
root / linksafe
0755
build_metadata.rb
1.614 KB
April 12 2022 11:50:11
root / linksafe
0644
capistrano.rb
0.858 KB
April 12 2022 11:50:11
root / linksafe
0644
cli.rb
35.123 KB
April 12 2022 11:50:11
root / linksafe
0644
compact_index_client.rb
3.271 KB
April 12 2022 11:50:11
root / linksafe
0644
compatibility_guard.rb
0.506 KB
April 12 2022 11:50:11
root / linksafe
0644
constants.rb
0.207 KB
April 12 2022 11:50:11
root / linksafe
0644
current_ruby.rb
2.187 KB
April 12 2022 11:50:11
root / linksafe
0644
definition.rb
36.444 KB
April 12 2022 11:50:11
root / linksafe
0644
dep_proxy.rb
0.808 KB
April 12 2022 11:50:11
root / linksafe
0644
dependency.rb
4.434 KB
April 12 2022 11:50:11
root / linksafe
0644
deployment.rb
3.191 KB
April 12 2022 11:50:11
root / linksafe
0644
deprecate.rb
0.855 KB
April 12 2022 11:50:11
root / linksafe
0644
dsl.rb
21.46 KB
April 12 2022 11:50:11
root / linksafe
0644
endpoint_specification.rb
3.908 KB
April 12 2022 11:50:11
root / linksafe
0644
env.rb
5.221 KB
April 12 2022 11:50:11
root / linksafe
0644
environment_preserver.rb
1.306 KB
April 12 2022 11:50:11
root / linksafe
0644
errors.rb
4.59 KB
April 12 2022 11:50:11
root / linksafe
0644
feature_flag.rb
3.066 KB
April 12 2022 11:50:11
root / linksafe
0644
fetcher.rb
10.831 KB
April 12 2022 11:50:11
root / linksafe
0644
friendly_errors.rb
4.33 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_helper.rb
5.876 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_helpers.rb
3.186 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_remote_fetcher.rb
1.459 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_tasks.rb
0.134 KB
April 12 2022 11:50:11
root / linksafe
0644
gem_version_promoter.rb
6.523 KB
April 12 2022 11:50:11
root / linksafe
0644
gemdeps.rb
0.413 KB
April 12 2022 11:50:11
root / linksafe
0644
graph.rb
4.999 KB
April 12 2022 11:50:11
root / linksafe
0644
index.rb
5.242 KB
April 12 2022 11:50:11
root / linksafe
0644
injector.rb
8.612 KB
April 12 2022 11:50:11
root / linksafe
0644
inline.rb
2.33 KB
April 12 2022 11:50:11
root / linksafe
0644
installer.rb
11.846 KB
April 12 2022 11:50:11
root / linksafe
0644
lazy_specification.rb
3.615 KB
April 12 2022 11:50:11
root / linksafe
0644
lockfile_generator.rb
2.179 KB
April 12 2022 11:50:11
root / linksafe
0644
lockfile_parser.rb
8.622 KB
April 12 2022 11:50:11
root / linksafe
0644
match_platform.rb
0.644 KB
April 12 2022 11:50:11
root / linksafe
0644
mirror.rb
5.79 KB
April 12 2022 11:50:11
root / linksafe
0644
plugin.rb
9.121 KB
April 12 2022 11:50:11
root / linksafe
0644
process_lock.rb
0.686 KB
April 12 2022 11:50:11
root / linksafe
0644
psyched_yaml.rb
0.833 KB
April 12 2022 11:50:11
root / linksafe
0644
remote_specification.rb
3.457 KB
April 12 2022 11:50:11
root / linksafe
0644
resolver.rb
14.196 KB
April 12 2022 11:50:11
root / linksafe
0644
retry.rb
1.603 KB
April 12 2022 11:50:11
root / linksafe
0644
ruby_dsl.rb
0.743 KB
April 12 2022 11:50:11
root / linksafe
0644
ruby_version.rb
4.963 KB
April 12 2022 11:50:11
root / linksafe
0644
rubygems_ext.rb
5.878 KB
April 12 2022 11:50:11
root / linksafe
0644
rubygems_gem_installer.rb
3.486 KB
April 12 2022 11:50:11
root / linksafe
0644
rubygems_integration.rb
25.008 KB
April 12 2022 11:50:11
root / linksafe
0644
runtime.rb
10.951 KB
April 12 2022 11:50:11
root / linksafe
0644
settings.rb
12.382 KB
April 12 2022 11:50:11
root / linksafe
0644
setup.rb
0.703 KB
April 12 2022 11:50:11
root / linksafe
0644
shared_helpers.rb
12.002 KB
April 12 2022 11:50:11
root / linksafe
0644
similarity_detector.rb
1.836 KB
April 12 2022 11:50:11
root / linksafe
0644
source.rb
2.655 KB
April 12 2022 11:50:11
root / linksafe
0644
source_list.rb
5.868 KB
April 12 2022 11:50:11
root / linksafe
0644
spec_set.rb
5.344 KB
April 12 2022 11:50:11
root / linksafe
0644
stub_specification.rb
2.777 KB
April 12 2022 11:50:11
root / linksafe
0644
ui.rb
0.193 KB
April 12 2022 11:50:11
root / linksafe
0644
uri_credentials_filter.rb
1.204 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_fileutils.rb
0.188 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_molinillo.rb
0.098 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_persistent.rb
1.61 KB
April 12 2022 11:50:11
root / linksafe
0644
vendored_thor.rb
0.188 KB
April 12 2022 11:50:11
root / linksafe
0644
version.rb
0.802 KB
April 12 2022 11:50:11
root / linksafe
0644
version_ranges.rb
2.864 KB
April 12 2022 11:50:11
root / linksafe
0644
vlad.rb
0.455 KB
April 12 2022 11:50:11
root / linksafe
0644
worker.rb
2.568 KB
April 12 2022 11:50:11
root / linksafe
0644
yaml_serializer.rb
2.406 KB
April 12 2022 11:50:11
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF