#!/usr/bin/env bash # Script to partly automate updating this package # Based on upd.sh from abf.io/import/ha_cluster_exporter # sudo dnf install /usr/bin/rpmbuild /usr/bin/spectool /usr/bin/rpmspec /usr/bin/git /usr/bin/curl /usr/bin/abf /usr/bin/jq /usr/bin/sed /usr/bin/tar /usr/bin/xz set -x set -e set -f set -u spec="$PWD"/spoofdpi.spec dir0="$PWD" old_version="$(rpmspec -q --srpm --qf '%{version}' "$spec")" latest_version="$(curl --silent "https://api.github.com/repos/xvzc/SpoofDPI/releases/latest" | jq '.tag_name' | sed -e 's,",,g' -e 's,^v,,')" [ -n "$latest_version" ] if [ "$old_version" = "$latest_version" ]; then echo "No updates" exit 0 fi sed -E -i'' "$spec" \ -e "s,^Version:.+,Version:\t${latest_version}," \ -e "s,^Release:.+,Release:\t1," \ -- source0="$(rpmspec --parse "$spec" | grep -i ^Source0: | awk -F '/' '{print $NF}')" spectool --get-files --source 0 "$spec" [ -f "$source0" ] patches_ok=0 tmp="$(mktemp --tmpdir=/tmp -d)" trap 'if [ "$patches_ok" = 1 ]; then rm -fr "$tmp"; fi' EXIT pushd "$tmp" tar -xf "$dir0"/"$source0" pushd SpoofDPI-"$latest_version" go mod vendor popd XZ_OPT="-T0 -v" tar cJf spoofdpi-"$latest_version"-go-mod-vendor.tar.xz SpoofDPI-"$latest_version"/vendor mv spoofdpi-"$latest_version"-go-mod-vendor.tar.xz "$dir0" popd rm -f .abf.yml abf put -n # check appliability of patches rpmbuild --define "_sourcedir $PWD" --define "_builddir $tmp" -bp "$spec" && patches_ok=1 PAGER='' git diff # can be copypasted for a commit message echo "upd: $old_version -> $latest_version" if [ "$patches_ok" = 0 ]; then echo "PATCHES require attention!" fi