#!/usr/bin/bash

function show_help(){
    echo -e "$(basename $0) [-h] [-c] [-l] [-a] [-t <target|"target1 target2 ...">] [-o <outdir>]"
    echo -e "   -h help"
    echo -e "   -с clear cache directory"
    echo -e "   -l list all availible targets"
    echo -e "   -a get all targets"
    echo -e "   -t <target|"target1 target2 ..."> get target|targets"
    echo -e "   -o <dir> output dir"
}

if [ $# -lt 1 ]
then
    show_help
    exit 1
fi

ALL_TARGETS=$(vuln-list-update -h 2>&1 | grep "update target" | awk -F '(' '{print $2}' | tr -d [,\)]])
GET_ALL=""
CLEAR_CACHE=""
TARGETS=""

while getopts "dhpcalt:o:" opt; do
    case "$opt" in
    "d")
       set -x
    ;;
    "h")
        show_help
        exit 0
    ;;
    "a")
        GET_ALL="True"
    ;;
    "c")
        CLEAR_CACHE="True"
    ;;
    "l")
        echo "Available targets:"
        echo -e "\t${ALL_TARGETS}"
        exit 0
    ;;
    "t")
        TARGETS=$OPTARG
    ;;
    "o")
        OUT_DIR=$OPTARG
    ;;
    *)
        u=`basename $0`
        echo "$u: Unknown option: $1" >&2
        show_help
        exit 1
    ;;
    esac
done

if [[ -n ${CLEAR_CACHE} ]]
then
    echo "Clear cache"
    rm -rf ${HOME}/.cache/vuln-list-update/
fi

if [[ -n ${GET_ALL} ]]
then
    for ONE_TARGET in ${ALL_TARGETS}
    do
        vuln-list-update -target "${ONE_TARGET}"
    done
elif [[ -n ${TARGETS} ]]
then
    for ONE_TARGET in ${TARGETS}
    do
        vuln-list-update -target "${ONE_TARGET}"
    done
fi

if [ -n "${OUT_DIR}" ]
then
    if [[ -n "${GET_ALL}" || -n "${TARGETS}" ]]
    then
        echo "Сopy to output directory ${OUT_DIR}"
        mkdir -pv ${OUT_DIR} 2>&1 >/dev/null
        cp -rf ${HOME}/.cache/vuln-list-update/* ${OUT_DIR}
    fi
fi
