class CouchdbLucene < Formula desc "Full-text search of CouchDB documents using Lucene" homepage "https://github.com/rnewson/couchdb-lucene" url "https://github.com/rnewson/couchdb-lucene/archive/v1.1.0.tar.gz" sha256 "854ea7410e542a81a458d0b7a55c6ff7dc40d02e79221928059556292f001087" bottle do cellar :any_skip_relocation sha256 "4fb08743c0503a767088a1f8b9161be07047019de908a8f30813bd25f3a6d8d9" => :sierra sha256 "56bfe9e52b98c06711412eabf4154b6d6f0347938207924715c33cdcf87a6823" => :el_capitan sha256 "e0051826e2cca177c53f5433bd47f28f870d3c1d998dc33f92cbb8032119bd2d" => :yosemite sha256 "a92d0b0c097bac1da9f9625e13eea8121bb5b8d9b81ee3d059e71b9e55d11bd7" => :mavericks end depends_on "couchdb" depends_on "maven" => :build depends_on :java def install ENV.java_cache system "mvn" system "tar", "-xzf", "target/couchdb-lucene-#{version}-dist.tar.gz", "--strip", "1" prefix.install_metafiles rm_rf Dir["bin/*.bat"] libexec.install Dir["*"] Dir.glob("#{libexec}/bin/*") do |path| bin_name = File.basename(path) cmd = "cl_#{bin_name}" (bin/cmd).write shim_script(bin_name) (libexec/"clbin").install_symlink bin/cmd => bin_name end ini_path.write(ini_file) unless ini_path.exist? end def shim_script(target); <<-EOS.undent #!/bin/bash export CL_BASEDIR=#{libexec}/bin exec "$CL_BASEDIR/#{target}" "$@" EOS end def ini_path etc/"couchdb/local.d/couchdb-lucene.ini" end def ini_file; <<-EOS.undent [httpd_global_handlers] _fti = {couch_httpd_proxy, handle_proxy_req, <<"http://127.0.0.1:5985">>} EOS end def caveats; <<-EOS.undent All commands have been installed with the prefix 'cl_'. If you really need to use these commands with their normal names, you can add a "clbin" directory to your PATH from your bashrc like: PATH="#{opt_libexec}/clbin:$PATH" EOS end plist_options :manual => "#{HOMEBREW_PREFIX}/opt/couchdb-lucene/bin/cl_run" def plist; <<-EOS.undent Label #{plist_name} EnvironmentVariables HOME ~ ProgramArguments #{opt_bin}/cl_run StandardOutPath /dev/null StandardErrorPath /dev/null RunAtLoad KeepAlive EOS end test do # This seems to be the easiest way to make the test play nicely in our # sandbox. If it works here, it'll work in the normal location though. cp_r Dir[opt_prefix/"*"], testpath inreplace "bin/cl_run", "CL_BASEDIR=#{libexec}/bin", "CL_BASEDIR=#{testpath}/libexec/bin" io = IO.popen("#{testpath}/bin/cl_run") sleep 2 Process.kill("SIGINT", io.pid) Process.wait(io.pid) io.read !~ /Exception/ end end