Compare commits

...

2 Commits

Author SHA1 Message Date
keypair
3a30ff9fe9 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-20 13:36:30 +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 OPTIONS
-g, --gen-access-token Open the URL to generate a new personal access token -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 -h, --help Show this help text
EXAMPLES EXAMPLES
$ ${COMMAND} $ ${COMMAND}
$ ${COMMAND} --gen-access-token $ ${COMMAND} --gen-access-token
$ ${COMMAND} --gen-ssh-token
_EOF_ _EOF_
} }
@@ -53,6 +55,10 @@ pkgctl_auth_login() {
pkgctl_auth_login_usage pkgctl_auth_login_usage
exit 0 exit 0
;; ;;
-s|--gen-ssh-token)
USE_SSH=1
shift
;;
-g|--gen-access-token) -g|--gen-access-token)
GEN_ACESS_TOKEN=1 GEN_ACESS_TOKEN=1
shift shift
@@ -76,17 +82,25 @@ pkgctl_auth_login() {
environment variable using a vault, see pkgctl-auth-login(1) for details. environment variable using a vault, see pkgctl-auth-login(1) for details.
_EOF_ _EOF_
if (( GEN_ACESS_TOKEN )); then if (( USE_SSH )); then
xdg-open "${personal_access_token_url}" 2>/dev/null 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 fi
# read token from stdin if (( GEN_ACESS_TOKEN )); then
read -s -r -p "${GREEN}?${ALL_OFF} ${BOLD}Paste your authentication token:${ALL_OFF} " token xdg-open "${personal_access_token_url}" 2>/dev/null
echo # read token from stdin
read -s -r -p "${GREEN}?${ALL_OFF} ${BOLD}Paste your authentication token:${ALL_OFF} " token
echo
if [[ -z ${token} ]]; then if [[ -z ${token} ]]; then
msg_error " No token provided" msg_error " No token provided"
exit 1 exit 1
fi
fi fi
# check if the passed token works # check if the passed token works