qubes-salt-stuff/setup.sh
2025-10-20 15:19:48 +02:00

72 lines
1.8 KiB
Bash
Executable file

#!/bin/bash
set -eo pipefail
# running in guest
echo "hmmm"
guest_name="$(qubesdb-read /name)"
echo "hmmmmmm"
echo $(realpath ""$0"")
guest_repo_dir="$(dirname $(realpath ""$0""))"
echo $guest_repo_dir
echo "hmmmmmm"
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
echo "ehhh"
echo ${guest_repo_dir}
git remote add dom0 ${guest_repo_dir}/.bundles/dom0.bundle
fi
branch=$(git branch --show-current)
echo "(${guest_name}) creating bundle for branch '${branch}'" >&2
mkdir -p .bundles
git bundle create .bundles/domu.bundle "${branch}"
popd >/dev/null
# piped to bash in dom0
cat <<-DOM0
set -eo pipefail
echo "(dom0) bringing bundle from qubes '${guest_name}'" >&2
qvm-run -p ${guest_name} "cat ${guest_repo_dir}/.bundles/domu.bundle" </dev/null >/tmp/saltstuff.bundle
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
echo "ehhh"
mkdir ./.bundles
mv /tmp/saltstuff.bundle ./.bundles/domu.bundle
git remote remove origin
git remote add "${guest_name}" \$(pwd)/.bundles/domu.bundle
# ensure remote refs are present in each repo
git fetch "${guest_name}" # ensure remote refs are present in the dom0 repo
git bundle create .bundles/dom0.bundle main~1..main main
qvm-run -p "${guest_name}" "cat > ${guest_repo_dir}/.bundles/dom0.bundle" <.bundles/dom0.bundle
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