Pq de acododo com algums testes que su fiz se eu fizer:
./script -u"githubuser" -p " "
Ele pega o diretório $USER e inicializa o repositório ali fazendo subindo a pasta do usuário como repositório.
E na url que cria o repositório ele cria um repositório com o nome de um traço "-"
Estou tentando tratar estes erros e problemas indiferente da posição em que o usuário use os argumentos e verificar o que foi passado a estes argumentos,
se foi algo como -p " " ou -p"" -proj"projeto1" ou -u"githubuser" ou -u " " ou -u""
ele esta criando um repositório na url com o nome "-ccomentario1"
wiki.anon
Boa noite Dark.
A "Coisa" é complicada.....
Se passar dessa forma, dá erro!
./script --user "githubuser" --proj -c"comentario1"
Pega (-c"comentario1"), como opção de "proj"
---------------------------------------------------------
Preenche a opção de proj com "Projeto Padrão"
Faz o mesmo com o comentário: "Comentário Padrão".
---------------------------------------------------------------------------------------------------------------
Se Não colocar o "user", ou, user="", user=" " (vazio|espaço)
Mostra ajuda e sai.
---------------------------------------------------------------------------------------------------------------
(($U && $P && $C)) && echo Ok
Foram fornecidos argumentos e opções.
---------------------------------------------------------------------------------------------------------------
Se tem "Restos", foi passada uma opção com "espaços sem aspas"
---------------------------------------------------------------------------------------------------------------
Verifique se atende as necessidades.....
Caso positivo, não esqueça de marcar como resolvido e escolher a Melhor Resposta . . .
Rsrsrsrsrsrs
---------------------------------------------------------------------------------------------------------------
#!/usr/bin/env bash
U=0; P=0; C=0;
uso(){
echo -e "Uso: ${s0[2]} (-u|--user) \"usuário\" (-p|--proj) \"nome do projeto\" (-c|--comt) \"aqui os comentários\" | (-h|--help)\n"
exit 0;
}
parsed=$(getopt -a -n "getopt" -o u:p:c:h --long user:,comt:,proj:,help -- "$@");
eval set -- "$parsed";
while :;do
case "$1" in
-c|--comt) C=1;
case "$2" in
""|" ") optc='"Comentário Padrão"';shift 2;;
*) optc=$2;shift 2 ;;
esac ;;
-p|--proj) P=1;
case "$2" in
""|" ") optp='"Projeto Padrão"';shift 2 ;;
*) optp=$2;shift 2 ;;
esac ;;
-u|--user) U=1;
case "$2" in
""|" ") echo "Erro , sem user";uso;;
*) optu=$2;shift 2 ;;
esac ;;
-h|--help) shift;uso;;
--) shift; break ;;
esac
done
## Eficiente
(($U && $P && $C)) && echo -e "\nOK" || echo "Erro, interromper, Requer: User, Proj e Comt."
echo -e "
User: $U [${optu}]
Proj: $P [${optp}]
Comt: $C [${optc}]
Help: $H
Restos: [${@}]";
#Se tem resto, tem algo errado . . .#
[ -z "${@}" ] 2>/dev/null && echo 'OKAY... Nem sempre . . .' || echo 'ERRO'
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________
Seu script é bem mais elaborado sintaticamente em relação a verificar estas opçoes porem,
ao executar algums testes percebi que ele, ainda pega a a opção commit como nome padrão de projeto
Entao se eu executar:
./script -p -c"comentario1" -u"teste"
ou
./script --proj --commit"comentario1" --user="teste"
ou
./script --proj --commit="comentario1" --user="github_usuario"
Olha a saida:
./script -u=teste --proj --commit="comentario1"
User $2:teste
Proj $2:--commit=comentario1
OK
User: 1 [teste]
Proj: 1 [--commitcomentario1]
Comt: 1 ["Comentário Padrão"]
Help: 0
Restos: []
OKAY... Nem sempre . . .
## Caso não especifique a opção [-c ou --commit] define um comentario padrão para subir o repositório.
if [[ $U -eq 1 && $P -eq 1 && $C -eq 0 ]] ; then
C=1
COMMIT='"Comentário Padrão"'
fi
Eu adicinei estas linha caso o usuário faça:
./script -u=github_usuario -p=projeto1
ou
./script --user=github_user --proj=projeto1
Entao ele não precisaria fazer:
./script -u=github_usuario -p=projeto1 -c ""
ou
./script --user=github_usuario --proj=projeto1 -c " "
Para ativar o comentario padrão pois este comentario se o usuário definir ele ou não a url do github irá criar o repositório remoto com o nome que a variavel da opção [-p | --proj] pejar, mas uma vez que o comentario pdrão foi ativado ele fará o commit subindo o repositório para o github indiferente co nome que esta opção [-p|--proj] pegar como argumento.
Então pelo que eu percebi ainda que façamos isso por causa desta linha:
No script eu tenho que passar o usuário para verificar qual é a chave token dele pois o script é para gerenciar varios usuários github's diferentes em uma estação de trabalho sendo monousuário ou multiusuário.
wiki.anon