#!/bin/bash

ver="f10"
repos="base updates"

f10x86base="rsync://mirrors.tummy.com/fedora/linux/releases/10/Everything/i386/os/"
f10x86updates="rsync://mirrors.tummy.com/fedora/linux/updates/10/i386/"
rawhidex86="rsync://mirrors.tummy.com/fedora/linux/development/i386/os/"

f10x86base_repodir="/data/repos.d/F10-x86-base"
f10x86updates_repodir="/data/repos.d/F10-x86-updates"
rawhidex86_repodir="/data/repos.d/rawhide-x86-base"

sync_repo() {
    repo=$1
    repodir=$2
    
    if [ ! -d $repodir ]; then
        mkdir -p $repodir
    fi    
    
    echo 
    echo 
    echo "=== Synchronizing ${repo} ==="
    echo "=== into ${repodir} ==="
    echo 

    rsync -avz ${repo}/Packages/ ${repodir}
}

sync_comps() {
    repo=$1
    repodir=$2
    
    if [ ! -d $repodir ]; then
        mkdir -p $repodir
    fi    
    
    echo 
    echo 
    echo "=== Getting comps.xml from ${repo}/repodata/ ==="
    echo "=== into ${repodir} ==="
    echo 

    comps_file=$(rsync --list-only ${repo}/repodata/*comps*xml | awk -F' ' '{ print $3 " " $4 " " $5 }'| sort -r | head -1 | cut -d" " -f3)
    rsync -avz ${repo}/repodata/${comps_file} ${repodir}/comps.xml

}

create_repo() {
    createrepo="/usr/bin/createrepo ."
    if [ $3 == "comps" ]; then
        createrepo="/usr/bin/createrepo -g ./comps.xml ."
    fi


    echo 
    echo 
    echo "=== Running ${createrepo} ==="
    echo 

    pushd ${repodir}
    ${createrepo}
    popd

}

case "$1" in
    base)
        sync_repo $f10x86base $f10x86base_repodir
        sync_comps $f10x86base $f10x86base_repodir
        create_repo $f10x86base $f10x86base_repodir comps
    ;;
    updates)
        sync_repo $f10x86updates $f10x86updates_repodir
        create_repo $f10x86updates $f10x86updates_repodir
    ;;
    rawhide)
        sync_repo $rawhidex86 $rawhidex86_repodir
        sync_comps $rawhidex86 $rawhidex86_repodir
        create_repo $rawhidex86 $rawhidex86_repodir comps
    ;;
    all)
        sync_repo $f10x86base $f10x86base_repodir
        sync_repo $rawhidex86 $rawhidex86_repodir
        sync_repo $f10x86updates $f10x86updates_repodir
        sync_comps $f10x86base $f10x86base_repodir
        sync_comps $rawhidex86 $rawhidex86_repodir
        create_repo $f10x86base $f10x86base_repodir comps
        create_repo $rawhidex86 $rawhidex86_repodir comps
        create_repo $f10x86updates $f10x86updates_repodir
    ;;
    *)
        echo "Usage: $0 base|updates|rawhide|all"
        exit 1
    ;;
esac
        


