aboutsummaryrefslogtreecommitdiffstats
path: root/.config/zsh/functions/packaging.zsh
diff options
context:
space:
mode:
Diffstat (limited to '.config/zsh/functions/packaging.zsh')
-rw-r--r--.config/zsh/functions/packaging.zsh133
1 files changed, 133 insertions, 0 deletions
diff --git a/.config/zsh/functions/packaging.zsh b/.config/zsh/functions/packaging.zsh
new file mode 100644
index 0000000..69d6df4
--- /dev/null
+++ b/.config/zsh/functions/packaging.zsh
@@ -0,0 +1,133 @@
+#!/usr/bin/env zsh
+
+pkg_sign() {
+ # sign one or more packages with the key setup in makepkg.conf
+ local _pkg_list=()
+ local _arg _pkg
+
+ # get GPGKEY from makepkg.conf
+ if [[ -f /etc/makepkg.conf ]]; then
+ source /etc/makepkg.conf 2>/dev/null 1>&2
+ fi
+ if [[ -f "${HOME}/.makepkg.conf" ]]; then
+ source "${HOME}/.makepkg.conf" 2>/dev/null 1>&2
+ fi
+ if [[ -z "${GPGKEY}" ]]; then
+ 1>&2 printf "No GPGKEY is setup in makepkg.conf!\n"
+ return 1
+ fi
+
+ # check whether file(s) exists or globs exist
+ for _arg in "$@"; do
+ if [[ -f "${_arg}" ]] && [[ "${_arg}" == *.pkg.tar.zst ]]; then
+ _pkg_list+=( "${_arg}" )
+ fi
+ if [[ -n *"${_arg}"*.pkg.tar.zst(#qN) ]]; then
+ _pkg_list+=( *"${_arg}"*.pkg.tar.zst )
+ fi
+ done
+
+ # sign package(s)
+ if (( ${#_pkg_list} > 0 )); then
+ for _pkg in "${_pkg_list[@]}"; do
+ gpg --detach-sign --local-user "${GPGKEY}" "$_pkg"
+ done
+ return 0
+ else
+ 1>&2 printf "No package can be found for signing!\n"
+ return 1
+ fi
+}
+
+pkg_add() {
+ # sign one or more packages with the key setup in makepkg.conf
+ local _pkg_list=()
+ local _arg
+
+ # get GPGKEY from makepkg.conf
+ if [[ -f /etc/makepkg.conf ]]; then
+ source /etc/makepkg.conf 2>/dev/null 1>&2
+ fi
+ if [[ -f "${HOME}/.makepkg.conf" ]]; then
+ source "${HOME}/.makepkg.conf" 2>/dev/null 1>&2
+ fi
+ if [[ -z "${GPGKEY}" ]]; then
+ 1>&2 printf "No GPGKEY is setup in makepkg.conf!\n"
+ return 1
+ fi
+
+ # check whether file(s) exists or globs exist
+ for _arg in "$@"; do
+ if [[ -f "${_arg}" ]] && [[ "$_arg" == *.pkg.tar.zst ]]; then
+ _pkg_list+=( "${_arg}" )
+ fi
+ if [[ -n *"${_arg}"*.pkg.tar.zst(#qN) ]]; then
+ _pkg_list+=( *"${_arg}"*.pkg.tar.zst )
+ fi
+ done
+
+ # add package(s) to repo database
+ if (( ${#_pkg_list} > 0 )); then
+ repo-add -R -s -k "${GPGKEY}" "$(dirname "${_pkg_list[1]}")"/*.db.tar.gz "${_pkg_list[@]}"
+ return 0
+ else
+ 1>&2 printf "No packages to add can be found!\n"
+ return 1
+ fi
+}
+
+sshfs_mount() {
+ mkdir -p "${HOME}/mounts/$1"
+ sshfs -C -F "${HOME}/.ssh/config" "$1": "${HOME}/mounts/$1"
+}
+
+sshfs_umount() {
+ fusermount3 -u "${HOME}/mounts/$1"
+}
+
+nvc() {
+ local config
+ if [[ -z "$1" ]]; then
+ 1>&2 printf "A repository name needs to be specified as the first argument.\n"
+ return 1
+ fi
+ config="${HOME}/.config/nvchecker/$1.toml"
+ if [[ ! -f "${config}" ]]; then
+ 1>&2 printf "The configuration does not exist: %s\n" "${config}"
+ return 1
+ fi
+ if ! command -v nvchecker > /dev/null; then
+ 1>&2 printf "The required application 'nvchecker' can not be found.\n"
+ return 1
+ fi
+ nvchecker -c "${config}"
+}
+
+nvt() {
+ local config package
+ if [[ -z "$1" ]]; then
+ 1>&2 printf "A repository name needs to be specified as the first argument.\n"
+ return 1
+ fi
+ config="${HOME}/.config/nvchecker/$1.toml"
+ if [[ ! -f "${config}" ]]; then
+ 1>&2 printf "The configuration does not exist: %s\n" "${config}"
+ return 1
+ fi
+
+ if [[ -z "$2" ]]; then
+ 1>&2 printf "A package name needs to be specified as the second argument.\n"
+ return 1
+ fi
+ package="${2}"
+ if ! grep "${package}" "${config}" > /dev/null; then
+ 1>&2 printf "The package %s can not be found in the configuration: %s\n" "${package}" "${config}"
+ return 1
+ fi
+
+ if ! command -v nvtake > /dev/null; then
+ 1>&2 printf "The required application 'nvtake' can not be found.\n"
+ return 1
+ fi
+ nvtake -c "${config}" "${package}"
+}