chiark / gitweb /
Easier multiline strings
[fdroidserver.git] / fd-commit
index 9a8b51f3ee5a2e09ead36b025d8609a02033504c..e4012de58838535d0bd1da8186ef026aaa003e57 100755 (executable)
--- a/fd-commit
+++ b/fd-commit
 commands=()
 
 if [ ! -d metadata ]; then
-       [ -d ../metadata ] && cd .. || { echo "No metadata files found!"; exit 2; }
+       if [ -d ../metadata ]; then
+               cd ..
+       else
+               echo "No metadata files found!"
+               exit 2
+       fi
 fi
 
 while read line; do
-       if [[ "$line" == *M*metadata/*.txt ]]; then
-               file=${line##* }
-
-               id=${file##*/}
-               id=${id%.txt*}
-               if [ $# -gt 0 ]; then
-                       found=false
-                       for arg in "$@"; do
-                               if [ "$id" == "$arg" ]; then
-                                       found=true
-                                       break
-                               fi
-                       done
-                       $found || continue
-               fi
-
-               [ -d metadata/$id ] && extra=metadata/$id || extra=
+       if [[ "$line" == *\?\?*metadata/*.txt ]]; then
+               new=true
+       elif [[ "$line" == *M*metadata/*.txt ]]; then
+               new=false
+       fi
+       file=${line##* }
 
-               name= autoname=
-               while read l; do
-                       if [[ "$l" == "Auto Name:"* ]]; then
-                               autoname=${l##*:}
-                       elif [[ "$l" == "Name:"* ]]; then
-                               name=${l##*:}
+       id=${file##*/}
+       id=${id%.txt*}
+       if [ $# -gt 0 ]; then
+               found=false
+               for arg in "$@"; do
+                       if [ "$id" == "$arg" ]; then
+                               found=true
+                               break
                        fi
-               done < "$file"
+               done
+               $found || continue
+       fi
 
-               if [ -n "$name" ]; then
-                       fullname="$name ($id)"
-               elif [ -n "$autoname" ]; then
-                       fullname="$autoname ($id)"
-               else
-                       fullname="$id"
+       [ -d metadata/$id ] && extra=metadata/$id || extra=
+
+       name= autoname=
+       while read l; do
+               if [[ "$l" == "Auto Name:"* ]]; then
+                       autoname=${l#*:}
+               elif [[ "$l" == "Name:"* ]]; then
+                       name=${l#*:}
                fi
+       done < "$file"
+
+       if [ -n "$name" ]; then
+               fullname="$name"
+       elif [ -n "$autoname" ]; then
+               fullname="$autoname"
+       else
+               fullname="$id"
+       fi
 
+       if $new; then
+               message="New app: $fullname"
+       else
                onlybuild=true
                newbuild=false
                disable=false
                while read l; do
+                       if [[ "$l" == *"Maintainer Notes:"* ]]; then
+                               break
+                       fi
                        if [[ "$l" == "-Build:"* ]]; then
                                onlybuild=false
                        elif [[ "$l" == "+Build:"* ]]; then
@@ -89,11 +104,13 @@ while read line; do
                else
                        message="$fullname:"
                fi
-
-               message=${message//\"/\\\"}
-               commands+=("git add -- $file $extra && git commit -m \"$message\" -e -v")
        fi
-done < <(git status --porcelain)
+
+       message=${message//\"/\\\"}
+       commands+=("git add -- $file $extra && git commit -m \"$message\" -e -v")
+done < <(git status --porcelain metadata)
+
+[[ -z $commands ]] && exit 0
 
 git reset >/dev/null
 for cmd in "${commands[@]}"; do