🏡 index : quine-global-labs/mirror-get-aurora-dev-common.git

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