module Pry::VTermAliases

Constants

VERSION

Public Class Methods

aliases() click to toggle source
# File lib/pry-vterm_aliases.rb, line 29
def aliases
  @aliases ||= if shell.nil? || shell.empty?
    then {}
    else find_aliases
  end
end
create_alias(als, desc = nil) click to toggle source
# File lib/pry-vterm_aliases.rb, line 16
def create_alias(als, desc = nil)
  Pry::Commands.create_command(cmd_regexp(als), listing: ".#{als}") do
    description "alias to: #{Pry::Helpers::Text.bold(desc)}." if desc
    group "Terminal Aliases"

    def process(cmd, extra)
      Pry::VTermAliases.run_alias(
        cmd, extra, output
      )
    end
  end
end
create_aliases() click to toggle source
# File lib/pry-vterm_aliases.rb, line 8
def create_aliases
  aliases.each do |a, c|
    create_alias(
      a, c
    )
  end
end
process(cmd, extra) click to toggle source
# File lib/pry-vterm_aliases.rb, line 21
def process(cmd, extra)
  Pry::VTermAliases.run_alias(
    cmd, extra, output
  )
end
run_alias(cmd, extra, output) click to toggle source
# File lib/pry-vterm_aliases.rb, line 40
def run_alias(cmd, extra, output)
  raise ArgumentError, "unknown alias" unless (cmd = aliases[cmd])
  output.puts(`#{cmd}#{" " + extra if extra}`)
  $?.success?
end
shell() click to toggle source
# File lib/pry-vterm_aliases.rb, line 36
def shell
  @shell ||= ENV["SHELL"].split("/").last
end

Private Class Methods

cmd_regexp(str) click to toggle source
# File lib/pry-vterm_aliases.rb, line 52
def cmd_regexp(str)
  /\A\.(?:(#{Regexp.escape(str)})(?:\Z|\s+(.*)))/
end
find_aliases() click to toggle source
# File lib/pry-vterm_aliases.rb, line 57
def find_aliases
  `#{shell} -ic 'alias'`.split(/\n/).inject({}) do |h, a|
    if a =~ /\Aalias\s+/
      a = a.sub(/\Aalias\s/, "").split("=")
      unless a.first =~ /\s/
        strip_wrapping_quotes(a.shift).tap do |k|
          h.update(
            k => Shellwords.shellwords(a.join("=")).join
          )
        end
      end
    end

    h
  end
end
strip_wrapping_quotes(str) click to toggle source
# File lib/pry-vterm_aliases.rb, line 47
def strip_wrapping_quotes(str)
  str =~ /\A'(.*)'\Z/ ? $1 : str
end