qubes-salt-stuff/setup.sh

70 lines
1.8 KiB
Bash
Raw Normal View History

2025-10-20 14:01:39 +02:00
#!/bin/bash
set -eo pipefail
# running in guest
guest_name="$(qubesdb-read /name)"
2025-10-20 15:11:01 +02:00
echo $(realpath ""$0"")
2025-10-20 14:01:39 +02:00
guest_repo_dir="$(dirname $(realpath ""$0""))"
echo $guest_repo_dir
2025-10-20 16:07:47 +02:00
2025-10-20 14:01:39 +02:00
pushd ${guest_repo_dir} >/dev/null
if git remote | grep -Fq 'dom0'; then
echo "(${guest_name}) remote 'dom0' already exists" >&2
else
echo "(${guest_name}) setting up remote 'dom0' to pull changes via bundle" >&2
2025-10-20 15:11:01 +02:00
echo "ehhh"
echo ${guest_repo_dir}
2025-10-20 17:12:03 +02:00
git remote add dom0 ${guest_repo_dir}/.bundles/qubes-mgmt-salt
2025-10-20 14:01:39 +02:00
fi
branch=$(git branch --show-current)
echo "(${guest_name}) creating bundle for branch '${branch}'" >&2
mkdir -p .bundles
2025-10-20 17:13:24 +02:00
git bundle create .bundles/qubes-mgmt-salt "${branch}"
2025-10-20 14:01:39 +02:00
popd >/dev/null
2025-10-20 14:56:05 +02:00
# piped to bash in dom0
cat <<-DOM0
set -eo pipefail
echo "(dom0) bringing bundle from qubes '${guest_name}'" >&2
2025-10-20 17:12:03 +02:00
qvm-run -p ${guest_name} "cat ${guest_repo_dir}/.bundles/qubes-mgmt-salt" </dev/null >/tmp/saltstuff.bundle
2025-10-20 14:56:05 +02:00
echo "{dom0} cloning into \$1; checking out branch '${branch}'" >&2
git clone /tmp/saltstuff.bundle -b "${branch}" "\$1"
pushd "\$1"
echo "{dom0} setting up remote '${guest_name}' to push/pull changes via bundle" >&2
2025-10-20 15:19:48 +02:00
mkdir ./.bundles
2025-10-20 17:12:03 +02:00
mv /tmp/saltstuff.bundle ./.bundles/qubes-mgmt-salt
2025-10-20 14:56:05 +02:00
git remote remove origin
2025-10-20 17:12:03 +02:00
git remote add "${guest_name}" \$(pwd)/.bundles/qubes-mgmt-salt
2025-10-20 14:56:05 +02:00
# ensure remote refs are present in each repo
git fetch "${guest_name}" # ensure remote refs are present in the dom0 repo
2025-10-20 17:13:24 +02:00
git bundle create .bundles/qubes-mgmt-salt main~1..main main
2025-10-20 14:56:05 +02:00
2025-10-20 17:12:03 +02:00
qvm-run -p "${guest_name}" "cat > ${guest_repo_dir}/.bundles/qubes-mgmt-salt" <.bundles/qubes-mgmt-salt
2025-10-20 14:56:05 +02:00
qvm-run -p "${guest_name}" "cd ${guest_repo_dir} && git fetch dom0" </dev/null
# configure pointer to guest VM and path
echo "GUEST=${guest_name}" > .bundle-env
echo "GUEST_REPO=${guest_repo_dir}" >> .bundle-env
echo "${dom0} has pulled!" >&2
popd
DOM0