lib/pry/commands/change_prompt.rb
# frozen_string_literal: true
class Pry
class Command
class ChangePrompt < Pry::ClassCommand
match 'change-prompt'
group 'Input and Output'
description 'Change the current prompt.'
command_options argument_required: true
banner <<-BANNER
Usage: change-prompt [OPTIONS] [NAME]
Change the current prompt.
BANNER
def options(opt)
opt.on(:l, :list, 'List the available prompts')
end
def process(prompt)
if opts.present?(:l)
list_prompts
else
change_prompt(prompt)
end
end
private
def list_prompts
prompts = Pry::Prompt.all.map do |name, prompt|
"#{bold(name)}#{red(' (selected)') if pry_instance.prompt == prompt}\n" +
prompt.description
end
output.puts(prompts.join("\n" * 2))
end
def change_prompt(prompt)
if Pry::Prompt[prompt]
pry_instance.prompt = Pry::Prompt[prompt]
else
raise Pry::CommandError,
"'#{prompt}' isn't a known prompt. Run `change-prompt --list` " \
"to see the list of known prompts."
end
end
Pry::Commands.add_command(self)
end
end
end