]> git.xonotic.org Git - xonotic/xonotic.git/blobdiff - all
fix FFFF display in bash
[xonotic/xonotic.git] / all
diff --git a/all b/all
index 26a302776e26e28588f4762ca315e83030ff93f2..8e4bf7b8a3911c06d86329d8b446961410d73b1f 100755 (executable)
--- a/all
+++ b/all
@@ -2,6 +2,9 @@
 # vim: filetype=zsh
 
 set -e
+if [ -n "$ZSH_VERSION" ]; then
+       setopt SH_WORD_SPLIT
+fi
 
 # I use this in EVERY shell script ;)
 LF="
@@ -36,7 +39,7 @@ esac
 
 msg()
 {
-       echo >&2 "$ESC[1m$*$ESC[m"
+       echo >&2 "$ESC""[1m$*$ESC""[m"
 }
 
 self=`git hash-object "$SELF"`
@@ -339,6 +342,47 @@ mkzip0()
        zip -0y "$@"
 }
 
+mirrorspeed()
+{
+       # first result is to be ignored, but we use it to check status
+       git ls-remote "$1" refs/heads/master >/dev/null 2>&1 || return 1
+       { time -p git ls-remote "$1" refs/heads/master; } 2>&1 >/dev/null | head -n 1 | cut -d ' ' -f 2 | tr -d . | sed 's,^0*,,'
+               # unit: clock ticks (depends on what "time" returns
+}
+
+bestmirror()
+{
+       pre=$1; shift
+       suf=$1; shift
+
+       if ! { time -p true; } >/dev/null 2>&1; then
+               return 1
+       fi
+
+       bestin=
+       bestt=
+       for in in "$@"; do
+               m=$pre$in$suf
+               if t=`mirrorspeed "$m"`; then
+                       msg "$m -> $t ticks"
+                       if [ -n "$t" ]; then
+                               if [ -z "$bestt" ] || [ "$t" -lt "$bestt" ]; then
+                                       bestin=$in
+                                       bestt=$t
+                               fi
+                       fi
+               else
+                       msg "$m -> FAIL"
+               fi
+       done
+       if [ -n "$bestin" ]; then
+               msg "Best mirror seems to be $pre$bestin$suf"
+               echo "$bestin"
+       else
+               return 1
+       fi
+}
+
 case "$cmd" in
        fix_upstream_rebase)
                for d in $repos; do
@@ -438,12 +482,14 @@ case "$cmd" in
                                case "$2" in
                                        nl) ;;
                                        de) ;;
+                                       best) ;;
                                        default) ;;
                                        *)
                                                msg "Invalid location!"
                                                msg "Possible locations for the -l option:"
                                                msg "  nl (Netherlands, run by merlijn)"
                                                msg "  de (Germany, run by divVerent)"
+                                               msg "  best (find automatically)"
                                                msg "  default (currently nl)"
                                                exit 1
                                                ;;
@@ -456,6 +502,23 @@ case "$cmd" in
                        fi
                        shift
                done
+               case "$location" in
+                       best)
+                               newbase=`echo "$base" | sed "s,://\(.*\.\)\?git.xonotic.org/,:// .git.xonotic.org/,"`
+                               case "$newbase" in
+                                       *\ *)
+                                               if location=`bestmirror $newbase"xonotic.git" de nl`; then
+                                                       :
+                                               else
+                                                       location=current
+                                               fi
+                                               ;;
+                                       *)
+                                               location=current
+                                               ;;
+                               esac
+                               ;;
+               esac
                case "$location" in
                        default)
                                location=
@@ -1138,7 +1201,7 @@ case "$cmd" in
                                                        # apply crlf, or other cleanup filters (non-behavioural changes)
                                                        git reset --hard
                                                        find . -type f -exec touch {} \;
-                                                       git commit -a --amend -c HEAD
+                                                       git commit -a --amend -C HEAD || true # don't fail if nothing to commit
 
                                                        echo "MERGING"
                                                        case ",`repoflags "$d"`," in
@@ -1221,8 +1284,21 @@ case "$cmd" in
                                rmuntracked=true
                        elif [ x"$X" = x"-D" ]; then
                                killbranches=true
+                       elif echo "$X" | grep '^-FFFF*UUUU*$' >/dev/null; then
+                               msg ''
+                               msg "        _____"
+                               msg "    ,--'-\\P/\`\\  FFFFFFF"
+                               msg " __/_    B/,-.\\  FFFFFFF"
+                               msg " /  _\\  (//  O\\\\  FFFFFF"
+                               msg "| (O  \`) _\\._ _)\\  FFFUU"
+                               msg "| |___/.^d0~~\"\\  \\ UUUU"
+                               msg "|     |\`~'     \\ |  UUUU"
+                               msg "|     |    __,C>|| UUUU"
+                               msg "\\    /_ ,-/,-'   |  UUUU"
+                               msg " \\\\_ \\_>~'      /  UUUU-"
+                               msg ''
                        else
-                               break
+                               msg "Unknown arg: $X"
                        fi
                        found=true
                        shift
@@ -1545,7 +1621,7 @@ case "$cmd" in
                # music: reduce bitrate
                verbose export do_jpeg=true
                verbose export jpeg_qual_rgb=80
-               verbose export jpeg_qual_a=99
+               verbose export jpeg_qual_a=97
                verbose export do_dds=false
                verbose export do_ogg=true
                verbose export ogg_qual=1