Insere credenciais na cadeia HTTP?

0

Eu preciso inserir credenciais de usuário em uma string HTTP para poder preencher corretamente o arquivo de credenciais do git em ~/.git-credentials .

Estas são as três variáveis de ambiente para começar:

user="someUser"
pass="somePass"
uri="http://sometld.org/path/repo.git"

Eu tenho mexido com awk , mas ele só funcionará com caminhos de clonagem no estilo do Github ( https://github.com/org/repo.git ) e não funcionará com caminhos não padrão ( https://git.private.org/scm/~user/path/repo.git ):

proto=$(echo $uri | awk -F"/" '{print $1}')
domain=$(echo $uri | awk -F"/" '{print $3}')
repo_path=$(echo $uri | awk -F"/" '{print $4}')
repo_name=$(echo $uri | awk -F"/" '{print $5}')
echo "$proto//$user:$pass@$domain/$repo_path/$repo_name"
# http://someUser:[email protected]/path/repo.git

Qual é a maneira melhor / mais fácil de inserir um nome de usuário e uma senha em uma string HTTP para que eu possa preencher meu arquivo ~/.git-credentials ?

    
por mxplusb 10.04.2018 / 03:05

1 resposta

0
$ sed -e "s^//^//$user:$pass@^" <<<$uri
http://someUser:[email protected]/path/repo.git

Isso substitui // por //$user:$pass@ na string $uri e funcionará em qualquer lugar.

No Bash especificamente:

$ echo ${uri/\/\////$user:$pass@}
http://someUser:[email protected]/path/repo.git

executará o mesmo substituto - isso é apenas ${variable/pattern/replacement} , mas é necessário escapar das barras no padrão porque não podemos alterar os delimitadores aqui.

    
por 10.04.2018 / 03:38