]> git.ozlabs.org Git - next-scripts/blob - fetch_trees
update to_build_host a bit
[next-scripts] / fetch_trees
1 #!/bin/bash
2
3 tools_dir=$(dirname "$0")
4 # shellcheck source=/dev/null
5 . "$tools_dir/common.sh" ''
6
7 if [ "$1" = '-n' ]; then
8         shift
9         last=$(tail -n1 "$SHA1_FILE" | cut -f1 -d$'\t')
10         start_from=$(awk -F '\t' '/^[^#]/ && $3 == "'"$last"'" {
11                 do
12                         getline;
13                 while (/^#/ || $2 == "branch");
14                 print $3;
15                 exit 0;
16         }' "$CTRL_FILE")
17 fi
18
19 if [ "$1" = '-s' ]; then
20         shift
21         start_from="$1"
22         if [ -z "$start_from" ]; then
23                 printf '-s requires a start tree\n' 1>&2
24                 exit 1
25         fi
26         shift
27 fi
28
29 get_field()
30 {
31         awk -F '\t' '/^[^#]/ && $3 == "'"$1"'" { print $'"$2"'; }' "$CTRL_FILE"
32 }
33
34 fetch_git()
35 {
36         git fetch "$1"
37 }
38
39 fetch_mmotm()
40 (
41         if ! cd ../mmotm; then
42                 printf 'Cannot chdir to ../mmotm\n' 1>&2
43                 return
44         fi
45         if ! rsync -az --partial --exclude '.git*' \
46                         --exclude broken-out.tar.gz --delete \
47                         gandalf.ozlabs.org::akpm/mmotm/. .; then
48                 git reset --hard
49                 printf 'Fetcing mmotm failed\n' 1>&2
50                 return
51         fi
52         git add -A .
53         if [ "$(git status --porcelain)" ]; then
54                 git commit -m "$(head -n 1 .DATE)"
55         fi
56 )
57
58 trees="$*"
59 if ! [ "$trees" ]; then
60         trees=$(awk -F '\t' '/^[^#]/ && $2 != "branch" { print $3 }' "$CTRL_FILE")
61 fi
62
63 for name in $trees; do
64         if [ -n "$start_from" ]; then
65                 if [ "$name" = "$start_from" ]; then
66                         start_from=''
67                 else
68                         continue
69                 fi
70         fi
71
72         type=$(get_field "$name" 2)
73         if ! [ "$type" ]; then
74                 printf '%s: unknown tree\n' "$name" 1>&2
75                 continue
76         fi
77
78         printf '%s: %s\n' "$name" "$type"
79         fun="fetch_$type"
80         tfun=$(type -t "$fun")
81         if [ "$tfun" = 'function' ]; then
82                 "$fun" "$name"
83         fi
84 done
85
86 exit 0