homebrew-core/Formula/djl-serving.rb

45 lines
1.3 KiB
Ruby

class DjlServing < Formula
desc "This module contains an universal model serving implementation"
homepage "https://github.com/deepjavalibrary/djl-serving"
url "https://publish.djl.ai/djl-serving/serving-0.17.0.tar"
sha256 "f19fa3635bbbf5862e53b597f51da6df2a532806a7a3013e92709e4ebc39714f"
license "Apache-2.0"
bottle do
sha256 cellar: :any_skip_relocation, all: "f8777a12f9b4ed5482fe964277b2f5f21e4feebbc91373bfb8c1d8896b2b3915"
end
depends_on "openjdk"
def install
# Install files
rm_rf Dir["bin/*.bat"]
mv "bin/serving", "bin/djl-serving"
libexec.install Dir["*"]
env = { MODEL_SERVER_HOME: "${MODEL_SERVER_HOME:-#{var}}" }
env.merge!(Language::Java.overridable_java_home_env)
(bin/"djl-serving").write_env_script "#{libexec}/bin/djl-serving", env
end
service do
run [opt_bin/"djl-serving", "run"]
keep_alive true
end
test do
port = free_port
(testpath/"config.properties").write <<~EOS
inference_address=http://127.0.0.1:#{port}
management_address=http://127.0.0.1:#{port}
EOS
ENV["MODEL_SERVER_HOME"] = testpath
cp_r Dir["#{libexec}/*"], testpath
fork do
exec bin/"djl-serving -f config.properties"
end
sleep 30
cmd = "http://127.0.0.1:#{port}/ping"
assert_match "{}\n", shell_output("curl --fail #{cmd}")
end
end