#! /bin/bash

# put listing of files in current dir into a html-file
# author: Joerg arndt (arndt (AT) jjj.de)
# version: 2019-November-23 (10:08)

#set -v

XCLNAME=''
while getopts :x: OPT; do
    case $OPT in
        x|+x) XCLNAME=$OPTARG
        ;;*)
        echo "usage: ${0##*/} [+-x ARG} [--] ARGS..."
        exit 2
    esac
done
shift $[ OPTIND - 1 ]


cat  <<EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
<!-- GENERATED_FILE LSHTML_MAGIC -->
</HEAD>
<BODY bgcolor="#fffff0" text="#000000">
EOF

echo '<!-- '$(date)' -->'

#export ps='';  ## global: padded varable s

## padding/aligning size-part:
function pad
{
    local s=$*;
    local z=$(echo $* | sed -E 's/^([^ ]+) .*/\1/;')
#    echo "[[s=$s]]"
#    echo "[[z=$z]]"
    local L=$(expr length "$z");
#    echo "[[L=$L]]"
    while test $L -lt 7; do
        L=$((L + 1));
        s=' '$s;
#        echo "[[s=$s]]"
    done
    local ps_name='ps'
    eval $ps_name="'$s'";
}

SEDEX='s/^[^ ]+ [^ ]+ //;'

echo '<H1>files, alphabetically:</H1>'
echo '<PRE>'
#set -vx
ff=$(ls -1);
for f in $ff ; do
    if [ $f = "$XCLNAME" ]; then  continue; fi;  ## skip excluded names
    if [ -h $f ]; then  continue; fi;  ## skip symbolic links

    if [ -f $f -o -d $f ]; then  ## only regular files and directories
#        s=$(ls -dl -G -h --full-time $f);
#        s=$(ls -dl -G -h --time-style=long-iso $f);
        s=$(ls -dg -G -h --time-style=long-iso $f | sed -E "$SEDEX");
        test -d $f  &&  { s=$s'/'; f=$f'/'; }
#        echo "<a href=\"$f\">$s</a>";
        pad $s;
        echo "<a href=\"$f\">${ps}</a>";
    fi;
done
echo '</PRE>'

echo '<P>'
echo '<H1>files, time ordered (newest on top):</H1>'
echo '<PRE>'
#set -vx
ff=$(ls -1t);
for f in $ff ; do
    if [ $f = "$XCLNAME" ]; then  continue; fi;  ## skip excluded names
    if [ -L $f ]; then  continue; fi;  ## skip symbolic links

    if [ -f $f -o -d $f ]; then  ## only regular files and directories
#        s=$(ls -dl -G -h --full-time $f);
#        s=$(ls -d -g -G -h --time-style=long-iso $f);
        s=$(ls -d -g -G -h --time-style=long-iso $f | sed -E "$SEDEX");
        test -d $f  &&  { s=$s'/'; f=$f'/'; }
#        echo "<a href=\"$f\">$s</a>";
        pad $s;
        echo "<a href=\"$f\">${ps}</a>";
    fi;
done
echo '</PRE>'


cat <<EOF
</BODY>
</HTML>
EOF

exit 0;
###################################
