#!/bin/bash

#Variáveis do script
dir_riso=/usr/riso
dir_img=$dir_riso/imagens
img_win=$dir_img/windows.img
img_lin=$dir_img/linux.tar
img_rec=$dir_img/rec.tar
tor_win=$img_win.torrent
tor_lin=$img_lin.torrent
tab_part=$dir_img/tab_part
riso_conf=$dir_riso/riso.conf
riso_part=$dir_riso/riso.part
arq_log=$dir_riso/riso.log

#Função de Log
log(){
    [ -e $arq_log ] || touch $arq_log
    echo `date +"%F %H:%M:%S"` "RISO: $*" >> $arq_log
}

#Carrega variaveis disponibilizadas pelo avahi para variáveis do sistema.
carrega_variaveis() {

    avahi_saida=`avahi-browse -rtp _RISO._tcp | grep '='`
    servidor=`cut -d ';' -f8 <<< ${avahi_saida}` #ip do servidor.
    if [ -z $servidor ]; then
        dialog \
        --title 'Atencao' \
        --ok-label 'OK' \
        --msgbox 'Não existe nenhum servidor RISOS ativo na rede.\nVerifique a conexão e tente novamente.' \
        0 0
	    log "ERRO: Servidor não encontrado na rede."
        exit 1
    fi
    partwindows=`(cut -d ';' -f10 | cut -d '"' -f2 | cut -d '=' -f2) <<< ${avahi_saida}` #Partição com Windows.
    partlinux=`(cut -d ';' -f10 | cut -d '"' -f4 | cut -d '=' -f2) <<< ${avahi_saida}` #Partição com Linux.
    partrec=`(cut -d ';' -f10 | cut -d '"' -f6 | cut -d '=' -f2) <<< ${avahi_saida}` #Partição de Recuperação.
    partswap=`(cut -d ';' -f10 | cut -d '"' -f8 | cut -d '=' -f2) <<< ${avahi_saida}` #Partição Swap.

    #Tamanho total das imagens criadas no servidor.
    tamwindows=`(cut -d ';' -f10 | cut -d '"' -f10 | cut -d '=' -f2) <<< ${avahi_saida}`
    tamlinux=`(cut -d ';' -f10 | cut -d '"' -f12 | cut -d '=' -f2) <<< ${avahi_saida}`

    #Sistema de arquivo das partições.
    sa_partwindows=`(cut -d ';' -f10 | cut -d '"' -f14 | cut -d '=' -f2) <<< ${avahi_saida}`
    sa_partlinux=`(cut -d ';' -f10 | cut -d '"' -f16 | cut -d '=' -f2) <<< ${avahi_saida}`
    sa_partrec=`(cut -d ';' -f10 | cut -d '"' -f18 | cut -d '=' -f2) <<< ${avahi_saida}`

    #Atualiza arquivo de variaveis.
    echo 'partwindows='$partwindows > $riso_part
    echo 'partlinux='$partlinux >> $riso_part
    echo 'sa_partwindows='$sa_partwindows >> $riso_part
    echo 'sa_partlinux='$sa_partlinux >> $riso_part

}

