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