Sha256: 99ea6b49b94a46d067b7c226eab2a649da63f3dc7c5100be76888f6225f33962
Contents?: true
Size: 1.15 KB
Versions: 4
Compression:
Stored size: 1.15 KB
Contents
require "readline" class Ppl::Command::Shell < Ppl::Application::Command name "shell" description "Interactive mode" attr_writer :format def options(parser, options) parser.banner = "usage: ppl shell" end def execute(input, output) begin shell(input, output) rescue SystemExit, Interrupt terminate_gracefully(input, output) false end end private def shell(input, output) welcome_user(input, output) while line = read_line(input) break if ["exit", false].include?(line) process_line(line) end terminate_gracefully(input, output) true end def welcome_user(input, output) if input.stdin.tty? output.line("ppl #{Ppl::Version} (type \"exit\" to leave)") end end def read_line(input) prompt = determine_prompt(input.stdin) line = Readline.readline(prompt, true) end def process_line(line) command = "#{$0} #{line}" Kernel.system(command) end def determine_prompt(io) if io.tty? "ppl> " else "" end end def terminate_gracefully(input, output) if input.stdin.tty? output.line("") end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
ppl-4.0.3 | lib/ppl/command/shell.rb |
ppl-4.0.2 | lib/ppl/command/shell.rb |
ppl-4.0.1 | lib/ppl/command/shell.rb |
ppl-4.0.0 | lib/ppl/command/shell.rb |