#!/bin/bash -e
# -*- mode: sh; c-basic-offset: 4; tab-width: 8; indent-tabs-mode: nil -*-
# vi: set shiftwidth=4 tabstop=8 softtabstop=4 expandtab:
# :indentSize=4:tabSize=8:noTabs=true:
# vim: filetype=sh

# Script to collect essential SMRT Link log files for debugging.

function usage {
    cat <<EOF
Usage: archive_log_files.sh [TAR_FILE]

Creates an archive (.tar.gz) of key log files written by SMRT Link and WSO2.
EOF
}

if [ "$1" == "--help" ]; then
    usage
    exit 0
fi

g_progdir=$(dirname "$0");
g_progdir_abs=$(dirname "$(readlink -f "$0")");

# ---- global env

. "$g_progdir_abs/../../private/runtime-common/lib/globalenv.ish"


SMRT_ROOT="${g_progdir_abs}/../../../.."

TAR_FILE="$1"
if [ -z "$TAR_FILE" ]; then
    TIMESTAMP="`date +%Y%m%d%H%M`"
    TAR_FILE="smrtlink_logs_${TIMESTAMP}.tar.gz"
elif [ -f "$TAR_FILE" ]; then
    echo "ERROR: $TAR_FILE already exists, please move it or supply a different path"
    exit 1
elif [ "$TAR_FILE" != *.tar.gz ] && [ "$TAR_FILE" != *.tgz ]; then
    echo "WARNING: output file extension does not match file type (.tar.gz)"
fi

LOGS=""
SMRT_LOG_DIR="${SMRT_ROOT}/userdata/log/smrtlink-analysisservices-gui"
for LOG in "`find $SMRT_LOG_DIR -type f`"; do
    LOGS="$LOGS $LOG"
done
JAVA_LOG_DIR="${SMRT_ROOT}/current/bundles/smrtlink-analysisservices-gui/current/private/pacbio/smrtlink-analysisservices-gui"
for LOG in java.stderr java.stdout; do
    if [ -f "${JAVA_LOG_DIR}/$LOG" ]; then
        LOGS="$LOGS ${JAVA_LOG_DIR}/$LOG"
    fi
done

WSO2_LOG_DIR="${SMRT_ROOT}/current/bundles/smrtlink-analysisservices-gui/current/private/pacbio/smrtlink-analysisservices-gui/wso2am-2.0.0/repository/logs"
for LOG in "`find $WSO2_LOG_DIR -type f`"; do
    LOGS="$LOGS $LOG"
done

if [ -z "$LOGS" ]; then
    echo "ERROR: no log files found"
    exit 1
fi

echo "Creating archive..."
tar czvf $TAR_FILE $LOGS
echo "Wrote $TAR_FILE"
