class Tile38 < Formula desc "In-memory geolocation data store, spatial index, and realtime geofence" homepage "https://tile38.com/" url "https://github.com/tidwall/tile38.git", :tag => "1.19.1", :revision => "644f65c7d9801b98e8f6c3c446f54e00e23f81d1" bottle do cellar :any_skip_relocation sha256 "7e0591e39543cdd60fd8d7c8272227e0c5650ea4d6af67e312c39812d6a7e469" => :catalina sha256 "1ecbbf44dbb2cd5275091fa8fde44420c79047a43320887ce83d1bc311323191" => :mojave sha256 "1a2ec065ec72f51a591fcfc41c0f09155c3aa35e6de08290e6994c73db3f4ca5" => :high_sierra end depends_on "go" => :build def datadir var/"tile38/data" end def install commit = Utils.popen_read("git rev-parse --short HEAD").chomp ldflags = %W[ -s -w -X github.com/tidwall/tile38/core.Version=#{version} -X github.com/tidwall/tile38/core.GitSHA=#{commit} ] system "go", "build", "-o", bin/"tile38-server", "-ldflags", ldflags.join(" "), "./cmd/tile38-server" system "go", "build", "-o", bin/"tile38-cli", "-ldflags", ldflags.join(" "), "./cmd/tile38-cli" end def post_install # Make sure the data directory exists datadir.mkpath end def caveats; <<~EOS To connect: tile38-cli EOS end plist_options :manual => "tile38-server -d #{HOMEBREW_PREFIX}/var/tile38/data" def plist; <<~EOS KeepAlive SuccessfulExit Label #{plist_name} ProgramArguments #{opt_bin}/tile38-server -d #{datadir} RunAtLoad WorkingDirectory #{var} StandardErrorPath #{var}/log/tile38.log StandardOutPath #{var}/log/tile38.log EOS end test do pid = fork do exec "#{bin}/tile38-server", "-q" end sleep 2 # remove `$408` in the first line output json_output = shell_output("#{bin}/tile38-cli server").lines[1] tile38_server = JSON.parse(json_output) assert_equal tile38_server["ok"], true ensure Process.kill("HUP", pid) end end