#!/bin/bash

# Copyleft - helder.correia@fe.up.pt

# INTRODUÇÃO:
# Gosto de programar porque consigo automatizar muitas tarefas aborrecidas.
# Numa pausa de estudo decidi fazer um pequeno script para retirar as
# passwords dos acetatos de fem e juntar tudo num unico zip normal.
# Tudo começou com umas 15 linhas de código mas depois a vontade de
# estudar era muita e pus-me a fazer um script portavel para que todos
# possam usar (",)

# Os textos estão em ingles porque é um hábito que tenho a programar
# Muitos reclamam por não ser a minha lingua.
# É uma preferência minha. Se quiseres traduzir estás à vontade :p

# Não te esqueças de substituir a variavel $publish_dir pelo directorio
# onde queres que fique o ficheiro final com os pdfs todos
# Ex: publish_dir="./" mete o ficheiro final no directório actual
# Não aceita links relativos

script_name="${0##*/}"
temp_dir="fem_temp"
final_file="acetatos_fem.zip"
publish_dir="./"
parent_dir="$PWD/"
password="fem@feup2004"
prompt_usr=""

# Limpa os ficheiros criados pelo script
cleanmess() {
        echo "=> Starting cleaning process..."

        if [ "${PWD##*/}" = "$temp_dir" ]; then
                echo "=> Current dir is ${PWD##*/}"
        else
                echo "=> Wrong dir! Must be $temp_dir..."
		echo "=> Please use $script_name -c in parent dir of $script_name"
                exit 0
        fi

        rm -f *

        echo "=> Files cleaned"
        echo "=> Leaving directory $temp_dir..."
        cd ..
        rmdir -p $temp_dir

        echo "=> $temp_dir removed"
        echo "Done :)"
        exit 0
}

# Limpa tudo quando se prime CTRL+C
cleanint() {

        echo "=> Interrupting script ..."
        echo "=> Current dir is ${PWD##*/}"
        echo "=> Start cleaning process? (y/n)"
        read prompt_usr

        case "$prompt_usr" in
                y | Y ) cleanmess;;
                n | N ) exit 0;;
                *     ) echo "=> Command not recognized! Please use $script_name -c in parent dir of $script_name";;
        esac
}

echo
echo "          $script_name - Extrai os acetatos das aulas de fem"
echo "          ATENÇAO: São precisos 9 MB livres na conta do linux para poder sacar os pdfs do site"
echo "          por Helder Correia - helder.correia@fe.up.pt"
echo
echo "          Sintaxe: $scipt_name [-c]"
echo "               -c  Limpa a merda que fizeste :p"
echo
echo "          Prime qualquer tecla para continuar..."
read prompt_user

# Começa a testar argumentos
if [ "$1" = "-c" ]; then
        if [ -d "$temp_dir" ]; then
                cd $temp_dir
                cleanmess
        else
                echo "=> There is nothing to clean"
                exit 0
        fi
fi

# Verificar se o directório escolhido existe
if [ -d "$publish_dir" ]; then
        :
else
        echo "=> Error: dir '$publish_dir' does not exist"
        echo "=> Do you want to create it? (y/n)"
        echo "=> [If you choose 'n', I will publish the final file in the home directory]"
        read prompt_usr

        case "$prompt_usr" in
                y | Y ) mkdir -p $publish_dir;;
                n | N ) publish_dir="$parent_dir";;
                * ) echo "=> '$prompt_usr' not recognized! Assuming answer is 'n'..."
                    publish_dir="$parent_dir";;
        esac
fi

# Elimina o ficheiro final se existir antes de começar a fazer downloads
if [ -e "$publish_dir$final_file" ]; then
       
	echo "=> Warning: '$final_file' already found in '$publish_dir'"
	echo "=> Proceed? (y/n) If 'y' I'll remove the existing one..."
	read prompt_usr

	case "$prompt_usr" in
		y | Y ) ;;
		n | N ) exit 0;;
		*     ) echo "=> '$prompt_usr' not recognized!";;
	esac
	
	echo "=> Removing file..." 
	rm -f $publish_dir$final_file
fi

echo "=> Making directory $temp_dir"
mkdir $temp_dir

echo "=> Entering $temp_dir"
cd $temp_dir

trap 'cleanint' INT

echo "=> Retrieving url list file..."
wget -nc http://paginas.fe.up.pt/~fsal/index.html

echo "=> Downloading the files..."
wget -F -i index.html

echo "=> Extracting the pdfs..."
for acetato in *.zip
do
        unzip -o -P $password $acetato
        rm $acetato
done

echo "=> Making zip file with the pdfs..."
for pdfile in *.pdf
do
        zip -g ${final_file%.zip} $pdfile
        rm -f $pdfile
done

echo "=> Publishing file..."
if [ "$publish_dir" = "./" ] || [ "$publish_dir" = "$PWD" ]; then
	publish_dir="$parent_dir"
fi

mv $final_file $publish_dir

if [ -e "$publish_dir$final_file" ]; then
        echo "=> Everything looking good :)"
else
        echo "=> Something went terribly wrong! Final file was not published! Check the output."
        exit 0
fi

cleanmess

