#!/bin/bash set -e # exit on error #set -x # log script actions # Check here for the latest version # http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.zanata%22%20AND%20a%3A%22zanata-cli%22 version=3.8.4 rev=ivy-1 name=zanata-cli-${version}-${rev} : ${ZANATA_CLI_VERSION:="$version"} : ${IVY_JAR:="/usr/share/java/ivy.jar"} usage() { cat < -I : This help -Irefresh : Refresh Zanata artifacts -Idebug : Enable java debugger EOF } # Parse Low-level options unset opt_refresh opt_debug for arg in "$@" do if [ "$arg" == "-Irefresh" ] then opt_refresh="true" shift 1 elif [ "$arg" == "-Idebug" ] then opt_debug="true" shift 1 elif [ "$arg" == "-I" ] then usage exit 0 else break fi done # Check ivy is present if [ ! -r $IVY_JAR ]; then echo "Please install Apache Ivy to $IVY_JAR." echo "With Fedora or EPEL 6, run this as root: yum install apache-ivy" echo "On OSX (with Homebrew): brew install ivy [and set IVY_JAR to point to ivy.jar]" exit 1 fi # Check Java is present if type -p java; then # found java executable in PATH JAVA_BIN=java elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then # found java executable in JAVA_HOME JAVA_BIN="$JAVA_HOME/bin/java" else echo "A Java runtime is required for zanata-cli" echo "With Fedora or EPEL 6/7, run this as root: yum install java-1.8.0-openjdk" exit 1 fi # Check Java is 1.8+ if [[ "$JAVA_BIN" ]]; then version=$("$JAVA_BIN" -version 2>&1 | awk -F '"' '/version/ {print $2}') if [[ "$version" < "1.8" ]]; then echo "Java version is lower than 1.8, which is required for zanata-cli" exit 1 fi fi # check if user are using SNAPSHOT version if [[ $ZANATA_CLI_VERSION =~ latest.*|.*-SNAPSHOT ]] && [[ $opt_refresh != 'true' ]]; then echo "[!] You are using a dynamic version (SNAPSHOT or latest). Use -Irefresh to make sure you are getting the newest from the repo" fi # Documentation for Ivy's command-line options are here: # http://ant.apache.org/ivy/history/latest-milestone/standalone.html # http://ant.apache.org/ivy/history/2.1.0/standalone.html # java -jar /usr/share/java/ivy.jar -? WORKDIR=$(mktemp -d -t zanata-cli.XXXXXX) function cleanup() { if [[ -d "$WORKDIR" ]] then rm -r "$WORKDIR" fi } trap cleanup EXIT IVYSETTINGS_XML="$WORKDIR/ivysettings.xml" # ivysettings.xml as a here document cat > $IVYSETTINGS_XML <<'EOF' EOF # override ivy resolvers IVY_SETTINGS="-settings $IVYSETTINGS_XML" IVY_XML="$WORKDIR/ivy.xml" # ivy.xml as a here document cat > $IVY_XML < EOF IVY_CONFIG="-ivy $IVY_XML" IVY_LOG=$WORKDIR/ivy.log # Other java options JAVA_OPTS="" # Enable Debugging if [ "$opt_debug" == "true" ]; then JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=y" fi # Clear Zanata artifacts if requested if [ "$opt_refresh" == "true" ]; then echo "Clearing cached Zanata artifacts..." rm -rf ~/.ivy2/cache/org.zanata fi # Resolve dependencies with ivy's normal logging # but only output to console in case of failure. # -refresh tells ivy to 'refresh dynamic resolved revisions' (eg SNAPSHOT deps) echo "$name: resolving dependencies with Ivy..." touch $IVY_LOG columns=80 while line=$(tail -n 1 $IVY_LOG 2>/dev/null); do printf "%-*s\r" $columns "$line" sleep 1 done & $JAVA_BIN \ -jar $IVY_JAR \ -cachepath $WORKDIR/classpath \ $IVY_CONFIG $IVY_SETTINGS >> $IVY_LOG || (echo "ERROR: dependency resolution failed. Ivy log follows:"; cat $IVY_LOG; rm -f $IVY_LOG; exit 1) rm -f $IVY_LOG wait printf "%-*s\r" $columns # Invoke ZanataClient $JAVA_BIN $JAVA_OPTS \ -Dapp.name="$0" \ -cp $(cat $WORKDIR/classpath) \ org.zanata.client.ZanataClient "$@" trap - EXIT cleanup exit 0