Enviado em 11/08/2011 - 19:58h
Estou com um problema que não encontro solução sem fazer uma POG. (Programação orientada a gambiarras.)
======== início aqui ==================
#!/bin/bash
#
#: package: Acessos (nome de exemplo p/ Script ou executável final) (***)
#: file: acessos.principal.sh (Do Script atual)
# Retirado o cabeçalho completo para não poluir demais.
# -----------------------------------------------------------------------------
# Iniciando o aplicativo finalmente.
# -----------------------------------------------------------------------------
# Deve ser o diretório do INSTALL
# Carrega somente uma vez caso não exista ainda.
# Deve garantir que o diretório atual é o da instalação.
# Somente o aplicativo principal faz este teste.
[ "$DIR_INSTALL" ] || DIR_INSTALL="$PWD"
# Variável que irá controlar se a instalação está OK em qualquer momento.
# Controla o STATUS do aplicativo e da versão.
# 1="OK" - 0="Algum problema de instalação ERRO FATAL 004"
# Inicializada em 0 ( não OK ) Default
INSTALL_OK=0
source config.principal.acessos.include.sh #Carrega todas configurações.
source config.principal.acessos.include.sh #Carrega todas configurações.
source config.principal.acessos.include.sh #Carrega todas configurações.
echo "o que vale a variável INSTALL_OK ?? [ $INSTALL_OK ] "
read
exit
============= agora o arquivo config.principal.acessos.include.sh
#!/bin/bash
#
#: package: Acessos (***)
#: file: config.principal.acessos.include.sh
#: since: 2011-08-11 17:27 (GMT -03:00)
#: author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux
#: version: 0.07 Alfa
#: dir: Raiz do aplicativo principal.
#------------------------------------------------------------------------------
#: objectives: 1º arquivo de configuração a ser carregado.
#------------------------------------------------------------------------------
#: comments: Aplicativo não vai trabalhar enquanto não confirmar as alterações.
#: Após alterar as configs, conseguirá testar o aplicativo.
#: FIXME Lembrar de remover mensagens temporárias.
#------------------------------------------------------------------------------
function _config.principal {
# Contém o caminho completo ao home do usuário.
# Poderá ser usado como um caminho raiz para seus diretórios internos.
# Se mudar este valor por padrão, mudará todas localizações dos arquivos.
# Todas as variáveis de diretórios herdam o que está definido em _HOME
# Tome cuidado e confira a sua estrutura de diretórios.
_HOME="$HOME"
# Padrão na instalação é sempre 0 (não configurado)
# 1="OK" 0="Não está configurado para trabalhar !!!"CONFIG_INSTALL=0
CONFIG_INSTALL=1
# Precisa verificar se está tudo configurado corretamente.
# Quem deve carregar o ambiente é este Script.
# Se você não configurar os diretórios corretamente, vai executar o padrão.
# Padrão dos testes é:
# Diretório de Scripts: $HOME/TESTES/Scripts
if [ "$CONFIG_INSTALL" -eq 0 ]
then
INSTALL_OK=0 # Falhou nas configurações básicas. (Redundante)
# Talvez seja interessante que após receber esta mensagem, abrir o editor
# já carregando o arquivo necessário para configuração.
# TODO Descobrir como pode ser feito com segurança.
clear
echo +----------------------------------------------------------------------+
echo " ERRO FATAL 001: !!!"
echo +----------------------------------------------------------------------+
echo " Você não ajustou a chave principal de CONFIGURAÇÃO. !!!"
echo +----------------------------------------------------------------------+
echo " Editar e ler as instruções do arquivo abaixo. "
echo +----------------------------------------------------------------------+
echo " PASTA/Arq: $PWD/config.principal.acessos.include.sh "
echo +----------------------------------------------------------------------+
echo " Deseja configurações fora do padrão? Edite outros configs."
echo " Veja o aquivo: EstruturaDosDiretorios.txt em docs para mais detalhes."
echo " Caso seu desejo seja fora do padrão, edite o arquivo abaixo:"
echo +----------------------------------------------------------------------+
echo " PASTA/Arq: $PWD/config.local.acessos.include.sh "
echo +----------------------------------------------------------------------+
echo " Aplicativo será abortado e só irá trabalhar após as alterações."
echo +----------------------------------------------------------------------+
echo -n " Tecle ENTER para sair !!!"
read x
clear
exit
else
INSTALL_OK=1 # Instalação está OK
fi
return
}
function _config.ambiente {
# Configure abaixo o seu ambiente de operação se for fora do padrão.
# Para fazer ajustes finos, acesse: ambiente.bash.include.sh
CONFIG_AMBIENTE="${_HOME}/TESTES/Scripts"
if test -d "$CONFIG_AMBIENTE"
then
INSTALL_OK=1 # Instalação está OK
else
clear
echo +----------------------------------------------------------------------+
echo " ERRO FATAL 002: !!!"
echo +----------------------------------------------------------------------+
echo " Não encontrou a pasta de CONFIGURAÇÃO para o AMBIENTE. !!!"
echo +----------------------------------------------------------------------+
echo " Editar e ler as instruções. "
echo +----------------------------------------------------------------------+
echo " PASTA/Arq: $PWD/config.principal.acessos.include.sh "
echo +----------------------------------------------------------------------+
echo " Se desejar configurações fora do padrão? Edite outros configs."
echo " Edite o aquivo:EstruturaDosDiretorios.txt em docs para mais detalhes."
echo " Se não usar o padrão realmente, edite o arquivo abaixo:"
echo +----------------------------------------------------------------------+
echo " PASTA/Arq: $PWD/config.local.acessos.include.sh "
echo +----------------------------------------------------------------------+
echo " Aplicativo será abortado e só irá trabalhar após as alterações."
echo +----------------------------------------------------------------------+
echo -n " Tecle ENTER para sair !!!"
read x
clear
exit
fi
# O ambiente poderá mudar se você não usar bash.
# Preparando variável para carregar o arquivo de ambiente bash.
INCLUDE_CONFIG_AMBIENTE="${CONFIG_AMBIENTE}/ambiente.bash.include.sh"
if test -e "$INCLUDE_CONFIG_AMBIENTE"
then
source $INCLUDE_CONFIG_AMBIENTE
INSTALL_OK=1 # Instalação está OK
else
INSTALL_OK=0 # Falhou nas configurações básicas. (Redundante)
clear
echo +----------------------------------------------------------------------+
echo " ERRO FATAL 003: !!!"
echo +----------------------------------------------------------------------+
echo " Você deve ter ajustado o arquivo de CONFIGURAÇÃO errado. !!!"
echo +----------------------------------------------------------------------+
echo " Retorne ao arquivo principal de configuração. "
echo +----------------------------------------------------------------------+
echo " PASTA/Arq: $PWD/config.principal.acessos.include.sh "
echo +----------------------------------------------------------------------+
echo " Confira também as suas configurações locais em: "
echo " PASTA/Arq: $PWD/config.local.acessos.include.sh "
echo +----------------------------------------------------------------------+
echo " Para mais detalhes, veja o aquivo:EstruturaDosDiretorios.txt "
echo " Você deve ter configurado para trabalhar fora do padrão. "
echo +----------------------------------------------------------------------+
echo " Aplicativo será abortado e só irá trabalhar após ajustes."
echo +----------------------------------------------------------------------+
echo -n " Tecle ENTER para sair !!!"
read x
clear
exit
fi
return
}
_config.principal #Executa as configurações principais.
_config.ambiente #Executa as configurações do ambiente shell bash.
echo $INSTALL_OK # Retorna o STATUS das configurações.
echo " Quantas vezes vai mostrar esta mensagem ? E agora José ? "
#------------------------------------------------------------------------------
#: Notas: Configuração principal é pequena, porém importante.
#------------------------------------------------------------------------------
#: Erros fatais numerados ajudam na solução de problemas.
#: Se bem usado, obriga o desenvolvimento prever problemas.
#------------------------------------------------------------------------------
#: INSTALL_OK previne chamadas diretas nas funções básicas em outros locais.
#: Se não resolver de outra forma, vou apelar para esta POG mesmo.
#------------------------------------------------------------------------------