mirror-get-aurora-dev-common/system_files/shared/usr/bin/ublue-rollback-helper
inffy b826eaa786
feat(rebase-helper): add testing stream (#214)
* feat(rebase-helper): add testing stream

* add docs link to the end
2026-06-17 14:39:12 +00:00

54 lines
2.1 KiB
Bash
Executable file

#!/usr/bin/bash
IMAGE_INFO="/usr/share/ublue-os/image-info.json"
IMAGE_NAME="$(jq -r '."image-name"' < "$IMAGE_INFO")"
IMAGE_TAG="$(jq -r '."image-tag"' < "$IMAGE_INFO")"
IMAGE_VENDOR="$(jq -r '."image-vendor"' < "$IMAGE_INFO")"
IMAGE_REGISTRY="ghcr.io/${IMAGE_VENDOR}"
set -euo pipefail
function list_tags() {
local filter="$1"
skopeo list-tags "docker://${IMAGE_REGISTRY}/${IMAGE_NAME}" \
| jq -r '.Tags[]' \
| grep -E --color=never "$filter" \
| sort -rV | head -n 31
}
echo -ne "Current image: ${IMAGE_NAME}:${IMAGE_TAG}\n"
declare -a IMAGES
IMAGES=(aurora aurora-dx aurora-nvidia-open aurora-dx-nvidia-open)
IMAGE_NAME="$(gum choose --header="Select your image:" "${IMAGES[@]}" cancel)"
[[ "$IMAGE_NAME" == "cancel" || "$IMAGE_NAME" == "" ]] && exit 0
base_image="${IMAGE_REGISTRY}/${IMAGE_NAME}"
declare -a CHANNELS
CHANNELS=(stable latest testing)
echo -e "\nstable: The default selection (weekly builds) with gated CoreOS kernel\nlatest: For enthusiast, stock Fedora kernel and latest updates\ntesting: Get a sneak peak into future Aurora builds and Fedora versions\n\nSee our docs: https://docs.getaurora.dev/guides/release-streams\n"
channel_choice="$(gum choose "${CHANNELS[@]}" cancel)"
[[ "$channel_choice" == "cancel" || "$channel_choice" == "" ]] && exit 0
channel_selected=${channel_choice%% *}
rebase_target="${base_image}:${channel_selected}"
if gum confirm --default=no "Would you like to pin to a specific build date?" ; then
echo "Fetching available tags for channel: $channel_selected..."
filter="${channel_selected}.[0-9]{8}"
valid_tags=( $(list_tags "$filter") )
[[ "${#valid_tags[@]}" -eq 0 ]] && { echo "No tags found for $filter"; exit 1; }
selected_tag="$(gum choose cancel "${valid_tags[@]}")"
[[ "$selected_tag" == "cancel" || "$selected_tag" == "" ]] && exit 0
rebase_target="${base_image}:${selected_tag}"
fi
gum confirm "Confirm rebase to ${rebase_target}?" || exit 1
if grep -q "^LockLayering=true" /etc/rpm-ostreed.conf; then
pkexec bootc switch --enforce-container-sigpolicy "${rebase_target}"
else
rpm-ostree rebase ostree-image-signed:docker://"${rebase_target}"
fi