db: command for Pacman database modification like update, move etc

This commit is contained in:
Levente Polyak 2022-12-11 16:16:16 +01:00
parent 8b5bcd01b4
commit f834fc4700
No known key found for this signature in database
GPG Key ID: FC1B547C8D8172C8
10 changed files with 371 additions and 0 deletions

View File

@ -34,6 +34,31 @@ _pkgctl_auth_status_args=(
'(-h --help)'{-h,--help}'[Display usage]'
)
_pkgctl_db_cmds=(
"pkgctl db command"
"move[Move packages between pacman repositories]"
"remove[Remove packages from pacman repositories]"
"update[Update the pacman database as final release step]"
)
_pkgctl_db_move_args=(
'(-h --help)'{-h,--help}'[Display usage]'
"1:src-repo:($_repos[*])"
"2:target-repo:($_repos[*])"
'*:pkgbase:_devtools_completions_all_packages'
)
_pkgctl_db_remove_args=(
'(-a --arch=)'{-a,--arch=}"[Override the architecture (disables auto-detection)]:arch:($_arch[*])"
'(-h --help)'{-h,--help}'[Display usage]'
"1:repo:($_repos[*])"
'*:pkgbase:_devtools_completions_all_packages'
)
_pkgctl_db_update_args=(
'(-h --help)'{-h,--help}'[Display usage]'
)
_pkgctl_repo_cmds=(
"pkgctl repo command"
"clone[Clone a package repository]"
@ -178,6 +203,7 @@ _devtools_completions_all_packages() {
_pkgctl_cmds=(
"pkgctl command"
"auth[Authenticate with services like GitLab]"
"db[Pacman database modification for packge update, move etc]"
"diff[Compare package files using different modes]"
"repo[Manage Git packaging repositories and their configuration]"
)

View File

@ -0,0 +1,24 @@
pkgctl-db-move(1)
=================
Name
----
pkgctl-db-update - Update the binary repository as final release step
Synopsis
--------
pkgctl db update [OPTIONS]
Description
-----------
Update the pacman database as final release step for packages that
have been transfered and staged on 'repos.archlinux.org'.
Options
-------
*-h, --help*::
Show a help text
include::include/footer.asciidoc[]

View File

@ -0,0 +1,26 @@
pkgctl-db-remove(1)
===================
Name
----
pkgctl-db-remove - Remove packages from binary repositories
Synopsis
--------
pkgctl db remove [OPTIONS] [REPO] [PKGBASE]...
Description
-----------
Remove packages from pacman repositories.
Options
-------
*-a, --arch* 'ARCH'::
Override the architecture (disables auto-detection)
*-h, --help*::
Show a help text
include::include/footer.asciidoc[]

View File

@ -0,0 +1,23 @@
pkgctl-db-move(1)
=================
Name
----
pkgctl-db-move - Move packages between binary repositories
Synopsis
--------
pkgctl db move [OPTIONS] [SOURCE_REPO] [TARGET_REPO] [PKGBASE]...
Description
-----------
Move packages between pacman repositories.
Options
-------
*-h, --help*::
Show a help text
include::include/footer.asciidoc[]

View File

@ -20,6 +20,9 @@ Subcommands
pkgctl auth::
Authenticate with services like GitLab
pkgctl db::
Pacman database modification for packge update, move etc
pkgctl diff::
Compare package files using different modes
@ -30,6 +33,7 @@ See Also
--------
linkman:pkgctl-auth[1]
linkman:pkgctl-db[1]
linkman:pkgctl-diff[1]
linkman:pkgctl-repo[1]

80
src/lib/db.sh Normal file
View File

@ -0,0 +1,80 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${DEVTOOLS_INCLUDE_DB_SH:-} ]] || return 0
DEVTOOLS_INCLUDE_DB_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
set -e
pkgctl_db_usage() {
local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [COMMAND] [OPTIONS]
Pacman database modification for packge update, move etc
COMMANDS
move Move packages between pacman repositories
remove Remove packages from pacman repositories
update Update the pacman database as final release step
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} move extra-staging extra-testing libfoo libbar
$ ${COMMAND} remove core-testing libfoo libbar
$ ${COMMAND} update
_EOF_
}
pkgctl_db() {
if (( $# < 1 )); then
pkgctl_db_usage
exit 0
fi
# option checking
while (( $# )); do
case $1 in
-h|--help)
pkgctl_db_usage
exit 0
;;
move)
_DEVTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/db/move.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/move.sh
pkgctl_db_move "$@"
exit 0
;;
remove)
_DEVTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/db/remove.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/remove.sh
pkgctl_db_remove "$@"
exit 0
;;
update)
_DEVTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/db/update.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db/update.sh
pkgctl_db_update "$@"
exit 0
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
die "invalid command: %s" "$1"
;;
esac
done
}

