factor out gitweb-descriptions
authorIan Kelling <ian@iankelling.org>
Thu, 29 Sep 2016 22:36:28 +0000 (15:36 -0700)
committerIan Kelling <ian@iankelling.org>
Tue, 4 Oct 2016 07:41:34 +0000 (00:41 -0700)
gitweb-descriptions [new file with mode: 0755]
setup.sh

diff --git a/gitweb-descriptions b/gitweb-descriptions
new file mode 100755 (executable)
index 0000000..34c797f
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/bash -l
+
+# my projects all have README or --help with a short single line
+# description which I parse and put into the gitweb description.
+
+# If it's a repo with just a single bash script or *-function script,
+# then call it with --help, grap the 2nd line.
+# else, parse the readme, find the first non blank, not starting with [#*],
+# and use that line.
+
+set -eE -o pipefail
+trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+
+if [[ ! $1 ]]; then
+    echo "need gitroot arg"
+    exit 1
+fi
+
+gitroot=$1
+cd $gitroot
+
+shopt -s extglob
+
+_git_desc_readme() {
+    while read -r line; do
+        [[ $line ]] || continue
+        if echo "$line" | grep "^ *[#*]" &>/dev/null; then
+            continue
+        fi
+        echo "$line" > .git/description
+        break
+    done < README*
+}
+
+dirs=()
+for d in $gitroot/*; do
+    if [[ -d $d && ! -L $d ]]; then
+        for sub in $d/*; do
+            dirs+=($sub)
+        done
+    else
+        dirs+=($d)
+    fi
+done
+
+gitweb-descriptions() {
+    for d in ${dirs[@]}; do
+        d=$(readlink -f $d)
+        cd $d/..
+        e ${PWD##*/}
+        shopt -s nullglob
+        f=(!(LICENSE|COPYING|README|.git))
+        shopt -u nullglob
+        if [[ ${#f[@]} == 1 && ! -d $f ]]; then
+            if [[ ! -x $f ]]; then
+                if [[ $f == *-function ]]; then
+                    ${f%-function} --help | sed -n '2p' > .git/description
+                else
+                    _git_desc_readme
+                fi
+            else
+                $f --help | sed -n '2p' > .git/description
+            fi
+        else
+            _git_desc_readme
+        fi
+    done
+}
+gitweb-descriptions "$@"
index 94dffe29c1f62aa8d04ec3f36c978bcd706a85bd..deb61b9c26e6e3bf0613e0fcc791fbf805b00cf6 100755 (executable)
--- a/setup.sh
+++ b/setup.sh
@@ -145,54 +145,8 @@ Alias /git /usr/share/gitweb
 EOF
 
 
-# my projects all have README or --help with a short single line
-# description which I parse and put into the gitweb description.
-_git_desc_readme() {
-    while read -r line; do
-        [[ $line ]] || continue
-        if echo "$line" | grep "^ *[#*]" &>/dev/null; then
-            continue
-        fi
-        echo "$line" > .git/description
-        break
-    done < README*
-}
-
-dirs=()
-for d in $gitroot/*; do
-    if [[ -d $d && ! -L $d ]]; then
-        for sub in $d/*; do
-            dirs+=($sub)
-        done
-    else
-        dirs+=($d)
-    fi
-done
-gitweb_descriptions() {
-    for d in ${dirs[@]}; do
-        d=$(readlink -f $d)
-        cd $d/..
-        e ${PWD##*/}
-        shopt -s nullglob
-        f=(!(LICENSE|COPYING|README|.git))
-        shopt -u nullglob
-        if [[ ${#f[@]} == 1 && ! -d $f ]]; then
-            if [[ ! -x $f ]]; then
-                if [[ $f == *-function ]]; then
-                    ${f%-function} --help | sed -n '2p' > .git/description
-                else
-                    _git_desc_readme
-                fi
-            else
-                $f --help | sed -n '2p' > .git/description
-            fi
-        else
-            _git_desc_readme
-        fi
-    done
-}
-
-gitweb_descriptions
+
+$script_dir/gitweb-descriptions $gitroot
 
 $script_dir/build.rb
 s lnf -T $script_dir/_site /var/www/$domain/html