aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/zookeeper.rb
diff options
context:
space:
mode:
authorJiayong Ou2010-08-19 15:40:55 +0200
committerAdam Vandenberg2010-10-22 09:38:00 -0700
commit0b9cf36e2e5d12d082292333c98054a909fbdbf8 (patch)
tree1e7c67395b4ba6f4ef1eb672c3db714a20a8dedd /Library/Formula/zookeeper.rb
parent5dfeb3b482c18049b8dc4377f1f9403be339efc0 (diff)
downloadhomebrew-0b9cf36e2e5d12d082292333c98054a909fbdbf8.tar.bz2
New formula: zookeeper
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. Signed-off-by: Adam Vandenberg <flangy@gmail.com>
Diffstat (limited to 'Library/Formula/zookeeper.rb')
-rw-r--r--Library/Formula/zookeeper.rb69
1 files changed, 69 insertions, 0 deletions
diff --git a/Library/Formula/zookeeper.rb b/Library/Formula/zookeeper.rb
new file mode 100644
index 000000000..59cf0dd14
--- /dev/null
+++ b/Library/Formula/zookeeper.rb
@@ -0,0 +1,69 @@
+require 'formula'
+
+class Zookeeper <Formula
+ url 'http://mirror.switch.ch/mirror/apache/dist/hadoop/zookeeper/zookeeper-3.3.1/zookeeper-3.3.1.tar.gz'
+ homepage 'http://hadoop.apache.org/zookeeper'
+ md5 'bdcd73634e3f6623a025854f853c3d0d'
+
+ def shim_script target
+ <<-EOS.undent
+ #!/usr/bin/env bash
+ . "#{etc}/zookeeper/defaults"
+ cd #{libexec}/bin
+ ./#{target} $*
+ EOS
+ end
+
+ def default_zk_env
+ <<-EOS.undent
+ export ZOOCFGDIR="#{etc}/zookeeper"
+ EOS
+ end
+
+ def default_log4j_properties
+ <<-EOS.undent
+ log4j.rootCategory=WARN, zklog
+
+ log4j.appender.zklog = org.apache.log4j.FileAppender
+ log4j.appender.zklog.File = #{var}/log/zookeeper/zookeeper.log
+ log4j.appender.zklog.Append = true
+ log4j.appender.zklog.layout = org.apache.log4j.PatternLayout
+ log4j.appender.zklog.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
+ EOS
+ end
+
+ def install
+ # Remove windows executables
+ rm_f Dir["bin/*.cmd"]
+
+ # Install Java stuff
+ libexec.install %w(bin contrib lib)
+ libexec.install Dir['*.jar']
+
+ # Create neccessary directories
+ bin.mkpath
+ (etc+'zookeeper').mkpath
+ (var+'log/zookeeper').mkpath
+ (var+'run/zookeeper/data').mkpath
+
+ # Install shim scripts to bin
+ Dir["#{libexec}/bin/*.sh"].map { |p| Pathname.new p }.each { |path|
+ next if path == libexec+'bin/zkEnv.sh'
+ script_name = path.basename
+ bin_name = path.basename '.sh'
+ (bin+bin_name).write shim_script(script_name)
+ }
+
+ # Install default config files
+ defaults = etc+'zookeeper/defaults'
+ defaults.write(default_zk_env) unless defaults.exist?
+
+ log4j_properties = etc+'zookeeper/log4j.properties'
+ log4j_properties.write(default_log4j_properties) unless log4j_properties.exist?
+
+ unless (etc+'zookeeper/zoo.cfg').exist?
+ inreplace 'conf/zoo_sample.cfg', /^dataDir=.*/, "dataDir=#{var}/run/zookeeper/data"
+ (etc+'zookeeper').install 'conf/zoo_sample.cfg'
+ end
+ end
+end