refactor commands and arguments processing to allow spaces in paths

This commit is contained in:
Colin Surprenant 2014-04-29 17:48:46 -04:00
parent ea7a7a341b
commit fff8fae97b
2 changed files with 46 additions and 29 deletions

View file

@ -20,7 +20,7 @@ LS_HEAP_SIZE="${LS_HEAP_SIZE:=500m}"
unset CDPATH
basedir=$(cd `dirname $0`/..; pwd)
. ${basedir}/bin/logstash.lib.sh
. "${basedir}/bin/logstash.lib.sh"
setup
@ -30,13 +30,18 @@ export HOME SINCEDB_DIR
case $1 in
deps) install_deps ;;
env) env "$@" ;;
-*)
-*)
# is the first argument a flag? If so, assume 'agent'
program="$basedir/lib/logstash/runner.rb"
exec $RUBYCMD -I$RUBYLIB "$program" agent "$@"
LAUNCHARGS+=(-I"${RUBYLIB}")
LAUNCHARGS+=("${basedir}/lib/logstash/runner.rb")
LAUNCHARGS+=("agent")
LAUNCHARGS+=("$@")
exec "${LAUNCHCMD}" "${LAUNCHARGS[@]}"
;;
*)
program="$basedir/lib/logstash/runner.rb"
exec $RUBYCMD -I$RUBYLIB "$program" "$@"
LAUNCHARGS+=(-I"${RUBYLIB}")
LAUNCHARGS+=("${basedir}/lib/logstash/runner.rb")
LAUNCHARGS+=("$@")
exec "${LAUNCHCMD}" "${LAUNCHARGS[@]}"
;;
esac

View file

@ -1,16 +1,21 @@
basedir=$(cd `dirname $0`/..; pwd)
setup_ruby() {
export RUBYLIB="$basedir/lib"
export RUBYLIB="${basedir}/lib"
# Verify ruby works
if ! ruby -e 'puts "HURRAY"' 2> /dev/null | grep -q "HURRAY" ; then
echo "No ruby program found. Cannot start."
exit 1
fi
# set $RUBY and $RUBYVER
eval $(ruby -rrbconfig -e 'puts "RUBYVER=#{RbConfig::CONFIG["ruby_version"]}"; puts "RUBY=#{RUBY_ENGINE}"')
RUBYCMD="ruby"
export GEM_HOME="$basedir/vendor/bundle/${RUBY}/${RUBYVER}"
LAUNCHCMD="ruby"
LAUNCHARGS=()
export GEM_HOME="${basedir}/vendor/bundle/${RUBY}/${RUBYVER}"
export GEM_PATH=
}
@ -38,35 +43,42 @@ setup_java() {
export DRIP_INIT=
fi
JAVA_OPTS="$JAVA_OPTS -Xmx${LS_HEAP_SIZE}"
JAVA_OPTS="$JAVA_OPTS -XX:+UseParNewGC"
JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC"
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
JAVA_OPTS_ARGS=()
JAVA_OPTS_ARGS+=("-Xmx${LS_HEAP_SIZE}")
JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=75"
JAVA_OPTS="$JAVA_OPTS -XX:+UseCMSInitiatingOccupancyOnly"
JAVA_OPTS_ARGS+=("-XX:+UseParNewGC")
JAVA_OPTS_ARGS+=("-XX:+UseConcMarkSweepGC")
JAVA_OPTS_ARGS+=("-Djava.awt.headless=true")
JAVA_OPTS_ARGS+=("-XX:CMSInitiatingOccupancyFraction=75")
JAVA_OPTS_ARGS+=("-XX:+UseCMSInitiatingOccupancyOnly")
if [ ! -z "$LS_USE_GC_LOGGING" ] ; then
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCDetails"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCTimeStamps"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintClassHistogram"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintTenuringDistribution"
JAVA_OPTS="$JAVA_OPTS -XX:+PrintGCApplicationStoppedTime"
JAVA_OPTS="$JAVA_OPTS -Xloggc:./logstash-gc.log"
JAVA_OPTS_ARGS+=("-XX:+PrintGCDetails")
JAVA_OPTS_ARGS+=("-XX:+PrintGCTimeStamps")
JAVA_OPTS_ARGS+=("-XX:+PrintClassHistogram")
JAVA_OPTS_ARGS+=("-XX:+PrintTenuringDistribution")
JAVA_OPTS_ARGS+=("-XX:+PrintGCApplicationStoppedTime")
JAVA_OPTS_ARGS+=("-Xloggc:./logstash-gc.log")
echo "Writing garbage collection logs to ./logstash-gc.log"
fi
export JAVACMD
export JAVA_OPTS
export RUBYLIB="$basedir/lib"
export GEM_HOME="$basedir/vendor/bundle/jruby/1.9"
export GEM_PATH=
export JAVA_OPTS="${JAVA_OPTS_ARGS[@]}"
}
setup_vendored_jruby() {
RUBYVER=1.9
RUBY=jruby
RUBYCMD="$JAVACMD $JAVA_OPTS -jar $basedir/vendor/jar/jruby-complete-*.jar"
LAUNCHCMD="${JAVACMD}"
LAUNCHARGS=("${JAVA_OPTS_ARGS[@]}")
LAUNCHARGS+=("-jar")
LAUNCHARGS+=("${basedir}"/vendor/jar/jruby-complete-*.jar)
export RUBYLIB="${basedir}/lib"
export GEM_HOME="${basedir}/vendor/bundle/${RUBY}/${RUBYVER}"
export GEM_PATH=
}
setup() {
@ -80,9 +92,9 @@ setup() {
install_deps() {
if [ -f "$basedir/logstash.gemspec" ] ; then
program="$basedir/gembag.rb"
set -- "$basedir/logstash.gemspec"
exec $RUBYCMD "$basedir/gembag.rb" "$@"
LAUNCHARGS+=("${basedir}/gembag.rb")
LAUNCHARGS+=("${basedir}/logstash.gemspec")
exec "$LAUNCHCMD" "${LAUNCHARGS[@]}"
else
echo "Cannot install dependencies; missing logstash.gemspec. This 'deps' command only works from a logstash git clone."
fi