#Instala imagens do Linux e do Windows.
instala() {
    log "Iniciando instalação do Windows e do Linux."
    if [ -e ${img_win} -a -e ${img_lin} ]; then

        #Carrega variáveis
        [ -z $partwindows -o -z $sa_partwindows ] && [ -z $partlinux -o -z $sa_partlinux ] && . $riso_part

	    #Desmonta partiçoes.
	    umount $partwindows 2> /dev/null
	    umount $partlinux 2> /dev/null

	    #Clona windows.
	    log "Instalação do Windows iniciada."
	    (ntfsclone -r $img_win -O $partwindows && log "Fim da instalação do Windows") || log "ERRO: Windows não foi instalado com sucesso."

	    #Clona linux.
	    mkfs.${sa_partlinux} $partlinux
	    mount $partlinux /mnt
	    cd /mnt
	    log "Instalação do Linux iniciada."
	    rm -f boot/grub/grub.cfg
	    (tar -xvf $img_lin && log "Fim da instalação do Linux.") || log "ERRO: Linux não foi instalado com sucesso."
	    cd ..
	    umount /mnt 2> /dev/null

	    sleep 3
	    log "Instalação do Windows e do Linux finalizada."
	    update-grub

	    #verifica se desliga computador
	    desligar=`grep "DESLIGAR" ${riso_conf} | cut -d'=' -f2`
	    if [ "$desligar" = "SIM" ]; then
		log "Desligando computador."
	        halt
	    fi

	    #verifica se reinicia computador
	    reiniciar=`grep "REINICIAR" ${riso_conf} | cut -d'=' -f2`
	    if [ "$reiniciar" = "SIM" ]; then
		log "Reiniciando computador."
	        reboot
	    fi
	else
		dialog \
		--title 'Atenção' \
		--ok-label 'OK' \
		--msgbox '\n   Não existem imagens prontas.' \
		7 40
		log "ERRO: Não existem imagens prontas."
		return 5
	fi

}

#Instala imagem do Windows.
instala_windows() {
    log "Iniciando instalação do Windows."
    if [ -e ${img_win} ]; then

        #le do arquivo de variaveis
        [ -z $partwindows -o -z $sa_partwindows ] && . $riso_part

	    #Desmonta partiçoes
	    umount $partwindows 2> /dev/null

	    #Clona windows
	    log "Instalação do Windows iniciada."
	    (ntfsclone -r $img_win -O $partwindows && log "Fim da instalação do Windows") || log "ERRO: Windows não instalou com sucesso."

	    log "Instalação do Windows finalizada."
	    update-grub

	    #verifica se desliga computador
	    desligar=`grep "DESLIGAR" ${riso_conf} | cut -d'=' -f2`
	    if [ "$desligar" = "SIM" ]; then
		log "Desligando computador."
	        halt
	    fi

	    #verifica se reinicia computador
	    reiniciar=`grep "REINICIAR" ${riso_conf} | cut -d'=' -f2`
	    if [ "$reiniciar" = "SIM" ]; then
		log "Reiniciando computador."
	        reboot
	    fi
	else
		dialog \
		--title 'Atenção' \
		--ok-label 'OK' \
		--msgbox '\n  Você ainda não baixou a imagem do windows.' \
		7 50
		log "ERRO: Imagem do Windows ainda não foi baixada."
		return 5
	fi

}

#Instala imagem do Linux.
instala_linux() {
    log "Iniciando instalação do Linux."
    if [ -e ${img_lin} ]; then

       #Carrega variáveis
       [ -z $partlinux -o -z $sa_partlinux ] && . $riso_part

		#desmonta partiçoes.
	    umount $partlinux 2> /dev/null

	    #clona linux
	    mkfs.${sa_partlinux} $partlinux
	    mount $partlinux /mnt
	    cd /mnt
	    log "Instalação do Linux iniciada."
	    rm -f boot/grub/grub.cfg
	    (tar -xvf $img_lin && log "Fim da instalação do Linux.") || log "ERRO: Linux instalou com sucesso."
	    cd ..
	    umount /mnt 2> /dev/null

	    sleep 3
	    log "Instalação do Linux finalizada."
	    update-grub

	    #verifica se desliga computador
	    desligar=`grep "DESLIGAR" ${riso_conf} | cut -d'=' -f2`
	    if [ "$desligar" = "SIM" ]; then
		log "Desligando computador."
	        halt
	    fi

	    #verifica se reinicia computador
	    reiniciar=`grep "REINICIAR" ${riso_conf} | cut -d'=' -f2`
	    if [ "$reiniciar" = "SIM" ]; then
		log "Reiniciando computador."
	        reboot
	    fi
	else
		dialog \
		--title 'Atenção' \
		--ok-label 'OK' \
		--msgbox '\n  Você ainda não baixou a imagem do linux.' \
		7 50
		log "Imagem do Linux ainda não foi baixada."
		return 5
	fi

}

