]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
add the control file to common.sh
[next-scripts] / fetch_trees
1 #!/bin/bash
2
3 . "$(dirname $0)/common.sh" ""
4
5 origwd=$(pwd)
6
7 get_field()
8 {
9         grep -v '^#' $CTRL_FILE |
10                 awk -F '\t' '$3 == "'$1'" { print $'$2'; }'
11 }
12
13 trees="$@"
14 [ "$trees" ] ||
15         trees=$(grep -v '^#' $CTRL_FILE | awk -F '\t' '{ print $3 }')
16
17 for name in $trees; do
18         type=$(get_field "$name" 2)
19
20         echo $name: $type
21         if [ "$type" = "git" ]; then
22                 git fetch "$name"
23                 continue
24         fi
25
26         if [ "$type" = "mmotm" ]; then
27                 cd ../../mmotm/text || {
28                         echo "Cannot chdir to ../../mmotm/text" 1>&2
29                         continue
30                 }
31                 rsync -avHP --exclude .git --exclude broken-out.tar.gz --delete ozlabs.org:~akpm/public_html/mmotm/. .
32                 cd "$origwd"
33                 continue
34         fi
35
36         if [ "$type" = "quilt" ]; then
37                 url=$(get_field "$name" 4)
38                 url=${url%/}    # strip trailing / if necessary
39
40                 cd ../quilt || {
41                         echo "Cannot chdir to ../quilt" 1>&2
42                         continue
43                 }
44                 [ -d "$name" ] || mkdir "$name" || {
45                         echo "Cannot create quilt directory for $name" 1>&2
46                         cd "$origwd"
47                         continue
48                 }
49                 cd "$name" || {
50                         echo "Cannot chdir to quilt directory for $name" 1>&2
51                         cd "$origwd"
52                         continue
53                 }
54                 wget -N -nv --no-cache "$url/series" || {
55                         echo "Wget of $name series file failed" 1>&2
56                         cd ..
57                         rm -rf "$name"
58                         git checkout "$name"
59                         cd "$origwd"
60                         continue
61                 }
62                 find * -type f | grep -v '^series$' | sort >.series.old
63                 if grep -q NEXT_PATCHES series; then
64                         sed -n '/NEXT_PATCHES_START/,/NEXT_PATCHES_END/p' series
65                 else
66                         cat series
67                 fi |
68                         sed -e 's/[ \t]*#.*$//' -e '/^[ \t]*$/d' |
69                         sort >.series.next
70                 [ -s .series.next ] && {
71                         sed "s|^|$url/|" .series.next |
72                                         wget -N -nv --no-cache -i - || {
73                                 echo "Wget of series '$name' failed" 1>&2
74                                 cd ..
75                                 rm -rf "$name"
76                                 git checkout "$name"
77                                 cd "$origwd"
78                                 continue
79                         }
80                 }
81                 comm -23 .series.old .series.next | xargs -r rm -f
82                 rm -f .series.old .series.next
83                 cd "$origwd"
84         fi
85 done
86
87 cd ../quilt
88 git add -A .
89 git commit -v -a -m "$(date '+%F-%H:%M')" -e
90
91 exit 0