diff --git a/Formula/chronograf.rb b/Formula/chronograf.rb new file mode 100644 index 0000000000..7de7665d5f --- /dev/null +++ b/Formula/chronograf.rb @@ -0,0 +1,82 @@ +require "language/node" + +class Chronograf < Formula + desc "Open source monitoring and visualization UI for the TICK stack." + homepage "https://docs.influxdata.com/chronograf/latest/" + url "https://github.com/influxdata/chronograf.git", + :tag => "1.3.0", + :revision => "99099e8a5c160f7fa436c1b8a4dedfa5fb6e0c2f" + + head "https://github.com/influxdata/chronograf.git" + + depends_on "go" => :build + depends_on "node" => :build + depends_on "yarn" => :build + depends_on "influxdb" => :recommended + depends_on "kapacitor" => :recommended + + def install + ENV["GOPATH"] = buildpath + ENV.prepend_create_path "PATH", buildpath/"bin" + chronograf_path = buildpath/"src/github.com/influxdata/chronograf" + chronograf_path.install buildpath.children + + cd chronograf_path do + system "make", "dep" + cd "ui" do + system "npm", "install", *Language::Node.std_npm_install_args(libexec) + system "npm", "run", "build" + touch ".jssrc" + end + system "make", ".bindata" + system "make", "chronograf" + bin.install "chronograf" + end + end + + plist_options :manual => "chronograf" + + def plist; <<-EOS.undent + + + + + KeepAlive + + SuccessfulExit + + + Label + #{plist_name} + ProgramArguments + + #{opt_bin}/chronograf + + RunAtLoad + + WorkingDirectory + #{var} + StandardErrorPath + #{var}/log/chronograf.log + StandardOutPath + #{var}/log/chronograf.log + + + EOS + end + + test do + begin + pid = fork do + exec "#{bin}/chronograf" + end + sleep 1 + output = shell_output("curl -s 0.0.0.0:8888/chronograf/v1/") + sleep 1 + assert_match %r{/chronograf/v1/layouts}, output + ensure + Process.kill("SIGINT", pid) + Process.wait(pid) + end + end +end