aboutsummaryrefslogtreecommitdiffstats
path: root/.zsh.functions/packaging.zsh
blob: 72627c769354934330b179d07c60089dff146940 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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"
}