Sha256: 600e0c43f4b662608a3f331ebd6891b1c343072f40ab559a373c3aa6d3af5ef7

Contents?: true

Size: 1.52 KB

Versions: 8

Compression:

Stored size: 1.52 KB

Contents

#!/usr/bin/env ruby
# frozen_string_literal: true

require 'packetgen'
require 'packetgen/config'
require 'packetgen/utils'

use_pry = false
begin
  require 'pry'
  use_pry = true
  puts 'use Pry!'
rescue LoadError
  require 'irb'
  require 'irb/completion'
end

class PgConsole
  include PacketGen
  include Utils

  def config
    PacketGen::Config.instance
  end

  PacketGen.singleton_methods.each do |m|
    define_method m, PacketGen.method(m).to_proc
  end

  Utils.singleton_methods.each do |m|
    define_method m, Utils.method(m).to_proc
  end

  def console_binding
    binding
  end
end

def start_message(use_pry)
  print "\npgconsole uses #{use_pry ? 'Pry' : 'IRB'}\n\n"
end

start_message use_pry

if use_pry
  Pry.config.prompt = [
    proc { |target_self, nest_level, pry|
      "#{pry.config.prompt_name}(#{Pry.view_clip(target_self)})#{":#{nest_level}" unless nest_level.zero?}> "
    },
    proc { |target_self, nest_level, pry|
      "#{pry.config.prompt_name}(#{Pry.view_clip(target_self)})#{":#{nest_level}" unless nest_level.zero?}* "
    }
  ]
  Pry.config.prompt_name = 'pg'
  PgConsole.new.console_binding.pry
else
  IRB.setup nil
  irb = IRB::Irb.new(IRB::WorkSpace.new(PgConsole.new.console_binding))
  IRB.conf[:MAIN_CONTEXT] = irb.context
  irb.context.auto_indent_mode = true
  irb.context.prompt_i = 'pg> '
  irb.context.prompt_s = 'pg* '
  irb.context.prompt_c = 'pg* '

  trap('SIGINT') do
    irb.signal_handle
  end

  begin
    catch(:IRB_EXIT) do
      irb.eval_input
    end
  ensure
    IRB.irb_at_exit
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
packetgen-4.1.0 bin/pgconsole
packetgen-4.0.0 bin/pgconsole
packetgen-3.3.3 bin/pgconsole
packetgen-3.3.2 bin/pgconsole
packetgen-3.3.1 bin/pgconsole
packetgen-3.3.0 bin/pgconsole
packetgen-3.2.2 bin/pgconsole
packetgen-3.2.1 bin/pgconsole