Compare commits

..

1 Commits

Author SHA1 Message Date
Levente Polyak
ef6da62956 chore(license): avoid sourcing PKGBUILD in check subcommand
We don't actually need any data from the package, except the pkgbase
which is exclusively used during logging. Simply grep the pkgbase name
and use the path during early code path issues.

Component: pkgctl license check
2025-08-02 06:29:26 +02:00
5 changed files with 17 additions and 35 deletions

View File

@@ -150,7 +150,6 @@ _pkgctl_cmds=(
db db
diff diff
issue issue
license
release release
repo repo
search search

View File

@@ -155,7 +155,7 @@ if (( ${#needsversioning[*]} )); then
if [[ ! -f "${file}" ]]; then if [[ ! -f "${file}" ]]; then
continue continue
fi fi
if ! git ls-files --error-unmatch "$file" >/dev/null; then if ! git ls-files --error-unmatch "$file"; then
die "%s is not under version control" "$file" die "%s is not under version control" "$file"
fi fi
done done

View File

@@ -33,13 +33,11 @@ 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_
} }
@@ -55,10 +53,6 @@ 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
@@ -82,25 +76,17 @@ 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 (( 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
if (( GEN_ACESS_TOKEN )); then if (( GEN_ACESS_TOKEN )); then
xdg-open "${personal_access_token_url}" 2>/dev/null xdg-open "${personal_access_token_url}" 2>/dev/null
# read token from stdin fi
read -s -r -p "${GREEN}?${ALL_OFF} ${BOLD}Paste your authentication token:${ALL_OFF} " token
echo
if [[ -z ${token} ]]; then # read token from stdin
msg_error " No token provided" read -s -r -p "${GREEN}?${ALL_OFF} ${BOLD}Paste your authentication token:${ALL_OFF} " token
exit 1 echo
fi
if [[ -z ${token} ]]; then
msg_error " No token provided"
exit 1
fi fi
# check if the passed token works # check if the passed token works

View File

@@ -94,19 +94,19 @@ pkgctl_license_check() {
pushd "${path}" >/dev/null pushd "${path}" >/dev/null
if [[ ! -f PKGBUILD ]]; then if [[ ! -f PKGBUILD ]]; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} no PKGBUILD found" msg_error "${BOLD}${path}:${ALL_OFF} no PKGBUILD found"
return 1 return 1
fi fi
# reset common PKGBUILD variables if [[ ! -f .SRCINFO ]]; then
unset pkgbase msg_error "${BOLD}${path}:${ALL_OFF} no .SRCINFO found"
return 1
# shellcheck source=contrib/makepkg/PKGBUILD.proto fi
if ! . ./PKGBUILD; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} failed to source PKGBUILD" if ! pkgbase=$(grep --max-count=1 --extended-regexp "pkgbase = (.+)" .SRCINFO | awk '{print $3}'); then
msg_error "${BOLD}${path}:${ALL_OFF} pkgbase not found in .SRCINFO"
return 1 return 1
fi fi
pkgbase=${pkgbase:-$pkgname}
if [[ ! -e LICENSE ]]; then if [[ ! -e LICENSE ]]; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} is missing the LICENSE file" msg_error "${BOLD}${pkgbase}:${ALL_OFF} is missing the LICENSE file"

View File

@@ -188,13 +188,10 @@ path = [
"README.md", "README.md",
"keys/**", "keys/**",
".SRCINFO", ".SRCINFO",
".gitignore",
".nvchecker.toml", ".nvchecker.toml",
"*.install", "*.install",
"*.sysusers", "*.sysusers",
"*sysusers.conf",
"*.tmpfiles", "*.tmpfiles",
"*tmpfiles.conf",
"*.logrotate", "*.logrotate",
"*.pam", "*.pam",
"*.service", "*.service",