Class: Pry::Command::ShellCommand
- Inherits:
-
Pry::ClassCommand
- Object
- Pry::Command
- Pry::ClassCommand
- Pry::Command::ShellCommand
- Defined in:
- lib/pry/commands/shell_command.rb
Constant Summary
Constants inherited from Pry::Command
Constants included from Helpers::DocumentationHelpers
Helpers::DocumentationHelpers::YARD_TAGS
Constants included from Helpers::Text
Instance Attribute Summary
Attributes inherited from Pry::ClassCommand
Attributes inherited from Pry::Command
#arg_string, #captures, #command_block, #command_set, #context, #eval_string, #hooks, #output, #pry_instance, #target
Instance Method Summary collapse
- #cd_path_env ⇒ Object private
- #cd_path_exists? ⇒ Boolean private
- #parse_destination(dest) ⇒ Object private
- #path_from_cd_path(dest) ⇒ Object private
- #process(cmd) ⇒ Object
- #process_cd(dest) ⇒ Object private
- #special_case_path?(dest) ⇒ Boolean private
Methods inherited from Pry::ClassCommand
#call, #complete, doc, #help, inherited, #options, #setup, #slop, source, source_file, source_line, source_location, source_object, #subcommands
Methods inherited from Pry::Command
#_pry_, #after_hooks, banner, #before_hooks, #block, #call_safely, #call_with_hooks, #check_for_command_collision, command_name, #command_name, #command_options, command_regex, #commands, #complete, convert_to_regex, default_options, #description, doc, #find_hooks, group, #initialize, inspect, #interpolate_string, #match, match_score, matches?, name, #name, #normalize_method_args, options, #pass_block, #process_line, #run, #source, source, source_file, source_line, #state, state, subclass, #target_self, #tokenize, #use_unpatched_symbol, #void
Methods included from Helpers::DocumentationHelpers
#get_comment_content, get_comment_content, process_comment_markup, #process_comment_markup, #process_rdoc, process_rdoc, #process_yardoc, process_yardoc, process_yardoc_tag, #process_yardoc_tag, #strip_comments_from_c_code, strip_comments_from_c_code, #strip_leading_whitespace, strip_leading_whitespace
Methods included from Pry::CodeObject::Helpers
#c_method?, #c_module?, #command?, #module_with_yard_docs?, #real_method_object?
Methods included from Helpers::Text
#bold, #default, #indent, #no_color, #no_pager, #strip_color, #with_line_numbers
Methods included from Helpers::CommandHelpers
#absolute_index_number, #absolute_index_range, #get_method_or_raise, #internal_binding?, #one_index_number, #one_index_range, #one_index_range_or_number, #restrict_to_lines, #set_file_and_dir_locals, #temp_file, #unindent
Methods included from Helpers::OptionsHelpers
method_object, #method_object, method_options, #method_options
Methods included from Helpers::BaseHelpers
#colorize_code, #find_command, #heading, #highlight, #not_a_real_file?, #safe_send, #silence_warnings, #stagger_output, #use_ansi_codes?
Constructor Details
This class inherits a constructor from Pry::Command
Instance Method Details
#cd_path_env ⇒ Object (private)
50 51 52 |
# File 'lib/pry/commands/shell_command.rb', line 50 def cd_path_env Pry::Env['CDPATH'] end |
#cd_path_exists? ⇒ Boolean (private)
54 55 56 |
# File 'lib/pry/commands/shell_command.rb', line 54 def cd_path_exists? cd_path_env && cd_path_env.length.nonzero? end |
#parse_destination(dest) ⇒ Object (private)
36 37 38 39 40 41 |
# File 'lib/pry/commands/shell_command.rb', line 36 def parse_destination(dest) return "~" if dest.empty? return dest unless dest == "-" state.old_pwd || raise(CommandError, "No prior directory available") end |
#path_from_cd_path(dest) ⇒ Object (private)
58 59 60 61 62 63 64 65 66 |
# File 'lib/pry/commands/shell_command.rb', line 58 def path_from_cd_path(dest) return if !(dest && cd_path_exists?) || special_case_path?(dest) cd_path_env.split(File::PATH_SEPARATOR).each do |path| return path if File.directory?(path) && path.split(File::SEPARATOR).last == dest end nil end |
#process(cmd) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/pry/commands/shell_command.rb', line 21 def process(cmd) if cmd =~ /^cd\s*(.*)/i process_cd parse_destination(Regexp.last_match(1)) else pass_block(cmd) if command_block command_block.call `#{cmd}` else pry_instance.config.system.call(output, cmd, pry_instance) end end end |
#process_cd(dest) ⇒ Object (private)
43 44 45 46 47 48 |
# File 'lib/pry/commands/shell_command.rb', line 43 def process_cd(dest) state.old_pwd = Dir.pwd Dir.chdir(File.(path_from_cd_path(dest) || dest)) rescue Errno::ENOENT raise CommandError, "No such directory: #{dest}" end |
#special_case_path?(dest) ⇒ Boolean (private)
68 69 70 |
# File 'lib/pry/commands/shell_command.rb', line 68 def special_case_path?(dest) ['.', '..', '-'].include?(dest) || dest =~ /\A[#{File::PATH_SEPARATOR}~]/ end |