#!/bin/bash
#
# This script runs jflex generating java code based on .jflex files.
# jflex tool itself resides in external/jflex. At the time of this writing
# it's not a part of jflex manifest and needs to be checked out manually.
#
# The script can be run from anywhere (it does not depend on current working directory)
# Set $JFLEX to overwrite jflex location, if desired
#
# After making any changes to the lexer, the update source file(s) generated by
# this script should be checked in to the repository

# Update when switching to a different version of jflex
EXPECTED_JFLEX_VERSION="1.6.1"
EXPECTED_JFLEX_VERSION_STR="This is JFlex $EXPECTED_JFLEX_VERSION"

# Get the location of this script used to find locations of other things in the tree.
SCRIPT_DIR=`dirname $0`
echo $SCRIPT_DIR

TOP_PATH="$SCRIPT_DIR/../../.."

# Run the java jar when 'JFLEX' is not in the environment
function exec_jar_jflex {
  java -jar "$jflex_location" "$@"
}

# All specifying jflex but fallback to default location
if [ -z  "$JFLEX" ]
then
  # Best effort to find it inside of the gradle cache
  jflex_jar_name="jflex-${EXPECTED_JFLEX_VERSION}.jar"
  jflex_location="$(find $HOME/.gradle/caches/artifacts-* -name "$jflex_jar_name" | head -n 1)"
  if [ -z $jflex_location ]; then
    echo "ERROR: Could not find jflex location, consider setting the \$JFLEX variable to point to it"
    exit 1
  fi
  JFLEX=exec_jar_jflex
fi

JFLEX_VERSION=`"$JFLEX" --version`

if [ "$JFLEX_VERSION" = "" ]
then
  echo "ERROR: Failed to execute jflex at \"$JFLEX\""
  exit 1
fi

if [ "$EXPECTED_JFLEX_VERSION_STR" != "$JFLEX_VERSION" ]
then
  echo "ERROR: Wrong version of jflex: \"$JFLEX_VERSION\". Expected: \"$EXPECTED_JFLEX_VERSION_STR\""
  exit 1
fi

JAVA_FILE=$SCRIPT_DIR/src/main/java/org/jf/smali/smaliFlexLexer.java
rm -f "$JAVA_FILE"

"$JFLEX" --nobak -d "$SCRIPT_DIR/src/main/java/org/jf/smali" "$SCRIPT_DIR/src/main/jflex/smaliLexer.jflex"

# delete trailing space from end of each line to make gerrit happy
sed 's/[ ]*$//' "$JAVA_FILE" > "$JAVA_FILE.tmp"
rm "$JAVA_FILE"
mv "$JAVA_FILE.tmp" "$JAVA_FILE"
