From 03c4b6982293c5be31d7eda89b6dcb8c1a7a8059 Mon Sep 17 00:00:00 2001 From: sigoden Date: Sun, 19 May 2024 22:43:49 +0800 Subject: feat: supports functions in bash/js/python/ruby (#6) --- cmd/cmd.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 cmd/cmd.rb (limited to 'cmd/cmd.rb') diff --git a/cmd/cmd.rb b/cmd/cmd.rb new file mode 100755 index 0000000..cb67f4d --- /dev/null +++ b/cmd/cmd.rb @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby + +require 'json' +require 'pathname' + +def load_module + if __FILE__.end_with?("cmd.rb") + func_name = ARGV[0] + else + func_name = Pathname.new(__FILE__).basename.to_s + end + + func_name += '.rb' unless func_name.end_with?('.rb') + func_path = File.expand_path("../rb/#{func_name}", __dir__) + + begin + return require_relative func_path + rescue LoadError + puts "Invalid ruby function: #{func_name}" + exit 1 + end +end + +if ENV["LLM_FUNCTION_DECLARATE"] + declarate = load_module.method(:declarate) + puts JSON.pretty_generate(declarate.call) +else + begin + data = JSON.parse(ENV["LLM_FUNCTION_DATA"]) + rescue JSON::ParserError + puts "Invalid LLM_FUNCTION_DATA" + exit 1 + end + execute = load_module.method(:execute) + execute.call(data) +end \ No newline at end of file -- cgit v1.2.3