#!/bin/bash
local PACKAGE_NAME=lmctfy
local PACKAGE_VERSION=${1-0.1.0}
local PACKAGE_SOURCE=https://github.com/google/lmctfy/archive/$PACKAGE_VERSION.tar.gz

# dependency versions
local PROTOBUF_VERSION=2.5.0
local GFLAGS_VERSION=2.0
local RE2_VERSION=20130802

# don't run the install process if we are in use mode
if [ ! $BASHINATE_USE ]; then
  # if we don't have the latest node version, then install
  log "Checking $PACKAGE_NAME version $PACKAGE_VERSION installed";
  if [ ! -e $BASHINATE_INSTALL/$PACKAGE_NAME/$PACKAGE_VERSION ]; then

    # ensure we have protobuf installe
    log "Installing lmctfy dependencies"
    require protobuf $PROTOBUF_VERSION
    require gflags $GFLAGS_VERSION
    require re2 $RE2_VERSION

    # add protoc to the path
    export PATH=$PATH:$BASHINATE_INSTALL/protobuf/$PROTOBUF_VERSION/bin

    # update the pkg config environment variable
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$BASHINATE_INSTALL/protobuf/$PROTOBUF_VERSION/lib/pkgconfig

    # update the LD_LIBRARY_PATH
    export LIBRARY_PATH=$LIBRARY_PATH:$BASHINATE_INSTALL/protobuf/$PROTOBUF_VERSION/lib
    export LIBRARY_PATH=$LIBRARY_PATH:$BASHINATE_INSTALL/gflags/$GFLAGS_VERSION/lib
    export LIBRARY_PATH=$LIBRARY_PATH:$BASHINATE_INSTALL/re2/$RE2_VERSION

    log "Installing $PACKAGE_NAME version $PACKAGE_VERSION"
    fetchSource $PACKAGE_SOURCE
    cd $BASHINATE_SOURCE/$PACKAGE_NAME-$PACKAGE_VERSION

    # create links to other required source files
    ln -sf $BASHINATE_INSTALL/gflags/$GFLAGS_VERSION/include/gflags $BASHINATE_SOURCE/lmctfy-$PACKAGE_VERSION/include
    ln -sf $BASHINATE_SOURCE/re2/re2 $BASHINATE_SOURCE/lmctfy-$PACKAGE_VERSION/include

    # make it
    make -j 4 lmctfy && \
    mkdir -p $BASHINATE_INSTALL/$PACKAGE_NAME/$PACKAGE_VERSION

    if [ -d $BASHINATE_INSTALL/$PACKAGE_NAME/$PACKAGE_VERSION ]; then
      cp $BASHINATE_SOURCE/$PACKAGE_NAME-$PACKAGE_VERSION/bin/lmctfy/cli/lmctfy $BASHINATE_INSTALL/$PACKAGE_NAME/$PACKAGE_VERSION/lmctfy-cli

      read -r -d '' LMCTFY <<'EOF'
      #!/bin/bash
      DIR=`dirname $(readlink -f $0)`
      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DIR/../../gflags/2.0/lib:$DIR/../../re2/20130802:$DIR/../../protobuf/2.5.0/lib
      $DIR/lmctfy-cli $@
EOF

      echo "$LMCTFY" > $BASHINATE_INSTALL/$PACKAGE_NAME/$PACKAGE_VERSION/lmctfy
      chmod a+x $BASHINATE_INSTALL/$PACKAGE_NAME/$PACKAGE_VERSION/lmctfy
    fi
  fi
fi

linkBinaries $PACKAGE_NAME/$PACKAGE_VERSION $PACKAGE_NAME