64
src/lib/db/move.sh Normal file
View File

@ -0,0 +1,64 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${DEVTOOLS_INCLUDE_DB_MOVE_SH:-} ]] || return 0
DEVTOOLS_INCLUDE_DB_MOVE_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
# shellcheck source=src/lib/common.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
set -e
pkgctl_db_move_usage() {
local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [SOURCE_REPO] [TARGET_REPO] [PKGBASE]...
Move packages between binary repositories.
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} extra-staging extra-testing libfoo libbar
$ ${COMMAND} extra core libfoo libbar
_EOF_
}
pkgctl_db_move() {
local SOURCE_REPO=""
local TARGET_REPO=""
local PKGBASES=()
# option checking
while (( $# )); do
case $1 in
-h|--help)
pkgctl_db_move_usage
exit 0
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
break
;;
esac
done
if (( $# < 3 )); then
pkgctl_db_move_usage
exit 1
fi
SOURCE_REPO=$1
TARGET_REPO=$2
shift 2
PKGBASES+=("$@")
# shellcheck disable=SC2029
ssh "${PACKAGING_REPO_RELEASE_HOST}" db-move "${SOURCE_REPO}" "${TARGET_REPO}" "${PKGBASES[@]}"
}

69
src/lib/db/remove.sh Normal file
View File

@ -0,0 +1,69 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${DEVTOOLS_INCLUDE_DB_REMOVE_SH:-} ]] || return 0
DEVTOOLS_INCLUDE_DB_REMOVE_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
# shellcheck source=src/lib/common.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
set -e
pkgctl_db_remove_usage() {
local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS] [REPO] [PKGBASE]...
Remove packages from binary repositories.
OPTIONS
-a, --arch Override the architecture (disables auto-detection)
-h, --help Show this help text
EXAMPLES
$ ${COMMAND} core-testing libfoo libbar
$ ${COMMAND} --arch x86_64 core libyay
_EOF_
}
pkgctl_db_remove() {
local REPO=""
local ARCH=any
local PKGBASES=()
# option checking
while (( $# )); do
case $1 in
-h|--help)
pkgctl_db_remove_usage
exit 0
;;
-a|--arch)
(( $# <= 1 )) && die "missing argument for %s" "$1"
ARCH=$2
shift 2
;;
-*)
die "invalid argument: %s" "$1"
;;
*)
break
;;
esac
done
if (( $# < 2 )); then
pkgctl_db_remove_usage
exit 1
fi
REPO=$1
shift
PKGBASES+=("$@")
# shellcheck disable=SC2029
ssh "${PACKAGING_REPO_RELEASE_HOST}" db-remove "${REPO}" "${ARCH}" "${PKGBASES[@]}"
}

46
src/lib/db/update.sh Normal file
View File

@ -0,0 +1,46 @@
#!/hint/bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
[[ -z ${DEVTOOLS_INCLUDE_DB_UPDATE_SH:-} ]] || return 0
DEVTOOLS_INCLUDE_DB_UPDATE_SH=1
_DEVTOOLS_LIBRARY_DIR=${_DEVTOOLS_LIBRARY_DIR:-@pkgdatadir@}
# shellcheck source=src/lib/common.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/common.sh
set -e
pkgctl_db_update_usage() {
local -r COMMAND=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
cat <<- _EOF_
Usage: ${COMMAND} [OPTIONS]
Update the binary repository as final release step for packages that
have been transfered and staged on ${PACKAGING_REPO_RELEASE_HOST}.
OPTIONS
-h, --help Show this help text
EXAMPLES
$ ${COMMAND}
_EOF_
}
pkgctl_db_update() {
# option checking
while (( $# )); do
case $1 in
-h|--help)
pkgctl_db_update_usage
exit 0
;;
*)
die "invalid argument: %s" "$1"
;;
esac
done
ssh "${PACKAGING_REPO_RELEASE_HOST}" db-update
}

View File

@ -20,6 +20,7 @@ usage() {
COMMANDS
auth Authenticate with services like GitLab
db Pacman database modification for packge update, move etc
diff Compare package files using different modes
repo Manage Git packaging repositories and their configuration
@ -60,6 +61,14 @@ while (( $# )); do
pkgctl_auth "$@"
exit 0
;;
db)
_DEVTOOLS_COMMAND+=" $1"
shift
# shellcheck source=src/lib/auth.sh
source "${_DEVTOOLS_LIBRARY_DIR}"/lib/db.sh
pkgctl_db "$@"
exit 0
;;
diff)
_DEVTOOLS_COMMAND+=" $1"
shift