#!/bin/bash # Migrate package files from edge repo to stable repo without overwriting set -e BUILD_ROOT=$(realpath "${BASH_SOURCE[0]%/*}/..") source "$BUILD_ROOT/helpers/message-helpers.sh" source "$BUILD_ROOT/helpers/paths.sh" DRY_RUN=false while [[ $# -gt 0 ]]; do case $1 in --arch) ARCH="$2" update_arch_paths shift 2 ;; --dry-run) DRY_RUN=true shift ;; -h | --help) echo "Usage: $0 [OPTIONS]" echo "" echo "Options:" echo " --arch Target architecture (x86_64 or aarch64, default: x86_64)" echo " --dry-run Preview migration and cleanup without changing files" echo " -h, --help Show this help message" echo "" echo "What it does:" echo " 1) Rsync package files from edge -> stable (without overwriting existing files)" echo " 2) Run stable cleanup (keep 2 versions)" echo " 3) Update stable repository database" exit 0 ;; *) print_error "Unknown option: $1" exit 1 ;; esac done SOURCE_DIR="$BUILD_ROOT/pkgs.omarchy.org/edge/$ARCH" TARGET_DIR="$BUILD_ROOT/pkgs.omarchy.org/stable/$ARCH" print_header "Migrate Edge to Stable" print_info "Architecture: $ARCH" print_info "Source: $SOURCE_DIR" print_info "Target: $TARGET_DIR" if [[ ! -d "$SOURCE_DIR" ]]; then print_error "Source directory not found: $SOURCE_DIR" exit 1 fi mkdir -p "$TARGET_DIR" if [[ "$DRY_RUN" == true ]]; then print_warning "DRY RUN MODE - No changes will be made" fi print_info "Syncing package files from edge to stable (ignore existing)..." RSYNC_FLAGS="-av --ignore-existing --include=*/ --include=*.pkg.tar.* --exclude=*" if [[ "$DRY_RUN" == true ]]; then RSYNC_FLAGS="$RSYNC_FLAGS -n" fi # shellcheck disable=SC2086 rsync $RSYNC_FLAGS "$SOURCE_DIR/" "$TARGET_DIR/" print_info "Cleaning stable repository..." if [[ "$DRY_RUN" == true ]]; then "$BUILD_ROOT/bin/repo" clean --mirror stable --arch "$ARCH" --dry-run print_info "Skipping database update in dry run mode" else "$BUILD_ROOT/bin/repo" clean --mirror stable --arch "$ARCH" print_info "Updating stable repository database..." "$BUILD_ROOT/bin/repo" update --mirror stable --arch "$ARCH" fi print_success "Migration workflow complete"