Add Burrow forge infrastructure and tailnet control plane
This commit is contained in:
parent
d1ed826389
commit
de25f240d5
51 changed files with 9058 additions and 0 deletions
95
Scripts/_burrow-flake.sh
Executable file
95
Scripts/_burrow-flake.sh
Executable file
|
|
@ -0,0 +1,95 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
burrow_require_cmd() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
echo "missing required command: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
burrow_cleanup_flake_tmpdirs() {
|
||||
if [[ "${#BURROW_FLAKE_TMPDIRS[@]}" -eq 0 ]]; then
|
||||
return
|
||||
fi
|
||||
rm -rf "${BURROW_FLAKE_TMPDIRS[@]}"
|
||||
}
|
||||
|
||||
burrow_prepare_flake_ref() {
|
||||
local input="${1:-.}"
|
||||
|
||||
case "${input}" in
|
||||
path:*|git+*|github:*|tarball+*|http://*|https://*)
|
||||
printf '%s\n' "${input}"
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
|
||||
local resolved
|
||||
resolved="$(cd "${input}" && pwd)"
|
||||
|
||||
local cache_root="${HOME}/.cache/burrow"
|
||||
mkdir -p "${cache_root}"
|
||||
|
||||
local copy_root
|
||||
copy_root="$(mktemp -d "${cache_root}/flake-XXXXXX")"
|
||||
mkdir -p "${copy_root}/repo"
|
||||
|
||||
rsync -a \
|
||||
--delete \
|
||||
--exclude '.git' \
|
||||
--exclude '.direnv' \
|
||||
--exclude 'result' \
|
||||
--exclude 'burrow.sock' \
|
||||
--exclude 'node_modules' \
|
||||
--exclude 'target' \
|
||||
--exclude 'build' \
|
||||
"${resolved}/" "${copy_root}/repo/"
|
||||
|
||||
BURROW_FLAKE_TMPDIRS+=("${copy_root}")
|
||||
printf 'path:%s/repo\n' "${copy_root}"
|
||||
}
|
||||
|
||||
burrow_resolve_image_artifact() {
|
||||
local store_path="$1"
|
||||
|
||||
if [[ -f "${store_path}" ]]; then
|
||||
printf '%s\n' "${store_path}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ -d "${store_path}" ]]; then
|
||||
local candidate
|
||||
candidate="$(
|
||||
find "${store_path}" -type f \
|
||||
\( -name '*.raw' -o -name '*.raw.*' -o -name '*.img' -o -name '*.img.*' \) \
|
||||
| sort \
|
||||
| head -n1
|
||||
)"
|
||||
if [[ -n "${candidate}" ]]; then
|
||||
printf '%s\n' "${candidate}"
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "unable to locate disk image artifact under ${store_path}" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
burrow_detect_compression() {
|
||||
local artifact="$1"
|
||||
|
||||
case "${artifact}" in
|
||||
*.bz2)
|
||||
printf 'bz2\n'
|
||||
;;
|
||||
*.xz)
|
||||
printf 'xz\n'
|
||||
;;
|
||||
*.zst|*.zstd)
|
||||
printf 'zstd\n'
|
||||
;;
|
||||
*)
|
||||
printf '\n'
|
||||
;;
|
||||
esac
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue