#!/hint/bash # # SPDX-License-Identifier: GPL-3.0-or-later [[ -z ${DEVTOOLS_INCLUDE_REPO_SH:-} ]] || return 0 DEVTOOLS_INCLUDE_REPO_SH=1 _DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@} set -e pkgctl_repo_usage() { local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}} cat <<- _EOF_ Usage: ${COMMAND} [COMMAND] [OPTIONS] Manage Git packaging repositories and helps with their configuration according to distro specs. Git author information and the used signing key is set up from makepkg.conf read from any valid location like /etc or XDG_CONFIG_HOME. The configure command can be used to synchronize the distro specs and makepkg.conf settings for previously cloned repositories. The unprivileged option can be used for cloning packaging repositories without SSH access using read-only HTTPS. COMMANDS clean Remove untracked files from the working tree clone Clone a package repository configure Configure a clone according to distro specs create Create a new GitLab package repository switch Switch a package repository to a specified version web Open the packaging repository's website OPTIONS -h, --help Show this help text EXAMPLES $ ${COMMAND} clean --interactive * $ ${COMMAND} clone libfoo linux libbar $ ${COMMAND} clone --maintainer mynickname $ ${COMMAND} configure * $ ${COMMAND} create libfoo $ ${COMMAND} switch 2:1.19.5-1 libfoo $ ${COMMAND} web linux _EOF_ } pkgctl_repo() { if (( $# < 1 )); then pkgctl_repo_usage exit 0 fi # option checking while (( $# )); do case $1 in -h|--help) pkgctl_repo_usage exit 0 ;; clean) _DEVTOOLS_COMMAND+=" $1" shift # shellcheck source=src/lib/repo/clean.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/clean.sh pkgctl_repo_clean "$@" exit 0 ;; clone) _DEVTOOLS_COMMAND+=" $1" shift # shellcheck source=src/lib/repo/clone.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/clone.sh pkgctl_repo_clone "$@" exit 0 ;; configure) _DEVTOOLS_COMMAND+=" $1" shift # shellcheck source=src/lib/repo/configure.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/configure.sh pkgctl_repo_configure "$@" exit 0 ;; create) _DEVTOOLS_COMMAND+=" $1" shift # shellcheck source=src/lib/repo/create.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/create.sh pkgctl_repo_create "$@" exit 0 ;; switch) _DEVTOOLS_COMMAND+=" $1" shift # shellcheck source=src/lib/repo/switch.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/switch.sh pkgctl_repo_switch "$@" exit 0 ;; web) _DEVTOOLS_COMMAND+=" $1" shift # shellcheck source=src/lib/repo/web.sh source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/web.sh pkgctl_repo_web "$@" exit 0 ;; -*) die "invalid argument: %s" "$1" ;; *) die "invalid command: %s" "$1" ;; esac done } pkgctl_repo_configure() { local remote_url # Check if git repository exists if ! git rev-parse --git-dir > /dev/null 2>&1; then die "not a git repository" } # Get the remote URL remote_url=$(git remote get-url origin 2>/dev/null) || true if [[ -z "${remote_url}" ]]; then die "no remote 'origin' configured" } # Verify this is an Arch Linux packaging repository if [[ ! "${remote_url}" =~ gitlab\.archlinux\.org.*/packaging/ ]]; then die "not an Arch Linux packaging repository: %s" "${remote_url}" } # Check if repository is already configured if [[ -f .gitlab-ci.yml ]] && [[ -f .gitignore ]]; then die "repository appears to be already configured" } # ... rest of existing configure code ... }