73 lines
1.4 KiB
Plaintext
73 lines
1.4 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
if [ -z $GOGS_ROOT_URL ]
|
||
|
then
|
||
|
printf "Need to set GOGS_ROOT_URL environment variable\n" >&2
|
||
|
printf "\tIE: https://git.cynarski.pl\n" >&2
|
||
|
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
if [ -z $GOGS_TOKEN ]
|
||
|
then
|
||
|
printf "Need to set GOGS_TOKEN environment variable\n" >&2
|
||
|
printf "\tThis can be obtained at $GOGS_ROOT_URL/user/settings/applications\n" >&2
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
if [ -z $GOGS_USER ]
|
||
|
then
|
||
|
printf "Need to set GOGS_USER environment variable\n" >&2
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
if [ -z $GOGS_REPO ]
|
||
|
then
|
||
|
printf "Need to set GOGS_REPO environment variable\n" >&2
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
if [ -f $HOME/.ssh/gogs.pub ]; then
|
||
|
printf "Gogs deploy key is present\n" >&2
|
||
|
else
|
||
|
mkdir -p $HOME/.ssh/
|
||
|
ssh-keygen -f $HOME/.ssh/gogs -t rsa -N ''
|
||
|
fi
|
||
|
|
||
|
prefix="https://"
|
||
|
sshhost=${GOGS_ROOT_URL#$prefix}
|
||
|
|
||
|
sbody=$(cat <<-END
|
||
|
|
||
|
Host $sshhost
|
||
|
IdentityFile ~/.ssh/gogs.pub
|
||
|
|
||
|
END
|
||
|
)
|
||
|
|
||
|
if [ -f $HOME/.ssh/$GOGS_REPO-sended ]; then
|
||
|
printf "Key sended\n" >&2
|
||
|
else
|
||
|
printf "Prepare to send key\n" >&2
|
||
|
title=$(hostname)@$(whoami)
|
||
|
printf "title $title\n" >&2
|
||
|
deploykey=$(cat $HOME/.ssh/gogs.pub)
|
||
|
body=$(cat <<-END
|
||
|
{
|
||
|
"title": "$title",
|
||
|
"key": "$deploykey"
|
||
|
}
|
||
|
END
|
||
|
)
|
||
|
prefix="https://"
|
||
|
sshhost=${GOGS_ROOT_URL#$prefix}
|
||
|
|
||
|
curl -H "Content-Type: application/json" \
|
||
|
-H "Authorization: token $GOGS_TOKEN" \
|
||
|
-d "$body" \
|
||
|
$GOGS_ROOT_URL/api/v1/repos/$GOGS_USER/$GOGS_REPO/keys > /dev/null
|
||
|
touch $HOME/.ssh/$GOGS_REPO-sended
|
||
|
echo "$sbody" >> $HOME/.ssh/config
|
||
|
fi
|
||
|
|