homebrew-core/Formula/consul.rb

107 lines
2.9 KiB
Ruby

class Consul < Formula
desc "Tool for service discovery, monitoring and configuration"
homepage "https://www.consul.io"
url "https://github.com/hashicorp/consul.git",
tag: "v1.8.6",
revision: "2fa535b58c91d34a55a25e4cc92f6d9855c3c8dd"
license "MPL-2.0"
head "https://github.com/hashicorp/consul.git",
shallow: false
livecheck do
url :head
regex(/^v?(\d+(?:\.\d+)+)$/i)
end
bottle do
cellar :any_skip_relocation
sha256 "ece04d1d6b18dd36ddfaaca7b5e110da2d1e1633e1716d8a02ca4b35859153ac" => :big_sur
sha256 "023a27ef0bf0df270c767db909a2a74ee1fcd2658f4f04640963c48bff993fc4" => :catalina
sha256 "b050028671d0c6c0480b82615afc46acbde76c091fdf879276f64591e10c181f" => :mojave
end
depends_on "go" => :build
depends_on "gox" => :build
uses_from_macos "zip" => :build
def install
ENV["XC_OS"] = "darwin"
ENV["XC_ARCH"] = "amd64"
ENV["GOPATH"] = buildpath
contents = Dir["{*,.git,.gitignore}"]
(buildpath/"src/github.com/hashicorp/consul").install contents
(buildpath/"bin").mkpath
cd "src/github.com/hashicorp/consul" do
system "make"
bin.install "bin/consul"
prefix.install_metafiles
end
end
plist_options manual: "consul agent -dev -bind 127.0.0.1"
def plist
<<~EOS
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<false/>
</dict>
<key>Label</key>
<string>#{plist_name}</string>
<key>ProgramArguments</key>
<array>
<string>#{opt_bin}/consul</string>
<string>agent</string>
<string>-dev</string>
<string>-bind</string>
<string>127.0.0.1</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>#{var}</string>
<key>StandardErrorPath</key>
<string>#{var}/log/consul.log</string>
<key>StandardOutPath</key>
<string>#{var}/log/consul.log</string>
</dict>
</plist>
EOS
end
test do
http_port = free_port
fork do
# most ports must be free, but are irrelevant to this test
system(
"#{bin}/consul",
"agent",
"-dev",
"-bind", "127.0.0.1",
"-dns-port", "-1",
"-grpc-port", "-1",
"-http-port", http_port,
"-serf-lan-port", free_port,
"-serf-wan-port", free_port,
"-server-port", free_port
)
end
# wait for startup
sleep 3
k = "brew-formula-test"
v = "value"
system "#{bin}/consul", "kv", "put", "-http-addr", "127.0.0.1:#{http_port}", k, v
assert_equal v, shell_output("#{bin}/consul kv get -http-addr 127.0.0.1:#{http_port} #{k}").chomp
end
end