61 lines
1.5 KiB
Bash
Executable File
61 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
PILL_REPO="$HOME/gentoo-pill"
|
|
HOSTNAME_TAG="${HOSTNAME:-$(hostname)}"
|
|
|
|
# remote trigger
|
|
SERVER_USER="mira"
|
|
SERVER_IP="192.168.102.148"
|
|
SERVER_BINHOST_DIR="~/gentoo-pill"
|
|
|
|
HOST_DIR="$PILL_REPO/hosts/$HOSTNAME_TAG"
|
|
echo "> Syncing configuration for: $HOSTNAME_TAG"
|
|
|
|
if [[ -d "$PILL_REPO/.git" ]]; then
|
|
git -C "$PILL_REPO" pull --rebase --autostash
|
|
else
|
|
echo "Error: repo not found at $PILL_REPO"
|
|
exit 1
|
|
fi
|
|
|
|
mkdir -p "$HOST_DIR"
|
|
|
|
echo "> Syncing World file component..."
|
|
cp /var/lib/portage/world "$HOST_DIR/world"
|
|
|
|
CONFIGS=(package.use package.accept_keywords package.license package.mask package.unmask package.env repos.conf)
|
|
|
|
echo "> Syncing Portage components..."
|
|
for type in "${CONFIGS[@]}"; do
|
|
local_src="/etc/portage/$type"
|
|
repo_dest="$HOST_DIR/$type"
|
|
|
|
# rm -rf "$repo_dest"
|
|
|
|
if [[ -e "$local_src" ]]; then
|
|
rsync -a --delete --copy-links "$local_src" "$HOST_DIR/"
|
|
else
|
|
rm -rf "$repo_dest"
|
|
fi
|
|
done
|
|
|
|
echo "> Pushing..."
|
|
cd "$PILL_REPO"
|
|
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
git add .
|
|
git commit -m "sync: $HOSTNAME_TAG $(date +'%Y-%m-%d %H:%M')"
|
|
git push
|
|
echo "> Changes pushed successfully."
|
|
|
|
# trigger the remote
|
|
if [[ -n "$SERVER_IP" ]]; then
|
|
echo "> Triggering binhost build @ [$SERVER_IP]..."
|
|
ssh "${SERVER_USER}@${SERVER_IP}" \
|
|
"cd ${SERVER_BINHOST_DIR} && ./binhost.sh"
|
|
fi
|
|
else
|
|
echo "> No changes, binhost trig skipped"
|
|
fi
|