#Baixa imagens do Linux e do Windows.
baixa_imagens() {
	log "Iniciando download do Linux e do Windows."
	log "Conectando ao servidor."
	echo "Conectando ao servidor..."
	carrega_variaveis || return 1

    #Vefifica se imagem do windows já é a mais recente
	sizelocwin="0"
	[ -e ${img_win} ] && sizelocwin=$(du ${img_win} | cut -f1 )
	if [ "$sizelocwin" = "$tamwindows" ]; then
        dialog \
        --title 'Atenção' \
        --ok-label 'OK' \
        --msgbox '\nA imagem do Windows no computador já é a mais recente.' \
        7 50
	log "ERRO: Imagem do Windows já é a mais recente."
        return 4
    fi

    #Vefifica se imagem do linux já é a mais recente
	sizeloclin="0"
	[ -e ${img_lin} ] && sizeloclin=$(du ${img_lin} | cut -f1)
	if [ "$sizeloclin" = "$tamlinux" ]; then
        dialog \
        --title 'Atenção' \
        --ok-label 'OK' \
        --msgbox '\n A imagem do Linux no computador já é a mais recente.' \
        7 50
	log "ERRO: Imagem do Linux já é a mais recente."
        return 4
    fi

	#Deleta imagens antigas.
	log "Iniciando remoção da imagem antiga do Windows."
	echo "Removendo imagem antiga do Windows..."
	rm -f $img_win
	rm -f $tor_win
	log "Fim da remoção da imagem antiga do Windows."
	log "Inicio da remoção da imagem antiga do Linux."
	echo "Removendo imagem antiga do Linux..."
	rm -f $img_lin
	rm -f $tor_lin
	log "Fim da remoção da imagem antiga do Linux."

	#Inicia download das imagens em terminal virtual.
	log "Iniciando download dos torrent do Windows."
	(scp -o StrictHostKeyChecking=no root@${servidor}:${tor_win} ${tor_win} && log "Torrent do Windows baixado com sucesso.") || log "ERRO: Torrent do Windows não foi baixado."
	log "Iniciando download do torrent do Linux."
	(scp -o StrictHostKeyChecking=no root@${servidor}:${tor_lin} ${tor_lin} && log "Torrent do Linux baixado com sucesso.") || log "ERRO: Torrent do Linux não foi baixado."
	cd ${dir_img}
	log "Iniciando download das imagens do Windows e do Linux."
	screen -d -m rtorrent ${tor_win} ${tor_lin}

    	#Se usuário cancelar volta para menu.
	trap "killall rtorrent; clear; exit" 2 15

	# Loop que aguarda o torrent ser concluido.
	# Compara o tamanho do arquivo que esta sendo baixado pelo rtorrent
	# com o tamanho total no arquivo riso.service.
	(
	    sizelocwin="0"
	    sizeloclin="0"
	    total=$((tamwindows+tamlinux))
	    while [ "$sizelocwin" -lt "$tamwindows" -o "$sizeloclin" -lt "$tamlinux" ]; do

		    # quanto já foi copiado?
		    [ -e ${img_win} ] && sizelocwin=$(du ${img_win} | cut -f1)
		    [ -e ${img_lin} ] && sizeloclin=$(du ${img_lin} | cut -f1)
	            copiado=$((sizelocwin+sizeloclin))

		    # qual a porcentagem do total?
		    PORCENTAGEM=$((copiado*100/total))

		    # envia a porcentagem para o dialog
		    echo $PORCENTAGEM

		    # aguarda até a próxima checagem
		    sleep 3
	    done

	    # cópia finalizada, mostra a porcentagem final
	    echo 100
	    log "Download das imagens do Windows e Linux finalizado."
	    sleep 30

    ) | dialog --title "Baixando imagens..." --gauge "Baixando imagens do Windows e Linux do servidor RISOS para maquina local" 8 50 0

	log "Finalizando rtorrent."
	#Finaliza download
	killall rtorrent

}

