class Frpc < Formula desc "Client app of fast reverse proxy to expose a local server to the internet" homepage "https://github.com/fatedier/frp" url "https://github.com/fatedier/frp.git", :tag => "v0.31.1", :revision => "f480160e2d22b9bbca2590660b50d69a1c5059bc" bottle do cellar :any_skip_relocation sha256 "036b6ea1d00ad8e45cfd2d9d6525914e2c40915e2284c0fa6d4c6fdae268af02" => :catalina sha256 "e486f4b207bf92e38664df25b309c039afc5261f16a829a59fe358a8c3b50368" => :mojave sha256 "2059bd628d7513c19856108f336cc7cc2e133b96292ae92d0e99192f0a188eca" => :high_sierra end depends_on "go" => :build def install ENV["GOPATH"] = buildpath contents = Dir["{*,.git,.gitignore}"] (buildpath/"src/github.com/fatedier/frp").install contents (buildpath/"bin").mkpath (etc/"frp").mkpath cd "src/github.com/fatedier/frp" do system "make", "frpc" bin.install "bin/frpc" etc.install "conf/frpc.ini" => "frp/frpc.ini" etc.install "conf/frpc_full.ini" => "frp/frpc_full.ini" prefix.install_metafiles end end plist_options :manual => "frpc -c #{HOMEBREW_PREFIX}/etc/frp/frpc.ini" def plist; <<~EOS Label #{plist_name} KeepAlive ProgramArguments #{opt_bin}/frpc -c #{etc}/frp/frpc.ini StandardErrorPath #{var}/log/frpc.log StandardOutPath #{var}/log/frpc.log EOS end test do system bin/"frpc", "-v" assert_match "Commands", shell_output("#{bin}/frpc help") assert_match "local_port", shell_output("#{bin}/frpc http", 1) assert_match "local_port", shell_output("#{bin}/frpc https", 1) assert_match "local_port", shell_output("#{bin}/frpc stcp", 1) assert_match "local_port", shell_output("#{bin}/frpc tcp", 1) assert_match "local_port", shell_output("#{bin}/frpc udp", 1) assert_match "local_port", shell_output("#{bin}/frpc xtcp", 1) assert_match "admin_port", shell_output("#{bin}/frpc status -c #{etc}/frp/frpc.ini", 1) assert_match "admin_port", shell_output("#{bin}/frpc reload -c #{etc}/frp/frpc.ini", 1) end end