#!/bin/bash

set -x

# check env
export EXTRACT_SYMS_PATH=${EXTRACT_SYMS_PATH-$RDK_PROJECT_ROOT_PATH/build/packager_scripts}

# # for test purposes, should be commented out before commit
# test -z $RDK_SYMBOLS_PATH && export RDK_SYMBOLS_PATH=$RDK_PROJECT_ROOT_PATH/symbols && mkdir -p $RDK_SYMBOLS_PATH

# defaults
CHECK_BREAKPAD_EXISTS="no"
DEBUGFILENAME=""
PROJECTPATH=""

# declare patterns for files to be processed
EXTRACT_PATTERNS=(
    "/lib.*Concurrent"
    "/lib.*Core"
    "/lib.*Declarative"
    "/lib.*Gui"
    "/lib.*Multimedia"
    "/lib.*Network"
    "/lib.*OpenGL"
    "/lib.*Qml"
    "/lib.*Quick"
    "/lib.*Script"
    "/lib.*Sql"
    "/lib.*WebKit"
    "/lib.*WebRTC"
    "/lib.*WebSockets"
    "/lib.*WebEngine"
    "/lib.*Widgets"
    "/libskypewrapper"
    "/libskype_pcmhost"
    "/libskype_videohost"
    "/libintelce"
    "/libqeglfs"
    "/librdk_device"
    "/libservicemanager"
    "libsec_.*so"
    "Receiver"
    "socprovisioning"
)

# parse long options
TEMP=$(getopt -o e --long breakpad-exists -n "$0" -- "$@")
test $? != 0 && { echo "getopt failed. terminating..." >&2; exit 1; }
eval set -- "$TEMP"

while true ; do
    case "$1" in
        -e|--breakpad-exists)
            CHECK_BREAKPAD_EXISTS="yes"
            shift
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error!" >&2
            exit 1
            ;;
    esac
done

if [ "$CHECK_BREAKPAD_EXISTS" = "yes" ]; then
    test -f $EXTRACT_SYMS_PATH/extractSymbols.sh && exit 0 || exit 1
fi

if [ $# -gt 2 ]; then
    echo "too many arguments" >&2
    exit 1
fi

DEBUGFILENAME=$1
PROJECTPATH=$2

for pattern in "${EXTRACT_PATTERNS[@]}"; do
    if [[ "${DEBUGFILENAME}" =~ .*${pattern}.* ]]; then
        sh ${EXTRACT_SYMS_PATH}/extractSymbols.sh -e "${DEBUGFILENAME}" 2>&1
        exit $?
    fi
done

echo "Skiped $DEBUGFILENAME"
