mirror of
https://github.com/pry/pry.git
synced 2022-11-09 12:35:05 -05:00
added hist --save (no tests, but should be OK)
This commit is contained in:
parent
3da2c460a4
commit
4ecfdf7936
1 changed files with 35 additions and 3 deletions
|
@ -85,9 +85,10 @@ class Pry
|
||||||
end
|
end
|
||||||
|
|
||||||
command "hist", "Show and replay Readline history. Type `hist --help` for more info." do |*args|
|
command "hist", "Show and replay Readline history. Type `hist --help` for more info." do |*args|
|
||||||
Slop.parse(args) do |opt|
|
history = Readline::HISTORY.to_a
|
||||||
history = Readline::HISTORY.to_a
|
|
||||||
opt.banner "Usage: hist [--replay START..END] [--clear] [--grep PATTERN] [--head N] [--tail N] [--help]\n"
|
opts = Slop.parse!(args) do |opt|
|
||||||
|
opt.banner "Usage: hist [--replay START..END] [--clear] [--grep PATTERN] [--head N] [--tail N] [--help] [--save [START..END] file.txt]\n"
|
||||||
|
|
||||||
opt.on :g, :grep, 'A pattern to match against the history.', true do |pattern|
|
opt.on :g, :grep, 'A pattern to match against the history.', true do |pattern|
|
||||||
pattern = Regexp.new arg_string.split(/ /)[1]
|
pattern = Regexp.new arg_string.split(/ /)[1]
|
||||||
|
@ -154,6 +155,8 @@ class Pry
|
||||||
Pry.active_instance.input = StringIO.new(actions)
|
Pry.active_instance.input = StringIO.new(actions)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
opt.on "save", "Save history to a file. --save [start..end] output.txt. Pry commands are excluded from saved history.", true, :as => Range
|
||||||
|
|
||||||
opt.on :c, :clear, 'Clear the history', :unless => :grep do
|
opt.on :c, :clear, 'Clear the history', :unless => :grep do
|
||||||
Readline::HISTORY.shift until Readline::HISTORY.empty?
|
Readline::HISTORY.shift until Readline::HISTORY.empty?
|
||||||
output.puts 'History cleared.'
|
output.puts 'History cleared.'
|
||||||
|
@ -168,6 +171,35 @@ class Pry
|
||||||
stagger_output lines
|
stagger_output lines
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# FIXME: hack to save history (this must be refactored)
|
||||||
|
if opts["save"]
|
||||||
|
file_name = nil
|
||||||
|
hist_array = nil
|
||||||
|
|
||||||
|
case opts["save"]
|
||||||
|
when Range
|
||||||
|
hist_array = Array(history[opts["save"]])
|
||||||
|
next output.puts "Must provide a file name." if !args.first
|
||||||
|
file_name = File.expand_path(args.first)
|
||||||
|
when String
|
||||||
|
hist_array = history
|
||||||
|
file_name = File.expand_path(opts["save"])
|
||||||
|
end
|
||||||
|
|
||||||
|
output.puts "Saving history in #{file_name} ..."
|
||||||
|
# exclude pry commands
|
||||||
|
hist_array.reject! do |element|
|
||||||
|
command_processor.valid_command?(element)
|
||||||
|
end
|
||||||
|
|
||||||
|
File.open(file_name, 'w') do |f|
|
||||||
|
f.write hist_array.join("\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
output.puts "... history saved."
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue