From: Stephen Rothwell Date: Thu, 11 Jun 2015 07:07:03 +0000 (+1000) Subject: fetch_trees: tidy up X-Git-Url: http://git.ozlabs.org/?a=commitdiff_plain;h=bd0ebd4086ee84c6bc364d2b9cbb26fabf8367d8;p=next-scripts fetch_trees: tidy up --- diff --git a/fetch_trees b/fetch_trees index af060cd..3928469 100755 --- a/fetch_trees +++ b/fetch_trees @@ -2,70 +2,59 @@ . "$(dirname $0)/common.sh" "" -origwd=$(pwd) - get_field() { grep -v '^#' $CTRL_FILE | awk -F '\t' '$3 == "'$1'" { print $'$2'; }' } -trees="$@" -[ "$trees" ] || - trees=$(grep -v '^#' $CTRL_FILE | awk -F '\t' '{ print $3 }') - -for name in $trees; do - type=$(get_field "$name" 2) - - echo $name: $type - if [ "$type" = "git" ]; then - git fetch "$name" - continue - fi +fetch_git() +{ + git fetch "$1" +} - if [ "$type" = "mmotm" ]; then - cd ../mmotm || { +fetch_mmotm() +{ + ( + cd ../mmotm && { echo "Cannot chdir to ../mmotm" 1>&2 - continue + return } rsync -az --partial --exclude .git\* --exclude broken-out.tar.gz --delete ozlabs.org::akpm/mmotm/. . || { git reset --hard - echo "Fetcing Andrew's tree failed" 1>&2 - cd "$origwd" - continue + echo "Fetcing mmotm failed" 1>&2 + return } git add -A . [ "$(git status --porcelain)" ] && git commit -m "$(head -n 1 .DATE)" - cd "$origwd" - continue - fi + ) +} - if [ "$type" = "quilt" ]; then - url=$(get_field "$name" 4) +fetch_quilt() +{ + ( + url=$(get_field "$1" 4) url=${url%/} # strip trailing / if necessary cd ../quilt || { echo "Cannot chdir to ../quilt" 1>&2 - continue + return } - [ -d "$name" ] || mkdir "$name" || { - echo "Cannot create quilt directory for $name" 1>&2 - cd "$origwd" - continue + [ -d "$1" ] || mkdir "$1" || { + echo "Cannot create quilt directory for $1" 1>&2 + return } - cd "$name" || { - echo "Cannot chdir to quilt directory for $name" 1>&2 - cd "$origwd" - continue + cd "$1" || { + echo "Cannot chdir to quilt directory for $1" 1>&2 + return } wget -N -nv --no-cache "$url/series" || { - echo "Wget of $name series file failed" 1>&2 + echo "Wget of $1 series file failed" 1>&2 cd .. - rm -rf "$name" - git checkout "$name" - cd "$origwd" - continue + rm -rf "$1" + git checkout "$1" + return } find * -type f | grep -v '^series$' | sort >.series.old if grep -q NEXT_PATCHES series; then @@ -76,24 +65,34 @@ for name in $trees; do sed -e 's/[ \t]*#.*$//' -e '/^[ \t]*$/d' | sort >.series.next [ -s .series.next ] && { - sed "s|^|$url/|" .series.next | - wget -N -nv --no-cache -i - || { - echo "Wget of series '$name' failed" 1>&2 + wget -N -nv --no-cache -B "$url/" -i .series.next || { + echo "Wget of series '$1' failed" 1>&2 cd .. - rm -rf "$name" - git checkout "$name" - cd "$origwd" - continue + rm -rf "$1" + git checkout "$1" + return } } comm -23 .series.old .series.next | xargs -r rm -f rm -f .series.old .series.next - cd "$origwd" - fi + ) +} + +trees="$@" +[ "$trees" ] || + trees=$(grep -v '^#' $CTRL_FILE | awk -F '\t' '{ print $3 }') + +for name in $trees; do + type=$(get_field "$name" 2) + + echo $name: $type + [ $(type -t "fetch_$type") = "function" ] && + fetch_$type "$name" done cd ../quilt git add -A . -git commit -v -a -m "$(date '+%F-%H:%M')" -e +[ "$(git status --porcelain)" ] && + git commit -v -a -m "$(date '+%F-%H:%M')" -e exit 0