From 956d10ee358397728a058b51551ccd031c226c31 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Thu, 29 Sep 2016 15:36:28 -0700 Subject: [PATCH] factor out gitweb-descriptions --- gitweb-descriptions | 69 +++++++++++++++++++++++++++++++++++++++++++++ setup.sh | 50 ++------------------------------ 2 files changed, 71 insertions(+), 48 deletions(-) create mode 100755 gitweb-descriptions diff --git a/gitweb-descriptions b/gitweb-descriptions new file mode 100755 index 0000000..34c797f --- /dev/null +++ b/gitweb-descriptions @@ -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 "$@" diff --git a/setup.sh b/setup.sh index 94dffe2..deb61b9 100755 --- 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 -- 2.30.2