[pacman-dev] Fwd: [PATCH] rankmirrors: Add a --repo option to target a specific repo
Dan McGee
dpmcgee at gmail.com
Fri Mar 26 03:26:43 CET 2010
On Thu, Mar 25, 2010 at 12:45 PM, Daenyth Blank <daenyth+arch at gmail.com> wrote:
> ---
> scripts/rankmirrors.sh.in | 20 +++++++++++++++-----
> 1 files changed, 15 insertions(+), 5 deletions(-)
>
> diff --git a/scripts/rankmirrors.sh.in b/scripts/rankmirrors.sh.in
> index d5cbadd..9838a2a 100644
> --- a/scripts/rankmirrors.sh.in
> +++ b/scripts/rankmirrors.sh.in
> @@ -35,6 +35,7 @@ usage() {
> echo " -t, --times only output mirrors and their response times"
> echo " -u, --url test a specific url"
> echo " -v, --verbose be verbose in ouptut"
> + echo " -r, --repo specify a specific repo name instead of guessing"
> exit 0
> }
>
> @@ -69,13 +70,18 @@ ARCH="$(uname -m)"
> getfetchurl() {
> local strippedurl="${1%/}"
>
> - local replacedurl="${strippedurl//'$repo'/core}"
> - replacedurl="${replacedurl//'$arch'/$ARCH}"
> + local replacedurl="${replacedurl//'$arch'/$ARCH}"
> + if [[ $TARGETREPO = auto ]]; then
Use quotes around vars and text strings please.
> + replacedurl="${strippedurl//'$repo'/core}"
> + local tmp="${replacedurl%/*}"
> + tmp="${tmp%/*}"
>
> - local tmp="${replacedurl%/*}"
> - tmp="${tmp%/*}"
> + local reponame="${tmp##*/}"
> + else
> + replacedurl="${strippedurl//'$repo'/$TARGETREPO}"
> + local reponame="$TARGETREPO"
> + fi
>
> - local reponame="${tmp##*/}"
> if [[ -z $reponame || $reponame = $replacedurl ]]; then
> echo "fail"
> else
> @@ -119,6 +125,7 @@ while [[ $1 ]]; do
> times) TIMESONLY=1 ; shift ;;
> verbose) VERBOSE=1 ; shift ;;
> url) CHECKURL=1; [[ $2 ]] || err "Must specify
> url."; URL="$2"; shift 2;;
> + repo) [[ $2 ]] || err "Must specify repo
> name."; TARGETREPO="$2"; shift 2;;
> *) err "\`$1' is an invalid argument."
> esac
> elif [[ ${1:0:1} = - ]]; then
> @@ -136,6 +143,7 @@ while [[ $1 ]]; do
> t) TIMESONLY=1 ;;
> v) VERBOSE=1 ;;
> u) CHECKURL=1; [[ $2 ]] || err
> "Must specify url."; URL="$2"; snum=2;;
> + r) [[ $2 ]] || err "Must
> specify repo name."; TARGETREPO="$2"; snum=2;;
> n) [[ $2 ]] || err "Must
> specify number." ; NUM="$2" ; snum=2;;
> *) err "\`-$1' is an invald argument." ;;
> esac
> @@ -156,6 +164,7 @@ done
> [[ $NUM ]] || NUM=0
> [[ $FILE && $CHECKURL ]] && err "Cannot specify a url and mirrorfile."
> [[ $FILE || $CHECKURL || $STDIN ]] || err "Must specify url,
> mirrorfile, or stdin."
> +[[ $TARGETREPO ]] || TARGETREPO=auto
Quotes again.
>
> # Single url handling
> if [[ $CHECKURL ]]; then
> @@ -182,6 +191,7 @@ for line in "${linearray[@]}"; do
>
> # Getting values and times and such
> server="${line#*= }"
> + server=$(echo $server | awk '{print $1}')
What is this for? I'm suspecting it is an attempt at comment stripping
or something, but
Server = http://example.org/path/to/repo# you lose
will still bite you. And I don't think the call to an external program
is necessary here. Stay in shell with maybe something like
# strip the longest substring off the end starting with '#'
server="${server%%#*}"
> url="$(getfetchurl "$server")"
> [[ $url = fail ]] && err "url \`$URL' is malformed."
> time=$(gettime "$url")
> --
> 1.7.0
More information about the pacman-dev
mailing list