GRAYBYTE WORDPRESS FILE MANAGER5794

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/ruby33/share/rubygems/rubygems/commands/
Upload Files :
Current_dir [ Not Writeable ] Document_root [ Writeable ]

Command :


Current File : /opt/alt/ruby33/share/rubygems/rubygems/commands//unpack_command.rb
# frozen_string_literal: true

require_relative "../command"
require_relative "../version_option"
require_relative "../security_option"
require_relative "../remote_fetcher"
require_relative "../package"

# forward-declare

module Gem::Security # :nodoc:
  class Policy # :nodoc:
  end
end

class Gem::Commands::UnpackCommand < Gem::Command
  include Gem::VersionOption
  include Gem::SecurityOption

  def initialize
    require "fileutils"

    super "unpack", "Unpack an installed gem to the current directory",
          version: Gem::Requirement.default,
          target: Dir.pwd

    add_option("--target=DIR",
               "target directory for unpacking") do |value, options|
      options[:target] = value
    end

    add_option("--spec", "unpack the gem specification") do |_value, options|
      options[:spec] = true
    end

    add_security_option
    add_version_option
  end

  def arguments # :nodoc:
    "GEMNAME       name of gem to unpack"
  end

  def defaults_str # :nodoc:
    "--version '#{Gem::Requirement.default}'"
  end

  def description
    <<-EOF
The unpack command allows you to examine the contents of a gem or modify
them to help diagnose a bug.

You can add the contents of the unpacked gem to the load path using the
RUBYLIB environment variable or -I:

  $ gem unpack my_gem
  Unpacked gem: '.../my_gem-1.0'
  [edit my_gem-1.0/lib/my_gem.rb]
  $ ruby -Imy_gem-1.0/lib -S other_program

You can repackage an unpacked gem using the build command.  See the build
command help for an example.
    EOF
  end

  def usage # :nodoc:
    "#{program_name} GEMNAME"
  end

  #--
  # TODO: allow, e.g., 'gem unpack rake-0.3.1'.  Find a general solution for
  # this, so that it works for uninstall as well.  (And check other commands
  # at the same time.)

  def execute
    security_policy = options[:security_policy]

    get_all_gem_names.each do |name|
      dependency = Gem::Dependency.new name, options[:version]
      path = get_path dependency

      unless path
        alert_error "Gem '#{name}' not installed nor fetchable."
        next
      end

      if @options[:spec]
        spec, metadata = Gem::Package.raw_spec(path, security_policy)

        if metadata.nil?
          alert_error "--spec is unsupported on '#{name}' (old format gem)"
          next
        end

        spec_file = File.basename spec.spec_file

        FileUtils.mkdir_p @options[:target] if @options[:target]

        destination = if @options[:target]
          File.join @options[:target], spec_file
        else
          spec_file
        end

        File.open destination, "w" do |io|
          io.write metadata
        end
      else
        basename = File.basename path, ".gem"
        target_dir = File.expand_path basename, options[:target]

        package = Gem::Package.new path, security_policy
        package.extract_files target_dir

        say "Unpacked gem: '#{target_dir}'"
      end
    end
  end

  ##
  #
  # Find cached filename in Gem.path. Returns nil if the file cannot be found.
  #
  #--
  # TODO: see comments in get_path() about general service.

  def find_in_cache(filename)
    Gem.path.each do |path|
      this_path = File.join(path, "cache", filename)
      return this_path if File.exist? this_path
    end

    nil
  end

  ##
  # Return the full path to the cached gem file matching the given
  # name and version requirement.  Returns 'nil' if no match.
  #
  # Example:
  #
  #   get_path 'rake', '> 0.4' # "/usr/lib/ruby/gems/1.8/cache/rake-0.4.2.gem"
  #   get_path 'rake', '< 0.1' # nil
  #   get_path 'rak'           # nil (exact name required)
  #--
  # TODO: This should be refactored so that it's a general service. I don't
  # think any of our existing classes are the right place though.  Just maybe
  # 'Cache'?
  #
  # TODO: It just uses Gem.dir for now.  What's an easy way to get the list of
  # source directories?

  def get_path(dependency)
    return dependency.name if /\.gem$/i.match?(dependency.name)

    specs = dependency.matching_specs

    selected = specs.max_by(&:version)

    return Gem::RemoteFetcher.fetcher.download_to_cache(dependency) unless
      selected

    return unless /^#{selected.name}$/i.match?(dependency.name)

    # We expect to find (basename).gem in the 'cache' directory.  Furthermore,
    # the name match must be exact (ignoring case).

    path = find_in_cache File.basename selected.cache_file

    return Gem::RemoteFetcher.fetcher.download_to_cache(dependency) unless path

    path
  end
