#!/bin/bash

# Error handling
set -e

# For styling/colorizing output
txtbld=$(tput bold)
txtblue=${txtbld}$(tput setaf 4)
txtred=${txtbld}$(tput setaf 1)
txtyellow=${txtbld}$(tput setaf 3)
txtwhite=${txtbld}$(tput setaf 7)

# Dependency check
function dependencycheck()
{
    numdependencies="$#"
    dependencies=("$@")
    missingdependencies=0

    for ((i = 0; i < numdependencies; i++)) ; do
        if ! command -v "${dependencies[$i]}" &> /dev/null
        then
            echo "${txtred}dependency not met: ${dependencies[$i]}${txtwhite}"
            missingdependencies=$((missingdependencies+1))
        fi
    done

    if [ $missingdependencies -gt 0 ] ; then
        echo "${txtred}Please install needed dependencies${txtwhite}"
        exit 1
    fi
}

dependencycheck python3 pip3 seoanalyze echo sed

# check number of arguments, if not 1, exit 1
if [ "$#" -ne 1 ]; then
    echo "${txtred}Improper Usage!"
    echo "${txtblue}Example: seo google.com${txtwhite}"
    exit 1
fi

echo "${txtblue}seoanalyzer analyzing https://${1}..."
# grabs the url before the .com or .org, etc
# does not work with multiple periods in url
url=$(echo "${1}" | sed 's/\..*$//')

finalreport="${url}".seo.report.html
# all the actual work being done...
seoanalyze https://"${1}" --output-format html > "${finalreport}"
echo "${txtyellow}seoanalyzer complete!${txtblue}"
echo "report file: ${finalreport}"

#if the user has a default browser,
# then prompt if they would like to view the report in the browser
if [ -n "${BROWSER}" ] ; then
    read -e -r -p "would you like to view it in $BROWSER?(y/n): ${txtyellow}" viewinbrowser
    if [[ $viewinbrowser == "y" || $viewinbrowser == "yes" ]]; then
        $BROWSER "${finalreport}"
    else
        exit 0
    fi
else
    exit 0
fi
