#!/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