Compare commits

...

3 Commits

Author SHA1 Message Date
Leonidas Spyropoulos
5306af003d Merge branch 'repo_star' into 'master'
Draft: feature(repo): repo star command

See merge request archlinux/devtools!163
2025-08-11 09:24:58 +01:00
Aaron Liu
3f0ebbc6d2 fix(license): add .gitignore to REUSE defaults
36 packages use this while 26 use *.pam and 21 use *.logrotate. Seems
anecdotally common enough to add this here.
2025-08-08 14:13:32 +02:00
Leonidas Spyropoulos
e1628de773 feature(repo): repo star command
Signed-off-by: Leonidas Spyropoulos <artafinde@archlinux.org>
2024-05-07 06:57:30 +01:00
3 changed files with 93 additions and 0 deletions

View File

@@ -188,6 +188,7 @@ path = [
"README.md",
"keys/**",
".SRCINFO",
".gitignore",
".nvchecker.toml",
"*.install",
"*.sysusers",

View File

@@ -31,6 +31,7 @@ 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
@@ -43,6 +44,7 @@ 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_
@@ -93,6 +95,14 @@ 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

82
src/lib/repo/star.sh Normal file
View File

@@ -0,0 +1,82 @@
#!/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
}