#Baixa imagem do Windows.
baixa_imagem_windows() {
	log "Iniciando download do Windows."
	echo "Conectando ao servidor..."
	carrega_variaveis || return 1

    #Vefifica se imagem já é a mais recente
	sizelocwin="0"
	[ -e ${img_win} ] && sizelocwin=$(du ${img_win} | cut -f1)
	if [ "$sizelocwin" = "$tamwindows" ]; then
        dialog \
        --title 'Atenção' \
        --ok-label 'OK' \
        --msgbox '\n A imagem no computador já é a mais recente.' \
        7 50
	log "ERRO: A imagem do Windows é a mais recente."
        return 4
    fi

	#Deleta imagens antigas.
	log "Iniciando remoção da imagem antiga do Windows."
	echo "Removendo imagem antiga do Windows..."
	rm -f ${img_win}
	rm -f ${tor_win}
	log "Remoção da imagem antiga do Windows finalizada."

	#Inicia download da imagen em terminal virtual.
	log "Inicia o download do torrent do Windows."
	(scp -o StrictHostKeyChecking=no root@${servidor}:${tor_win} ${tor_win} && log "Download do torrent do Windows finalizado.") || log "ERRO: O torrent do Windows não foi baixado."
	cd $dir_img
	log "Iniciando Download do Windows."
	screen -d -m rtorrent $tor_win

	#Se usuario cancelar volta para menu.
	trap "killall rtorrent; clear; exit" 2 15

	# Loop que aguarda o torrent ser concluido.
	# Compara o tamanho do arquivo que esta sendo baixado pelo rtorrent
	# com o tamanho total do arquivo em riso.service.
    (
	    sizelocwin="0"
	    while [ "$sizelocwin" -lt "$tamwindows" ]; do

		    # quanto já foi copiado?
		    [ -e ${img_win} ] && sizelocwin=$(du $img_win | cut -f1)

		    # qual a porcentagem do total?
		    PORCENTAGEM=$((sizelocwin*100/tamwindows))

		    # envia a porcentagem para o dialog
		    echo $PORCENTAGEM

		    # aguarda até a próxima checagem
		    sleep 3
	    done

	    # cópia finalizada, mostra a porcentagem final
	    echo 100
	    log "Download do Windows finalizado."
	    sleep 30

    ) | dialog --title "Baixando imagem..." --gauge "Baixando imagem do Windows do servidor RISOS para maquina local" 8 50 0

	log "Finalizando rtorrent."
	#Finaliza download
	killall rtorrent

}

#Baixa imagem linux.
baixa_imagem_linux() {

	log "Iniciando download do Linux."
	echo "Conectando ao servidor..."
	carrega_variaveis || return 1

    #Vefifica se imagem já é a mais recente
	sizeloclin="0"
	[ -e ${img_lin} ] && sizeloclin=$(du ${img_lin} | cut -f1)
	if [ "$sizeloclin" = "$tamlinux" ]; then
        dialog \
        --title 'Atenção' \
        --ok-label 'OK' \
        --msgbox '\n A imagem no computador já é a mais recente.' \
        7 50
	log "ERRO: A imagem do Linux já é a mais recente."
        return 4
    fi

	#Deleta imagens antigas.
	log "Deletando imagem antiga do Linux."
	echo "Removendo imagem antiga do Linux..."
	rm -f ${img_lin}
	rm -f ${tor_lin}
	log "Imagem antiga do Linux deletada."

    #Inicia download da imagen em terminal virtual.
	log "Baixando torrent do Linux."
	(scp -o StrictHostKeyChecking=no root@${servidor}:${tor_lin} ${tor_lin} && log "Torrent do Linux baixado com sucesso.") || log "ERRO: Erro ao baixar torrent do Linux."
	cd ${dir_img}
	log "Iniciando download do Linux."
	screen -d -m rtorrent ${tor_lin}

	#Se usuário cancelar volta para menu.
	trap "killall rtorrent; clear; exit" 2 15

    # Loop que aguarda o torrent ser concluido.
	# Compara o tamanho do arquivo que esta sendo baixado pelo rtorrent
	# com o tamanho total do arquivo em riso.service.
    (
	    sizeloclin="0"
	    while [ "$sizeloclin" -lt "$tamlinux" ]; do

		    # quanto já foi copiado?
		    [ -e ${img_lin} ] && sizeloclin=$(du ${img_lin} | cut -f1)

		    # qual a porcentagem do total?
		    PORCENTAGEM=$((sizeloclin*100/tamlinux))

		    # envia a porcentagem para o dialog
		    echo $PORCENTAGEM

		    # aguarda até a próxima checagem
		    sleep 3
	    done

	    # cópia finalizada, mostra a porcentagem final
	    echo 100
	    log "Download do Linux finalizado."
	    sleep 30
    ) | dialog --title "Baixando imagem..." --gauge "Baixando imagem do Linux do servidor RISOS para maquina local" 8 50 0

	log "Finalizando rtorrent"
	#Finaliza download
	killall rtorrent
}

