X-Git-Url: https://iankelling.org/git/?p=iankelling.org;a=blobdiff_plain;f=gitweb-descriptions;h=58aecdb6a9388d002722aaba720c9908a95c7f8a;hp=34c797fc8ff220be137cebe7511e756c33dc59d4;hb=35dea67c2f972fe7552820841f7c550129a6add0;hpb=956d10ee358397728a058b51551ccd031c226c31 diff --git a/gitweb-descriptions b/gitweb-descriptions index 34c797f..58aecdb 100755 --- a/gitweb-descriptions +++ b/gitweb-descriptions @@ -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 . # my projects all have README or --help with a short single line # description which I parse and put into the gitweb description. @@ -8,62 +22,82 @@ # 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 "$@"