class BashTryHook

Public Instance Methods

available_commands() click to toggle source
# File lib/try_hook.rb, line 78
def available_commands
  [enabled_commands, BashRunner::REQUIRED_COMMANDS].flatten
end
command_line(filename) click to toggle source
# File lib/try_hook.rb, line 23
def command_line(filename)
  ['runbash', available_commands.join(' '), filename]
end
compile_file_content(r) click to toggle source
# File lib/try_hook.rb, line 8
  def compile_file_content(r)
    set_custom_allowed_commands! r
    <<~bash
      (echo #{extra_separator}
      #{r.extra}
      echo #{cookie_separator}
      #{(r.cookie || []).join("\n")}
      echo #{query_separator}
      #{r.query}
      echo $?
      echo #{goal_separator}
      #{r.goal.with_indifferent_access[:query]}) 2>&1
    bash
  end
create_tempfile() click to toggle source
Calls superclass method
# File lib/try_hook.rb, line 68
def create_tempfile
  file = super
  %x{chmod o+r #{file.path}}
  file
end
enabled_commands() click to toggle source
# File lib/try_hook.rb, line 74
def enabled_commands
  (@custom_enabled_commands.presence || BashRunner::DEFAULT_ENABLED_COMMANDS) & BashRunner::ALLOWED_COMMANDS
end
extra_separator() click to toggle source
# File lib/try_hook.rb, line 27
def extra_separator
   '!!!MUMUKI-EXTRA-START!!!'
end
goal_separator() click to toggle source
# File lib/try_hook.rb, line 39
def goal_separator
  '!!!MUMUKI-GOAL-START!!!'
end
query_separator() click to toggle source
# File lib/try_hook.rb, line 35
def query_separator
  '!!!MUMUKI-QUERY-START!!!'
end
set_custom_allowed_commands!(r) click to toggle source
# File lib/try_hook.rb, line 82
def set_custom_allowed_commands!(r)
  @custom_enabled_commands = r.settings.try { |settings| settings['enabled_commands'] }
end
tempfile_extension() click to toggle source
# File lib/try_hook.rb, line 4
def tempfile_extension
  '.sh'
end
to_query_result(query_output) click to toggle source
# File lib/try_hook.rb, line 60
def to_query_result(query_output)
  return {result: "<nothing>", status: :failed} if query_output.nil?

  result, _, status = query_output.rpartition("\n")
  status = status == '0' ? :passed : :failed
  {result: result, status: status}
end
to_structured_results(_file, result, status) click to toggle source
# File lib/try_hook.rb, line 43
  def to_structured_results(_file, result, status)
    /#{extra_separator}
?(.*)
#{cookie_separator}
?(.*)
#{query_separator}
?(.*)
#{goal_separator}
?(.*)
/m =~ result
    {
      query: to_query_result($3),
      goal: $4,
      status: status
    }
  end