aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2021-02-07 15:50:10 +0100
committerDavid Runge <dave@sleepmap.de>2021-02-07 15:50:10 +0100
commitc328c206598185b05cd0f178ce09a776be61fb76 (patch)
tree87926caab0a48b277c045010f2775a71454bde0e
parentee6181780964dc4c7c5728da277151e22f7046f4 (diff)
downloaddotfiles-c328c206598185b05cd0f178ce09a776be61fb76.tar.gz
dotfiles-c328c206598185b05cd0f178ce09a776be61fb76.tar.bz2
dotfiles-c328c206598185b05cd0f178ce09a776be61fb76.tar.xz
dotfiles-c328c206598185b05cd0f178ce09a776be61fb76.zip
Add packaging helper functions
.zsh.functions/packaging.zsh: Add functions useful for packaging, such as for signing packages or adding packages to a database and for sshfs mounting.
-rw-r--r--.zsh.functions/packaging.zsh86
1 files changed, 86 insertions, 0 deletions
diff --git a/.zsh.functions/packaging.zsh b/.zsh.functions/packaging.zsh
new file mode 100644
index 0000000..72627c7
--- /dev/null
+++ b/.zsh.functions/packaging.zsh
@@ -0,0 +1,86 @@
+#!/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"
+}