1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
#!/bin/bash
# Funcao para verificar se os programas a serem utilizados
# se encontram em PATH
esta_instalado(){
prog=$1
echo "Verificando se $prog est instalado ..."
for caminho in ${PATH//:/ }
do
if [ -x "$caminho/$prog" ]; then
echo " OK"
return 0
fi
done
echo " $prog no foi encontrado"
return 1
}
# saida do mario_fortunes -- deve ser usada no lugar de exit
mf_exit(){
rm -f $ERRO
rm -f $OPT
rm -f $TMP
exit $1
}
# Saida sem erro
saida(){
$DIALOG --clear
$DIALOG --msgbox "A instalao NO foi concluda com sucesso." 24 80
$DIALOG --clear
mf_exit 1
}
# Saida por causa de erro
saida_por_erro(){
$DIALOG --clear
$DIALOG --msgbox "Ocorreu um erro.\n\nA instalao NO foi concluda com sucesso.\n\n$1" 24 80
$DIALOG --clear
mf_exit 1
}
if esta_instalado Xdialog && [ ! -z $DISPLAY ]
then
DIALOG=Xdialog
else
esta_instalado dialog || mf_exit 1
DIALOG=dialog
fi
[ $DIALOG = Xdialog ] && ALIGN="--left"
TMP=/tmp/mario_fortunes
OPT=/tmp/opt
ERRO=/tmp/erro
ARQS="mario.anagramas mario.arteascii mario.computadores mario.gauchismos mario.geral mario.palindromos mario.piadas"
# Verifica se os programas utilizados no instalador estao
# disponiveis
esta_instalado gawk || esta_instalado awk || mf_exit 1
esta_instalado grep || mf_exit 1
esta_instalado strfile || mf_exit 1
esta_instalado fortune || mf_exit 1
# Verifica se e' possivel escrever em /tmp
touch $TMP || {
echo "Nao e' possivel criar $TMP"
mf_exit 1
}
#Iniciando a interface com o usuario
$DIALOG --msgbox "`cat LEIAME`" 24 80
# Verifica onde o fortune le^ os arquivos de frases
DIRS=`fortune -f 2>&1 |grep "/"| gawk '{print $2}'`
CAMINHOS=""
CONT=0
for CAMINHO in $DIRS
do
CAMINHOS="$CAMINHOS $(( $CONT + 1)) $CAMINHO"
CONT=$(( $CONT + 1 ))
done
CAMINHOS="$CAMINHOS $(( $CONT + 1 )) Outro"
$DIALOG --menu "Escolha o diretrio para instalar o arquivo de frases" \
24 80 15 \
$CAMINHOS 2> $TMP
[ -z `cat $TMP` ] && saida
$DIALOG --clear
# Se o usuario prefere outro diretorio que nao um dos apresentados,
# deve-se deixar que ele digite um caminho
if [ `cat $TMP` = `expr $CONT + 1` ]
then
cat /dev/null > $TMP
$DIALOG --inputbox \
"Digite o diretrio para instalar o arquivo de frases" \
24 80 2> $TMP
echo -e "\ndigitou" >> $TMP
fi
[ -z `head -n1 $TMP` ] && saida_por_erro "Voc deve especificar o diretrio onde quer instalar o mario_fortunes."
# Se foi escolhido um dos caminhos sugeridos, coloca-se ele em $TMP
# Essa volta toda e' necessaria porque o dialog retorna a primeira
# coluna do menu (um numero) e queremos a segunda (caminho)
CONT=$(( $CONT * 2 ))
if [ ! `tail -n1 $TMP` = digitou ]
then
echo $CAMINHOS | awk '{print $'$CONT'}' > $TMP
else
CAMINHO=`head -n1 $TMP`
echo $CAMINHO > $TMP
fi
# Se o diretorio nao existe, da'-se um jeito
[ -d `cat $TMP` ] || {
$DIALOG --clear
$DIALOG --menu "O diretrio especificado no existe. Deseja cri-lo?" \
24 80 15 \
1 Sim \
2 Nao \
2> $OPT
[ -z `cat $OPT` ] && saida
if [ `cat $OPT` = 1 ]
then
mkdir -p `cat $TMP` 2> $ERRO || saida_por_erro "`cat $ERRO`"
else
saida
fi
}
# Gerando os arquivos .dat e copiando-os para o diretorio destino
DIR=`cat $TMP`
for i in $ARQS
do
strfile $i 2> $ERRO || saida_por_erro "`cat $ERRO`"
cp -f $i "$i".dat $DIR 2> $ERRO || saida_por_erro "`cat $ERRO`"
done
# Mensagens finais
$DIALOG --clear
$DIALOG --msgbox "A instalao do mario_fortunes foi concluda com sucesso.\n\nVeja o arquivo DICAS para obter idias de como usar o mario_fortunes.\n\nSugestes de frases podem ser enviadas para mario@proxy.furg.br." 24 80
$DIALOG $ALIGN --msgbox "mario_fortunes: (mario.geral)\n\n`fortune $DIR/mario.geral`" 24 80
# Tchau
mf_exit 0
|