chiark / gitweb /
Merge branch 'master' into verbose-rewrite
[fdroidserver.git] / fd-commit
1 #!/bin/bash
2
3 # Commits updates to apps, allowing you to edit the commit messages
4
5 commands=()
6
7 while read line; do
8         if [[ "$line" == *M*metadata/*.txt ]]; then
9                 file=${line##* }
10                 
11                 id=${file##*/}
12                 id=${id%.txt*}
13                 if [ $# -gt 0 ]; then
14                         found=false
15                         for arg in "$@"; do
16                                 if [ "$id" == "$arg" ]; then
17                                         found=true
18                                         break
19                                 fi
20                         done
21                         $found || continue
22                 fi
23
24                 [ -d metadata/$id ] && extra=metadata/$id
25
26                 while read l; do
27                         if [[ "$l" == "Auto Name:"* ]]; then
28                                 name=${l##*:}
29                                 break
30                         fi
31                 done < "$file"
32
33                 [ -n "$name" ] && id="$name ($id)"
34
35                 newbuild=0
36                 while read l; do
37                         if [[ "$l" == "+Build:"* ]]; then
38                                 newbuild=1
39                                 build=${l#*:}
40                                 version=${build%%,*}
41                                 build=${build#*,}
42                                 vercode=${build%%,*}
43                         fi
44                 done < <(git diff HEAD -- "$file")
45
46                 if [ $newbuild -eq 0 ]; then
47                         message="$id:"
48                 else
49                         message="Update $id to $version ($vercode)"
50                 fi
51
52                 commands+=("git commit -m '$message' -e -v -- $file $extra")
53         fi
54 done < <(git status --porcelain)
55
56 for cmd in "${commands[@]}"; do
57         eval "$cmd"
58 done
59