class PuppetDebugger::InputResponders::Play

Constants

COMMAND_GROUP
COMMAND_WORDS
SUMMARY

Public Instance Methods

convert_to_text(url) click to toggle source
# File lib/plugins/puppet-debugger/input_responders/play.rb, line 30
def convert_to_text(url)
  require 'uri'
  url_data = URI(url)
  case url_data.host
  when /^gist\.github*/
    url = url += '.txt' unless url_data.path =~ /raw/
    url
  when /^github.com/
    url.gsub('blob', 'raw') if url_data.path =~ /blob/
  when /^gist.github.com/
    url = url += '.txt' unless url_data.path =~ /raw/
    url
  when /^gitlab.com/
    if url_data.path =~ /snippets/
      url += '/raw' unless url_data.path =~ /raw/
      url
    else
      url.gsub('blob', 'raw')
    end
  else
    url
  end
end
fetch_url_data(url) click to toggle source

opens the url and reads the data

# File lib/plugins/puppet-debugger/input_responders/play.rb, line 55
def fetch_url_data(url)
  URI.open(url).read # open(url).read
end
play_back(config = {}) click to toggle source
# File lib/plugins/puppet-debugger/input_responders/play.rb, line 18
def play_back(config = {})
  if config[:play]
    if config[:play] =~ /^http/
      play_back_url(config[:play])
    elsif File.exist? config[:play]
      play_back_string(File.read(config[:play]))
    else config[:play]
         debugger.out_buffer.puts "puppet-debugger can't play #{config[:play]}'"
    end
  end
end
play_back_string(str) click to toggle source

plays back the string to the output stream echos the input and the produced output

# File lib/plugins/puppet-debugger/input_responders/play.rb, line 71
def play_back_string(str)
  full_buffer = ''
  str.split("\n").each do |buf|
    begin
      full_buffer += buf
      # unless this is puppet code, otherwise skip repl keywords
      debugger.parser.parse_string(full_buffer) unless PuppetDebugger::InputResponders::Commands.command_list_regex.match(buf)
      debugger.out_buffer.write('>> ')
    rescue Puppet::ParseErrorWithIssue => e
      if debugger.multiline_input?(e)
        full_buffer += "\n"
        next
      end
    end
    debugger.out_buffer.puts(full_buffer)
    debugger.handle_input(full_buffer)
    full_buffer = ''
  end
end
play_back_url(url) click to toggle source
# File lib/plugins/puppet-debugger/input_responders/play.rb, line 59
def play_back_url(url)
  require 'open-uri'
  require 'net/http'
  converted_url = convert_to_text(url)
  str = fetch_url_data(converted_url)
  play_back_string(str)
rescue SocketError
  abort "puppet-debugger can't play `#{converted_url}'"
end
run(args = []) click to toggle source
# File lib/plugins/puppet-debugger/input_responders/play.rb, line 11
def run(args = [])
  config = {}
  config[:play] = args.first
  play_back(config)
  nil # we don't want to return anything
end