-#!/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
+set -e; . /usr/local/lib/bash-bear; set +e
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
+ if [[ ${unmaintained[${d##*/}]} ]]; then
+ echo "$ucategory" >.git/category
+ fi
+ if [[ ${historicalarchive[${d##*/}]} ]]; then
+ echo "$hcategory" >.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"
+
+tmp=(
+ bbdb-csv-import
+ evhz
+ )
+ucategory="I don't use these anymore, they may or may not work, patches welcome"
+declare -A unmaintained
+for p in ${tmp[@]}; do unmaintained[$p]=true; done
+
+tmp=(
+ bash-template
+ debian-auto-update
+ fdroidcl-up
+ mediawiki-setup
+ mediawiki-librejs-patch
+ mediawiki-sidebar-patch
+)
+hcategory="Historical archive. They don't work or have been superseded."
+declare -A historicalarchive
+for p in ${tmp[@]}; do historicalarchive[$p]=true; done
+
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 "$@"