#!/bin/bash set -e BASE_URL="https://repo.rakuos.org/dists" COMPONENTS=(main contrib non-free) ARCH=$(dpkg --print-architecture) APT_LIST_DIR="/var/lib/apt/lists" SOURCES_FILE="/etc/apt/sources.list.d/rakuos.sources" # Parse suites from rakuos.sources if [[ ! -f "$SOURCES_FILE" ]]; then echo "Error: $SOURCES_FILE not found" exit 1 fi # Extract suites from the file (handles both single and multi-line format) SUITES=$(grep -E "^Suites:" "$SOURCES_FILE" | sed 's/^Suites://;s/,/ /g' | xargs) if [[ -z "$SUITES" ]]; then echo "Error: No suites found in $SOURCES_FILE" exit 1 fi for SUITE in $SUITES; do for comp in "${COMPONENTS[@]}"; do COMP_URL="$BASE_URL/$SUITE/$comp/dep11" YAML_FILE="$COMP_URL/Components-$ARCH.yml.gz" ICON_FILE48="$COMP_URL/icons-48x48.tar.gz" ICON_FILE64="$COMP_URL/icons-64x64.tar.gz" ICON_FILE128="$COMP_URL/icons-128x128.tar.gz" # DEP-11 YAML OUT_FILE="$APT_LIST_DIR/repo.rakuos.org_dists_${SUITE}_${comp}_dep11_Components-${ARCH}.yml.gz" if wget -q -O "$OUT_FILE" "$YAML_FILE"; then if ! gzip -t "$OUT_FILE" 2>/dev/null; then rm -f "$OUT_FILE" fi fi # 48px icons OUT_FILE="$APT_LIST_DIR/repo.rakuos.org_dists_${SUITE}_${comp}_dep11_icons-48x48.tar.gz" if wget -q -O "$OUT_FILE" "$ICON_FILE48"; then if ! tar -tzf "$OUT_FILE" >/dev/null 2>&1; then rm -f "$OUT_FILE" fi fi # 64px icons OUT_FILE="$APT_LIST_DIR/repo.rakuos.org_dists_${SUITE}_${comp}_dep11_icons-64x64.tar.gz" if wget -q -O "$OUT_FILE" "$ICON_FILE64"; then if ! tar -tzf "$OUT_FILE" >/dev/null 2>&1; then rm -f "$OUT_FILE" fi fi # 128px icons OUT_FILE="$APT_LIST_DIR/repo.rakuos.org_dists_${SUITE}_${comp}_dep11_icons-128x128.tar.gz" if wget -q -O "$OUT_FILE" "$ICON_FILE128"; then if ! tar -tzf "$OUT_FILE" >/dev/null 2>&1; then rm -f "$OUT_FILE" fi fi done done # Refresh AppStream cache if command -v appstreamcli >/dev/null; then echo "Refreshing AppStream..." appstreamcli refresh --source=os >/dev/null 2>&1 || true fi echo "All suites processed."