]> git.ozlabs.org Git - next-scripts/commitdiff
fetch_trees: tidy up
authorStephen Rothwell <sfr@canb.auug.org.au>
Thu, 11 Jun 2015 07:07:03 +0000 (17:07 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 11 Jun 2015 07:07:03 +0000 (17:07 +1000)
fetch_trees

index af060cd0bfad3c75c098835e15c762f6a7da9f7a..3928469d2803e1affd391c228b847c26ec1c1874 100755 (executable)
@@ -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