46 lines
1.5 KiB
Bash
Executable file
46 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
set -x
|
|
|
|
export NIX_PATH="nixpkgs=https://github.com/nixos/nixpkgs/archive/nixos-unstable.tar.gz"
|
|
|
|
function update() {
|
|
pkg="${1}"
|
|
|
|
metadata="${pkg}/metadata.nix"
|
|
pkgname="$(basename "${pkg}")"
|
|
|
|
branch="$(nix-instantiate "${metadata}" --eval --json -A branch | jq -r .)"
|
|
rev="$(nix-instantiate "${metadata}" --eval --json -A rev | jq -r .)"
|
|
date="$(nix-instantiate "${metadata}" --eval --json -A revdate | jq -r .)"
|
|
sha256="$(nix-instantiate "${metadata}" --eval --json -A sha256 | jq -r .)"
|
|
url="$(nix-instantiate "${metadata}" --eval --json -A url | jq -r .)"
|
|
skip="$(nix-instantiate "${metadata}" --eval --json -A skip || echo "false" | jq -r .)"
|
|
|
|
newdate="${date}"
|
|
if [[ "${skip}" != "true" ]]; then
|
|
repo="$(nix-instantiate "${metadata}" --eval --json -A repo_git | jq -r .)"
|
|
newrev="$(git ls-remote "${repo}" "${branch}" | awk '{ print $1}')"
|
|
|
|
if [[ "${rev}" != "${newrev}" ]]; then
|
|
# Update RevDate
|
|
d="$(mktemp -d)"
|
|
git clone -b "${branch}" --single-branch --depth=1 "${repo}" "${d}"
|
|
newdate="$(cd "${d}"; git log --format=%ci --max-count=1)"
|
|
rm -rf "${d}"
|
|
|
|
# Update Sha256
|
|
newsha256="$(nix-prefetch-url --unpack "${url}")"
|
|
|
|
# TODO: do this with nix instead of sed?
|
|
sed -i "s/${rev}/${newrev}/" "${metadata}"
|
|
sed -i "s/${date}/${newdate}/" "${metadata}"
|
|
sed -i "s/${sha256}/${newsha256}/" "${metadata}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
for p in imports/*; do
|
|
update "${p}"
|
|
done
|