X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=mirroring%2Fmirror.sh;h=95778da2c765586e43907fc6e5f62fc0c85ae77d;hb=54d3133eeb801a434a1237c2cde942cc45bb8539;hp=04c0817e163ac1149d4d659445ba826db6d7c457;hpb=838d6caf8e71aa79477c9d4f8e071a2b0a47d36c;p=build.git diff --git a/mirroring/mirror.sh b/mirroring/mirror.sh index 04c0817e..95778da2 100755 --- a/mirroring/mirror.sh +++ b/mirroring/mirror.sh @@ -1,32 +1,52 @@ #!/bin/bash -# $Id$ COMMAND=$(basename $0) DIRNAME=$(dirname $0) default_url="http://localhost/mirror/" -default_distro="f8" -all_distros="fc4 fc6 f7 f8 centos5" +default_distro="f14" +all_distros="f12 f14 f16 f18 f20" function check_distro () { local distro=$1; shift - if [ ! -d $DIRNAME/$distro ] ; then + if [ ! -d $DIRNAME/$distro/yum.repos.d ] ; then echo "Distro $distro not supported - skipped" return 1 fi return 0 } +function do_repo () { + local distro=$1; shift + sedargs="-e s,@MIRRORURL@,$URL,g" + [ -n "$GPGOFF" ] && sedargs="$sedargs -e "'s,gpgcheck\W*=\W*1,gpgcheck=0,' + sed $sedargs $DIRNAME/$distro/yum.repos.d/building.repo.in +} + function do_init () { local distro=$1; shift repo=/etc/vservers/.distributions/$distro/yum.repos.d/building.repo dir=/etc/vservers/.distributions/$distro/yum.repos.d/ if [ ! -d $dir ] ; then [ -n "$VERBOSE" ] && echo Creating dir $dir - mkdir -p -d $dir + mkdir -p $dir fi [ -n "$VERBOSE" ] && echo "Creating $repo" - sed -e "s,@MIRRORURL@,$URL," < $DIRNAME/$distro/building.repo.in > $repo + do_repo $distro > $repo +} + +function do_diff () { + local distro=$1; shift + repo=/etc/vservers/.distributions/$distro/yum.repos.d/building.repo + if [ ! -f $repo ] ; then + echo "Cannot find $repo" + else + would=/tmp/$COMMAND.$$ + do_repo $distro > $would + echo "==================== DIFF for $distro" '(current <-> would be)' + diff $repo $would + rm $would + fi } function do_display () { @@ -34,13 +54,13 @@ function do_display () { dir=/etc/vservers/.distributions/$distro/yum.repos.d/ if [ -d $dir ] ; then echo "====================" Contents of $dir - find $dir -name '*.repo' | xargs head --verbose --lines=1000 + ls $dir/*.repo 2> /dev/null | xargs head --verbose --lines=1000 else echo "====================" $dir does not exist fi } -function do_clear () { +function do_clean () { local distro=$1; shift repo=/etc/vservers/.distributions/$distro/yum.repos.d/building.repo [ -n "$VERBOSE" ] && echo Removing $repo @@ -58,20 +78,22 @@ function usage () { echo "Usage $COMMAND [options] " echo " a help to manage the yum.repos.d template in /etc/vservers/.distributions/" echo "Available commands" + echo " display: shows content (default if is missing)" + echo " diff: shows diff between current and what init would do" echo " init: creates /etc/vservers/.distributions//yum.repos.d/building.repo" - echo " default is to use mirror root at $default_url" - echo " use -u URL to specify another location" - echo " display: shows content" echo " clean: removes building.repo" echo " superclean: removes yum.repos.d altogether" echo "Options" + echo " -u URL to specify another location" + echo " default is to use mirror root at $default_url" echo " -f : defaults to $default_distro" echo " -a : runs on all distros $all_distros" + echo " -0 : turns off gpgcheck" echo " -v : verbose" echo "Examples" echo " $COMMAND -a display " echo " $COMMAND -a superclean" - echo " $COMMAND -a -u http://mirror.one-lab.org/ init" + echo " $COMMAND -a -u http://mirror.onelab.eu/ init" echo " $COMMAND -a display" exit 1 } @@ -79,14 +101,16 @@ function usage () { DISTROS="" URL="" VERBOSE="" +GPGOFF="" function main () { - while getopts "u:f:av" opt; do + while getopts "u:f:a0v" opt; do case $opt in u) URL=$OPTARG ;; f) DISTROS="$DISTROS $OPTARG" ;; a) DISTROS="$DISTROS $all_distros" ;; + 0) GPGOFF=true ;; v) VERBOSE=true ;; *) usage ;; esac @@ -101,9 +125,10 @@ function main () { 1) action=$1; shift case $action in + disp*) action=display ;; init*) action=init ;; - dis*) action=display ;; - clea*) action=clear ;; + diff*) action=diff ;; + clea*) action=clean ;; super*) action=superclean ;; *) usage ;; esac ;;