1
0
Fork 0
mirror of https://github.com/pry/pry.git synced 2022-11-09 12:35:05 -05:00

Group command-commands into their own set

This commit is contained in:
Conrad Irwin 2012-03-01 16:36:59 -08:00
parent 0b457ba9fa
commit 563f6e89a5
4 changed files with 64 additions and 55 deletions

View file

@ -21,7 +21,6 @@ class Pry
@commands = {}
@helper_module = Module.new
define_default_commands
import(*imported_sets)
instance_eval(&block) if block
@ -340,53 +339,6 @@ class Pry
:takes_block => false
}
end
def define_default_commands
create_command "install-command", "Install a disabled command." do |name|
banner <<-BANNER
Usage: install-command COMMAND
Installs the gems necessary to run the given COMMAND. You will generally not
need to run this unless told to by an error message.
BANNER
def process(name)
require 'rubygems/dependency_installer' unless defined? Gem::DependencyInstaller
command = find_command(name)
if command_dependencies_met?(command.options)
output.puts "Dependencies for #{command.name} are met. Nothing to do."
return
end
output.puts "Attempting to install `#{name}` command..."
gems_to_install = Array(command.options[:requires_gem])
gems_to_install.each do |g|
next if gem_installed?(g)
output.puts "Installing `#{g}` gem..."
begin
Gem::DependencyInstaller.new.install(g)
rescue Gem::GemNotFoundException
raise CommandError, "Required Gem: `#{g}` not found. Aborting command installation."
end
end
Gem.refresh
gems_to_install.each do |g|
begin
require g
rescue LoadError
raise CommandError, "Required Gem: `#{g}` installed but not found?!. Aborting command installation."
end
end
output.puts "Installation of `#{name}` successful! Type `help #{name}` for information"
end
end
end
end
# Wraps the return result of process_commands, indicates if the

View file

@ -2,6 +2,7 @@ require "pry/default_commands/basic"
require "pry/default_commands/help"
require "pry/default_commands/gems"
require "pry/default_commands/context"
require "pry/default_commands/commands"
require "pry/default_commands/input_and_output"
require "pry/default_commands/introspection"
require "pry/default_commands/editing"
@ -23,5 +24,6 @@ class Pry
import DefaultCommands::InputAndOutput
import DefaultCommands::Introspection
import DefaultCommands::EasterEggs
import DefaultCommands::Commands
end
end

View file

@ -20,13 +20,6 @@ class Pry
output.puts "Pry version: #{Pry::VERSION} on Ruby #{RUBY_VERSION}."
end
command "import-set", "Import a command set" do |command_set_name|
raise CommandError, "Provide a command set name" if command_set.nil?
set = target.eval(arg_string)
_pry_.commands.import set
end
command "reload-method", "Reload the source file that contains the specified method" do |meth_name|
meth = get_method_or_raise(meth_name, target, {}, :omit_help)

View file

@ -0,0 +1,62 @@
class Pry
module DefaultCommands
Commands = Pry::CommandSet.new do
create_command "import-set", "Import a command set" do
group "Commands"
def process(command_set_name)
raise CommandError, "Provide a command set name" if command_set.nil?
set = target.eval(arg_string)
_pry_.commands.import set
end
end
create_command "install-command", "Install a disabled command." do |name|
group 'Commands'
banner <<-BANNER
Usage: install-command COMMAND
Installs the gems necessary to run the given COMMAND. You will generally not
need to run this unless told to by an error message.
BANNER
def process(name)
require 'rubygems/dependency_installer' unless defined? Gem::DependencyInstaller
command = find_command(name)
if command_dependencies_met?(command.options)
output.puts "Dependencies for #{command.name} are met. Nothing to do."
return
end
output.puts "Attempting to install `#{name}` command..."
gems_to_install = Array(command.options[:requires_gem])
gems_to_install.each do |g|
next if gem_installed?(g)
output.puts "Installing `#{g}` gem..."
begin
Gem::DependencyInstaller.new.install(g)
rescue Gem::GemNotFoundException
raise CommandError, "Required Gem: `#{g}` not found. Aborting command installation."
end
end
Gem.refresh
gems_to_install.each do |g|
begin
require g
rescue LoadError
raise CommandError, "Required Gem: `#{g}` installed but not found?!. Aborting command installation."
end
end
output.puts "Installation of `#{name}` successful! Type `help #{name}` for information"
end
end
end
end
end