#Instala imagem do SO com o R.I.S.O..
instala_rec() {
	log "Iniciando instalação da recuperação."
	log "Instalando recuperação."
	#Instala imagem
	tar -xvf rec.tar

	#instala o grub
	log "Instalando o GRUB."
	chroot /mnt update-grub
	(chroot /mnt grub-install /dev/sda && log "GRUB instalado com sucesso.") || log "ERRO: GRUB não instalado com sucesso."

	#Verifica se a instalaçao foi concluida con sucesso
	if [ -e /mnt/vmlinuz ]
	then
	    	clear
		log "Imagem instalada de recuperação instalada com sucesso."
		log "Reiniciando o computador."
		reboot
	else
		log "ERRO: Não foi possível instalar a imagem de recuperação."
		dialog \
        --title 'Atenção' \
        --ok-label 'OK' \
        --msgbox '\n      ...NOSSA!!!, o script falhou!!!...
...reinicie o computador e tente outra vez...' \
        8 50
	fi

}

#Baixa imagem do SO com o R.I.S.O..
baixa_rec() {
	log "Iniciando download da imagem de recuperação."
	echo "Conectando ao servidor..."
	carrega_variaveis || return 1

	#Baixa refaz tabela de partiçao
	log "Baixando tabela de partições."
	(scp -o StrictHostKeyChecking=no root@${servidor}:${tab_part} ${tab_part} && log "Tabela de partições baixada com sucesso") || log "ERRO: Não foi possível baixar tabela de partições."
	swapoff -a
	log "Montando nova tabela de partições."
	sfdisk -f /dev/sda < ${tab_part}

	#Desmonta partição
	umount ${partrec} 2> /dev/null

	log "Formatando partições e criando swap"
	#Formata partição
	mkfs.${sa_partrec} ${partrec}
	mkswap ${partswap}
	swapon ${partswap}

	#Baixa imagem .tar via scp
	umount /mnt 2> /dev/null
	mount ${partrec} /mnt
	cd /mnt
	log "Iniciando o download da imagem de recuperação."
	(scp -o StrictHostKeyChecking=no root@${servidor}:${img_rec} ./rec.tar && log "Download da imagem de recuperação finalizada.") || log "ERRO: Não foi possível realizar o download da imagem de recuperação."
}

#Define configurações do riso
configuracoes() {
    dialog                                          \
    --title 'AVISO'                              \
    --yesno '\nAlterar esse arquivo é potencialmente
             perigoso, se não souber o que esta fazendo pare agora.\n\nDeseja continuar?'    \
    0 0
    if [ "$?" -eq "0" ]; then
		log "Iniciando configuração manual do arquivo de configuração."
		nano $riso_conf
		log "Finalizada a edição manual do arquivo de configuração."
	fi

}

