Compare commits

..

1 Commits

Author SHA1 Message Date
Levente Polyak
7a64d33b88 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:30:25 +02:00
6 changed files with 9 additions and 104 deletions

View File

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

View File

@@ -155,7 +155,7 @@ if (( ${#needsversioning[*]} )); then
if [[ ! -f "${file}" ]]; then
continue
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"
fi
done

View File

@@ -94,19 +94,19 @@ pkgctl_license_check() {
pushd "${path}" >/dev/null
if [[ ! -f PKGBUILD ]]; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} no PKGBUILD found"
msg_error "${BOLD}${path}:${ALL_OFF} no PKGBUILD found"
return 1
fi
# reset common PKGBUILD variables
unset pkgbase
# shellcheck source=contrib/makepkg/PKGBUILD.proto
if ! . ./PKGBUILD; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} failed to source PKGBUILD"
if [[ ! -f .SRCINFO ]]; then
msg_error "${BOLD}${path}:${ALL_OFF} no .SRCINFO found"
return 1
fi
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
fi
pkgbase=${pkgbase:-$pkgname}
if [[ ! -e LICENSE ]]; then
msg_error "${BOLD}${pkgbase}:${ALL_OFF} is missing the LICENSE file"

View File

@@ -191,9 +191,7 @@ path = [
".nvchecker.toml",
"*.install",
"*.sysusers",
"*sysusers.conf",
"*.tmpfiles",
"*tmpfiles.conf",
"*.logrotate",
"*.pam",
"*.service",

View File

@@ -31,7 +31,6 @@ pkgctl_repo_usage() {
clone Clone a package repository
configure Configure a clone according to distro specs
create Create a new GitLab package repository
star Star project in Gitlab
switch Switch a package repository to a specified version
web Open the packaging repository's website
@@ -44,7 +43,6 @@ pkgctl_repo_usage() {
$ ${COMMAND} clone --maintainer mynickname
$ ${COMMAND} configure *
$ ${COMMAND} create libfoo
$ ${COMMAND} star libfoo
$ ${COMMAND} switch 2:1.19.5-1 libfoo
$ ${COMMAND} web linux
_EOF_
@@ -95,14 +93,6 @@ pkgctl_repo() {
pkgctl_repo_create "$@"
exit 0
;;
star)
_DEVTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/repo/star.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/star.sh
pkgctl_repo_star "$@"
exit 0
;;
switch)
_DEVTOOLS_COMMAND+=" $1"
shift

View File

@@ -1,82 +0,0 @@
#!/bin/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${DEVTOOLS_INCLUDE_REPO_WEB_SH:-} ]] || return 0
DEVTOOLS_INCLUDE_REPO_WEB_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
# shellcheck source=src/lib/common.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
# shellcheck source=src/lib/api/gitlab.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/api/gitlab.sh
set -e
pkgctl_repo_star_usage() {
local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
Stars the packaging repository in Gitlab. If called with no arguments
stars the package cloned in the current working directory.
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} star linux
_EOF_
}
pkgctl_repo_star() {
# options
local pkgbases=()
# option checking
while (( $# )); do
case $1 in
-h|--help)
pkgctl_repo_star_usage
exit 0
;;
--)
shift
break
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
pkgbases=("$@")
break
;;
esac
done
[[ -z ${WORKDIR:-} ]] && setup_workdir
outfile=$(mktemp --tmpdir="${WORKDIR}" pkgctl-gitlab-api.XXXXXXXXXX)
for pkgbase in "${pkgbases[@]}"; do
if [[ ! -d ${pkgbase} ]]; then
local full_project_path="${GIT_PACKAGING_NAMESPACE}/$(gitlab_project_name_to_path "${pkgbase}")"
local encoded_project_path=${full_project_path//\//%2F}
# star GitLab project
if ! gitlab_api_call "${outfile}" POST "projects/${encoded_project_path}/star"; then
return 1
fi
if ! path=$(jq --raw-output --exit-status '.path' < "${outfile}"); then
msg_error " failed to query path: $(cat "${outfile}")"
return 1
fi
msg_success " ${pkgbase} starred ⭐"
else
warning "Can't find empty project"
fi
done
return 0
}