Compare commits

...

2 Commits

Author SHA1 Message Date
keypair
c738d84e23 Merge branch 'master' into 'master'
feat(pkgctl_auth_login): generate the login token via SSH

Closes #262

See merge request archlinux/devtools!309
2025-08-02 02:00:38 +00:00
keypair
34c7f0053f feat(pkgctl_auth_login): generate the login token via SSH 2025-03-05 05:36:28 +00:00

View File

@@ -33,11 +33,13 @@ pkgctl_auth_login_usage() {
OPTIONS
-g, --gen-access-token Open the URL to generate a new personal access token
-s, --gen-ssh-token Directly generate the token via SSH (only works if your gitlab is already configured with SSH)
-h, --help Show this help text
EXAMPLES
$ ${COMMAND}
$ ${COMMAND} --gen-access-token
$ ${COMMAND} --gen-ssh-token
_EOF_
}
@@ -53,6 +55,10 @@ pkgctl_auth_login() {
pkgctl_auth_login_usage
exit 0
;;
-s|--gen-ssh-token)
USE_SSH=1
shift
;;
-g|--gen-access-token)
GEN_ACESS_TOKEN=1
shift
@@ -76,17 +82,25 @@ pkgctl_auth_login() {
environment variable using a vault, see pkgctl-auth-login(1) for details.
_EOF_
if (( GEN_ACESS_TOKEN )); then
xdg-open "${personal_access_token_url}" 2>/dev/null
if (( USE_SSH )); then
token=$(ssh git@gitlab.archlinux.org personal_access_token pkgctl api,write_repository 30)
if [[ $? -ne 0 ]]; then
msg_error " Failed to generate token via SSH"
exit 1
fi
token=$(echo "$token" | grep 'Token:' | awk '{print $2}')
fi
# read token from stdin
read -s -r -p "${GREEN}?${ALL_OFF} ${BOLD}Paste your authentication token:${ALL_OFF} " token
echo
if (( GEN_ACESS_TOKEN )); then
xdg-open "${personal_access_token_url}" 2>/dev/null
# read token from stdin
read -s -r -p "${GREEN}?${ALL_OFF} ${BOLD}Paste your authentication token:${ALL_OFF} " token
echo
if [[ -z ${token} ]]; then
msg_error " No token provided"
exit 1
if [[ -z ${token} ]]; then
msg_error " No token provided"
exit 1
fi
fi
# check if the passed token works