end

[ Back ]
Name
Size
Last Modified
Owner / Group
Permissions
Options
..
--
May 13 2025 08:35:36
root / linksafe
0755
build_command.rb
2.93 KB
April 24 2025 07:57:47
root / linksafe
0644
cert_command.rb
9.133 KB
April 24 2025 07:57:47
root / linksafe
0644
check_command.rb
2.294 KB
April 24 2025 07:57:47
root / linksafe
0644
cleanup_command.rb
4.27 KB
April 24 2025 07:57:47
root / linksafe
0644
contents_command.rb
4.318 KB
April 24 2025 07:57:47
root / linksafe
0644
dependency_command.rb
5.084 KB
April 24 2025 07:57:47
root / linksafe
0644
environment_command.rb
5.225 KB
April 24 2025 07:57:47
root / linksafe
0644
exec_command.rb
6.556 KB
April 24 2025 07:57:47
root / linksafe
0644
fetch_command.rb
2.654 KB
April 24 2025 07:57:47
root / linksafe
0644
generate_index_command.rb
1.728 KB
April 24 2025 07:57:47
root / linksafe
0644
help_command.rb
10.157 KB
April 24 2025 07:57:47
root / linksafe
0644
info_command.rb
0.814 KB
April 24 2025 07:57:47
root / linksafe
0644
install_command.rb
7.287 KB
April 24 2025 07:57:47
root / linksafe
0644
list_command.rb
0.974 KB
April 24 2025 07:57:47
root / linksafe
0644
lock_command.rb
2.689 KB
April 24 2025 07:57:47
root / linksafe
0644
mirror_command.rb
0.612 KB
April 24 2025 07:57:47
root / linksafe
0644
open_command.rb
1.903 KB
April 24 2025 07:57:47
root / linksafe
0644
outdated_command.rb
0.844 KB
April 24 2025 07:57:47
root / linksafe
0644
owner_command.rb
3.359 KB
April 24 2025 07:57:47
root / linksafe
0644
pristine_command.rb
6.694 KB
April 24 2025 07:57:47
root / linksafe
0644
push_command.rb
2.555 KB
April 24 2025 07:57:47
root / linksafe
0644
query_command.rb
1.21 KB
April 24 2025 07:57:47
root / linksafe
0644
rdoc_command.rb
2.204 KB
April 24 2025 07:57:47
root / linksafe
0644
rebuild_command.rb
7.323 KB
April 24 2025 07:57:47
root / linksafe
0644
search_command.rb
0.939 KB
April 24 2025 07:57:47
root / linksafe
0644
server_command.rb
0.634 KB
April 24 2025 07:57:47
root / linksafe
0644
setup_command.rb
17.9 KB
April 24 2025 07:57:47
root / linksafe
0644
signin_command.rb
0.875 KB
April 24 2025 07:57:47
root / linksafe
0644
signout_command.rb
0.877 KB
April 24 2025 07:57:47
root / linksafe
0644
sources_command.rb
5.747 KB
April 24 2025 07:57:47
root / linksafe
0644
specification_command.rb
3.463 KB
April 24 2025 07:57:47
root / linksafe
0644
stale_command.rb
0.942 KB
April 24 2025 07:57:47
root / linksafe
0644
uninstall_command.rb
5.855 KB
April 24 2025 07:57:47
root / linksafe
0644
unpack_command.rb
4.41 KB
April 24 2025 07:57:47
root / linksafe
0644
update_command.rb
8.563 KB
April 24 2025 07:57:47
root / linksafe
0644
which_command.rb
2.089 KB
April 24 2025 07:57:47
root / linksafe
0644
yank_command.rb
2.348 KB
April 24 2025 07:57:47
root / linksafe
0644

GRAYBYTE WORDPRESS FILE MANAGER @ 2025
CONTACT ME
Static GIF