#!/usr/bin/env ruby # (C) John Mair (banisterfiend) # MIT license $0 = 'pry' begin require 'pry' rescue LoadError require 'rubygems' require 'pry' end opts = Slop.parse(:help => true, :multiple_switches => false) do banner %{Usage: pry [OPTIONS] Start a Pry session. See: `https://github.com/pry` for more information. Copyright (c) 2011 John Mair (banisterfiend) -- } on :e, :exec, "A line of code to execute in context before the session starts", true on "no-pager", "Disable pager for long output" do Pry.config.pager = false end on "no-history", "Disable history loading" do Pry.config.history.should_load = false end on "no-color", "Disable syntax highlighting for session" do Pry.color = false end on :f, "Suppress loading of ~/.pryrc" do # load ~/.pryrc, if not suppressed with -f option Pry.config.should_load_rc = false end on "no-plugins", "Suppress loading of plugins." do # suppress plugins if given --no-plugins optino Pry.config.plugins.enabled = false end on "installed-plugins", "List installed plugins." do puts "Installed Plugins:" puts "--" Pry.locate_plugins.each do |plugin| puts "#{plugin.name}".ljust(18) + plugin.spec.summary end exit end on "simple-prompt", "Enable simple prompt mode" do Pry.prompt = Pry::SIMPLE_PROMPT end on :r, :require, "`require` a Ruby script at startup", true do |file| Pry.config.requires << file end on :I, "Add a path to the $LOAD_PATH", true do |path| $LOAD_PATH << path end on :v, :version, "Display the Pry version" do puts "Pry version #{Pry::VERSION} on Ruby #{RUBY_VERSION}" exit end on(:c, :context, "Start the session in the specified context. Equivalent to `context.pry` in a session.", true, :default => "TOPLEVEL_BINDING" ) end # invoked via cli Pry.cli = true # create the actual context context = Pry.binding_for(eval(opts[:context])) if opts[:exec] exec_string = opts[:exec] + "\n" else exec_string = "" end # Start the session (running any code passed with -e, if there is any) Pry.start(context, :input => StringIO.new(exec_string), :input_stack => [Readline])