summaryrefslogtreecommitdiff
path: root/update-packages
blob: 3df1022b50bef98d3a9e2b7f7ceb136c0c2ca388 (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
#!/bin/bash

if [ $# -eq 0 ]; then
  [ -f "$0.lock" ] && kill -0 $(cat "$0.lock") && exit
  echo $$ > "$0.lock"
  GIT="git -C ${HOME}/.backend/archlinuxewe"
  $GIT pull --rebase >/dev/null
  $GIT submodule update >/dev/null
  commit=$($GIT rev-parse HEAD)
  if ! grep -qxF "${commit}" "$0.commit"; then
    $GIT diff "$(cat "$0.commit")" "${commit}" --name-status \
    | sed -n '
      s/^[AM]\s\+//
      T
      s@/PKGBUILD$@@
      p
    ' \
    | parallel -j50 "$0"
  fi
  "${0%/*}/package-status" > "${0%/*}/packages"
  echo "$commit" > "$0.commit"
  rm "$0.lock"
  exit
fi

if [ $# -gt 1 ]; then
  >&2 echo 'too many arguments'
  exit 1
fi

cd "${HOME}/.backend/archlinuxewe/$1"
if git archive HEAD -- .SRCINFO >/dev/null 2>&1; then
  exit
fi
makepkg --printsrcinfo > .SRCINFO