#Atualiza R.I.S.O..
atualiza() {
	log "Iniciando atualização do script."
	log "Verificando disponibilidade do servidor de atualização."
	ping -q -c 1 200.131.37.236 > /dev/null 2>&1
	if [ "$?" -eq "0" ]; then
		log "Iniciando download do script novo."
		(wget 200.131.37.236/riso/riso0.5 -O /usr/riso/riso && log "RISO atualizado com sucesso.") || log "ERRO: Não foi possível baixar o novo script."

		#Menssagem de atualizado com sucesso.
		dialog \
	        --ok-label 'OK' \
        	--title 'Atenção' \
        	--msgbox '\n   RISO atualizado com sucesso.\n' \
		    7 39

		bash /usr/riso/riso
		exit
	else
		dialog \
		--ok-label 'OK' \
		--title 'ERRO' \
		--msgbox '\n   Esta versão já é a mais recente'\
		7 40
		log "ERRO: RISO já é a versão mais nova."
	fi
}

helpi() {
	dialog \
	--ok-label 'OK' \
	--title 'Help' \
	--msgbox '                                       \n
		Envie um e-mail com suas duvidas e sugestões \n
		para: "riso@comp.eng.br" e reponderei o   \n
		mais rápido possível.'                    \
		0 0
}

#Pessoas que desenvolveram esse material.
creditos() {

	dialog \
	--ok-label 'OK' \
	--title 'Creditos' \
	--msgbox '                                       \n
		 CENTRO FEDERAL DE EDUCAÇAO TECNOLOGICA  \n
		        Engenharia da Computaçao         \n
		                                         \n
		      Cristiano Goulart Lopes Dias       \n
		    Vinicius Tinti de Paula Oliveira     \n
		       Germano Teixeira de Miranda       \n
		        Gabriel de Souza Brandao         \n
		         Marcio J. Menezes Jr.           \n
		    Gabriel Machado de Castro Fonseca    \n
		      André Luiz Silveira Herculano      \n
		                                         \n
		           www.dgo.cefetmg.br            \n
		                                         \n'\
		  0 0

}

#Checklist de seleção.
menu_instala_imagens() {

	opcao=$( dialog --stdout \
	--ok-label 'Confirmar'   \
	--checklist 'Quais imagens deseja instalar:' \
	0 0 0 \
	Windows '' ON  \
	Linux '' ON  )

	# De acordo com a opção escolhida, executa funcoes
	case $opcao in
		'"Windows"') instala_windows;;
		'"Linux"') instala_linux;;
		'"Windows" "Linux"') instala;;
	esac

}

#Checklist de seleção.
menu_baixa_imagens() {

	opcao=$( dialog --stdout \
	--ok-label 'Confirmar'   \
	--checklist 'Quais imagens deseja baixar:' \
	0 0 0 \
	Windows '' ON  \
	Linux '' ON )

	# De acordo com a opção escolhida, executa funcoes
	case $opcao in
		'"Windows"') baixa_imagem_windows && instala_windows;;
		'"Linux"') baixa_imagem_linux && instala_linux;;
		'"Windows" "Linux"') baixa_imagens && instala;;
	esac

}

#Menu principal.
menu() {

	while : ; do
	opcao=$(
		dialog --stdout                                         \
		--ok-label 'Confirmar'                                  \
		--cancel-label 'Sair'                                   \
		--title 'RISO - 0.5'                                    \
		--menu 'Escolha o que voce quer fazer:'                 \
			0 0 0                                               \
			1 'Instalar imagens ja existentes'                  \
			2 'Baixar e instalar novas imagens'                 \
			3 'Baixar e instalar imagem de recuperação(LIVE_CD)'\
			4 'Atualiza'                                        \
			5 'Configurações'                                   \
			6 'Creditos'                                        \
			7 'Help'                                            )

		# ESC, sai do programa...
		[ $? -ne 0 ] && break

		# De acordo com a opção escolhida, executa funçao
		case $opcao in
		1) menu_instala_imagens;;
		2) menu_baixa_imagens;;
		3) baixa_rec; instala_rec;;
		4) atualiza;;
		5) configuracoes;;
		6) creditos;;
		7) helpi;;
	esac

	done

}

