#! /bin/sh -e

if [ $# -ne 3 ]; then
    echo "Usage: $0 HUB PROJECT_NAME SAVEDIR"
    exit 1
fi

HUB=$1
PROJECT_NAME=$2
SAVEDIR=$3

PROJECT_SEARCH_CSV="${HUB}/project_search.csv?query=project%3D\"${PROJECT_NAME}\"&scope=all"
CURL_CMD=curl
RESULT_FNAME=overall_results.csv
SEARCH_FNAME=project_search_results.csv

rm -fr "$SAVEDIR"
mkdir "$SAVEDIR"
cd "$SAVEDIR"

echo "project id, most recent analysis id, notes" >${RESULT_FNAME}

fetch(){
   "$CURL_CMD" "$@"
}

fetch "${PROJECT_SEARCH_CSV}" -o "${SEARCH_FNAME}"
NUM_LINES=$(wc -l <"${SEARCH_FNAME}")

if [ "$NUM_LINES" -eq 1 ]; then
   # If no results, report and exit.
   echo "No projects with URL-encoded name '${PROJECT_NAME}' were found." 
   echo "This may indicate one or more of the following." 
   echo " - The project name was not specified correctly (remember to URL-encode)." 
   echo " - You do not have PROJECT_EXISTS permission for the specified project."
   exit 1
fi

if [ "$NUM_LINES" -gt 2 ]; then
   # If multiple results, report and keep going.
   echo "Found multiple projects with URL-encoded name '${PROJECT_NAME}'."
   echo "The script will attempt to report the most recent analysis of each."
fi

NO_ANALYSIS="No most recent analysis found. Either: a) the project has"
NO_ANALYSIS="${NO_ANALYSIS} no analyses or b) you do not have ANALYSIS_EXISTS"
NO_ANALYSIS="${NO_ANALYSIS} permission for the most recent analysis."

for LAST_COL in $(tail -n +2 <"${SEARCH_FNAME}" \
                  | sed -e 's/^.*,\([^,]*\)$/\1/')
do
    RESULT_TYPE=$(echo "${LAST_COL}" \
                  | sed -e 's/^.*\/\(.*\)\/[0-9]\+\.csv[^,]*$/\1/')
    RESULT_ID=$(echo "${LAST_COL}" \
                | sed -e 's/^.*\/\([0-9]\+\)\.csv[^,]*$/\1/')

    # If the last column of a result line is an analysis URL, it's the
    # most recent analysis.
    if test "${RESULT_TYPE}" = "analysis"
    then
        echo "-,${RESULT_ID},-" >>"${RESULT_FNAME}"
    else 
        # If the last column of a result line is a project URL, the
        # most recent analysis of that project cannot be reported.
        if test "${RESULT_TYPE}" = "project"
        then 
            echo "${RESULT_ID},-,${NO_ANALYSIS}" >>"${RESULT_FNAME}"
	# If it's neither a project URL nor an analysis URL, report a problem.
	else 
            echo "Unexpected result type ${RESULT_TYPE} in ${SEARCH_FNAME}."
        fi
    fi
done

echo "Finished: your results are in ${SAVEDIR}/${RESULT_FNAME}"
