ignore more temp files
[iankelling.org] / gitweb-descriptions
index 34c797fc8ff220be137cebe7511e756c33dc59d4..58aecdb6a9388d002722aaba720c9908a95c7f8a 100755 (executable)
@@ -1,4 +1,18 @@
-#!/bin/bash -l
+#!/bin/bash
+# Copyright (C) 2016 Ian Kelling
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # my projects all have README or --help with a short single line
 # description which I parse and put into the gitweb description.
 # 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
+source /a/bin/errhandle/err
 
 if [[ ! $1 ]]; then
-    echo "need gitroot arg"
-    exit 1
+  echo "need gitroot arg"
+  exit 1
 fi
 
 gitroot=$1
 cd $gitroot
 
 shopt -s extglob
+shopt -s nullglob
 
 _git_desc_readme() {
-    while read -r line; do
-        [[ $line ]] || continue
-        if echo "$line" | grep "^ *[#*]" &>/dev/null; then
-            continue
+  x=(README*)
+  if [[ ! $x ]]; then
+    echo "$1: error: no README at $PWD"
+    exit 1
+  fi
+  while read -r line; do
+    [[ $line ]] || continue
+    if echo "$line" | grep "^ *[#*]" &>/dev/null; then
+      continue
+    fi
+    echo "$line" > .git/description
+    break
+  done < README*
+}
+
+gitweb-descriptions() {
+  for d in ${dirs[@]}; do
+    echo $d
+    cd $(readlink -f $d)/..
+    [[ -e .git ]] || echo $d
+    if [[ ${personalized[${d##*/}]} ]]; then
+      echo "$pcategory" >.git/category
+    fi
+    f=(!(LICENSE|COPYING|README|.git))
+    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
-        echo "$line" > .git/description
-        break
-    done < README*
+      else
+        ./$f --help | sed -n '2p' > .git/description
+      fi
+    else
+      _git_desc_readme
+    fi
+  done
 }
 
+tmp=(
+  bashrc
+  automated-distro-installer
+  buildscripts
+  distro-setup
+  dot-emacs
+  fai-basefiles
+  ian-misc-bash
+  iankelling.org
+  keyboard.io-layout
+)
+declare -A personalized
+for p in ${tmp[@]}; do personalized[$p]=true; done
+pcategory="Personalized for my use. Useful as examples or to copy specific parts"
+
+
 dirs=()
 for d in $gitroot/*; do
-    if [[ -d $d && ! -L $d ]]; then
-        for sub in $d/*; do
-            dirs+=($sub)
-        done
-    else
-        dirs+=($d)
-    fi
+  if [[ ! -L $d ]]; then
+    continue
+  fi
+  dirs+=($d)
 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 "$@"