#Avalia argumentos.
avaliar_args() {

	#Cria vetor com os argumentos recebidos
	#argumento[0] = numero de argumentos passados.
	argumento=($# $@)

	#Verifica se algum arqumento foi passado
	if [ $# = 0 ]; then
		return
	#Mostra help se requisitado
	elif [ ${argumento[1]} = "--help" ]; then
		echo "Uso: riso [OPÇÃO] [ARQUIVO]...                        "
		echo "Baixa e/ou instala imagen(s) do(s) sistema(s) operacional(s)"
		echo "                                                            "
		echo "   --baixa, baixa as imagens sucessoras                     "
		echo "       windows --imagem do windows                          "
		echo "       linux --imagem do linux                              "
		echo "       rec --imagem do sistema de recuperação               "
		echo "								  "
		echo "   --instala, instala as imagens sucessoras                 "
		echo "       windows --imagem do windows                          "
		echo "       linux --imagem do linux                              "
		echo "       rec --imagem do sistema de recuperação               "
		echo "                                                            "
		echo "A imagem de recuperação(rec) deve ser baixada e/ou instalada"
		echo "a partir de um SO externo ao HD (Ex: cd de boot).           "
		echo "                                                            "
		echo "Exemplo:                                                    "
		echo "    Baixa imagens do linux e do windows e instala a do linux"
		echo "      riso --baixa windows linux --instala linux            "
		echo "                                                            "
		echo "Comunicar \"bugs\" para <riso@comp.eng.br>               "
		exit
	#Tenta executar
	else
		#Verifica syntax
		for i in $(seq 1 ${argumento[0]}); do
			if [ ${argumento[$i]} = "--baixa" ]; then
				until [ $i -eq ${argumento[0]} -o ${argumento[$i]} = "--instala" ]; do
					((i++))
					case ${argumento[$i]} in
						"windows") break;;
						"linux") break;;
						"rec") break;;
						*) echo "riso: Syntax ERRO"; echo "Tente \`riso --help\` para mais informações"; exit;;
					esac
				done
			elif [ ${argumento[$i]} = "--instala" ]; then
				until [ $i -eq ${argumento[0]} -o ${argumento[$i]} = "--baixa" ]; do
					((i++))
					case ${argumento[$i]} in
						"windows") break;;
						"linux") break;;
						"rec") break;;
						*) echo "riso: Syntax ERRO"; echo "Tente \`riso --help\` para mais informações"; exit;;
					esac
				done
			elif [ ${argumento[$i]} = "windows" ]; then
				continue
			elif [ ${argumento[$i]} = "linux" ]; then
				continue
			elif [ ${argumento[$i]} = "rec" ]; then
				continue
			else
				echo "riso: Syntax ERRO"
				echo "Tente \`riso --help\` para mais informações"
				exit
			fi
		done

		#Executa comando
		carrega_variaveis || return 1
		for i in $(seq 1 ${argumento[0]}); do
			if [ ${argumento[$i]} = "--baixa" ]; then
				until [ $i -eq ${argumento[0]} -o ${argumento[$i]} = "--instala" ]; do
					((i++))
					case ${argumento[$i]} in
						"windows") baixa_imagem_windows;;
						"linux") baixa_imagem_linux;;
						"rec") baixa_rec;;
					esac
				done
			elif [ ${argumento[$i]} = "--instala" ]; then
				until [ $i -eq ${argumento[0]} -o ${argumento[$i]} = "--baixa" ]; do
					((i++))
					case ${argumento[$i]} in
						"windows") instala_windows;;
						"linux") instala_linux;;
						"rec") instala_rec;;
					esac
				done
			elif [ ${argumento[$i]} = "windows" ]; then
				continue
			elif [ ${argumento[$i]} = "linux" ]; then
				continue
			elif [ ${argumento[$i]} = "rec" ]; then
				continue
			fi
		done
	fi
	reboot

}

#Verifica se usuário é root antes de iniciar o riso.
USER=`id -u`
if [ $USER == '0' ]; then
    log "Iniciando RISO --------------------------------------------------------"
    avaliar_args $@
	menu
	log "Encerrando RISO -------------------------------------------------------"
	clear
else
	echo 'Só o root pode fazer isso, jovenzinho!'
fi
Adicionando riso