123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- #!/bin/sh
- VERSION=0.4
- preparebar() {
- barlen=$1
- barspaces=$(printf "%*s" "$1")
- barchars=$(printf "%*s" "$1" | tr ' ' "$2")
- }
- progressbar() {
- if [ $1 -eq -1 ]; then
- printf "\r $barspaces\r"
- else
- barch=$(($1*barlen/$2))
- barsp=$((barlen-barch))
- printf "\r[%.${barch}s%.${barsp}s]\r" "$barchars" "$barspaces"
- fi
- }
- register() {
- echo $1 >> "$LOG"
- }
- isfresher() {
- if [ -z $(uname |grep "BSD") ]; then
- if [ ! -f "${2}" ]; then
- register "$1"
- return 0
- elif [ $(stat "${1}" -c %Y) -gt $(stat "${2}" -c %Y) ]; then
- return 0
- else
- return 1
- fi
- else
- if [ ! -f "${2}" ]; then
- register "$1"
- return 0
- elif [ $(stat -f %m "${1}") -gt $(stat -f %m "${2}") ]; then
- return 0
- else
- return 1
- fi
- fi
- }
- domenulist() {
- echo "<p>Pages présentes dans ce dossier :</p>"
- echo "<ul>"
- for f in $(ls $(dirname $1)/) ; do
- sw_filter $i && continue
- [ -n "$(echo $f | grep 'index.$EXT$')" ] && continue
- echo "<li><a href=\"$(echo $f | sed -e "s,$EXT$,.html,g") \">$(echo $f | sed -e 's/\..*$//' -e 's/_/ /g')</a></li>"
- done
- echo "</ul>"
- }
- sw_filter() {
- for b in $BL; do
- [ "$b" = "$1" ] && return 0
- done
- }
- sw_main() {
- if [ -z $(uname |grep "BSD") ]; then
- if [ $(stat "$1" -c %s) -eq 0 ]; then
- domenulist $1
- else
- $CONVERTER $1
- fi
- else
- if [ $(stat -f %z "$1") -eq 0 ]; then
- domenulist $1
- else
- $CONVERTER $1
- fi
- fi
- }
- sw_menu() {
- echo "<ul>"
- if [ "$(dirname $1)" != "$IDIR" ] ; then
- echo "<li><a $( [ -n "$(echo $1 | grep index$EXT)" ] && echo "class=\"thisPage\" ") href=\"./index.html\">.</a></li>"
- echo "<li><a href=\"../index.html\">..</a></li>"
- fi
- FILES=$(ls $(dirname $1) | sed -e "s,$EXT$,.html,g")
- INAME=$(basename "$(echo $1 | sed -e 's/\..*$//' -e 's/_/ /g')")
-
- for i in $FILES ; do
- sw_filter $i && continue
- NAME=$(echo $i | sed -e 's/\..*$//' -e 's/_/ /g')
- [ -n "$(echo $i | grep 'index.html$')" ] && continue
-
- echo "<li><a $( [ "$INAME" = "$NAME" ] && echo "class=\"thisPage\" ") href=\"$i\">$NAME</a></li>"
- done
- echo "</ul>"
- }
- sw_page() {
- PAGENAME=$(basename "$1" |sed -e 's/\..*$//' -e 's/_/ /g')
- DIRNAME=$(basename "$(dirname "$1" |sed -e 's/_/ /g')")
-
- cat << _header_
- <!doctype html>
- <html>
- <head>
- <title>${DIRNAME} - ${PAGENAME} | ${TITLE}</title>
- $HEADER
- </head>
- <body>
- _header_
- echo "<main>"
- echo "$TOPTEMPLATE"
- sw_main $1
- echo "</main>"
- echo "$BOTTOMTEMPLATE"
-
- cat << _footer_
- <footer>
- ${FOOTER}
- </footer>
- </body>
- </html>
- _footer_
- }
- IDIR="$(echo $1 | sed -e 's,/*$,,')"
- if [ -z "$IDIR" ] || [ ! -d $IDIR ]; then
- echo "swx - version $VERSION"
- echo "Usage: swx [dir]"
- exit 1
- fi
- echo "> Load configuration"
- if [ ! -f $PWD/swx.conf ]; then
- echo "Cannot find swx.conf in current directory"
- exit 1
- fi
- . $PWD/swx.conf
- echo "> Prepare output directory"
- ODIR="$PWD/$(basename $IDIR).static"
- mkdir -p $ODIR
- echo "> Copying files"
- if [ -z $(uname |grep "BSD") ]; then
- cp -ur $IDIR/* $ODIR/
- else
-
- cp -r $IDIR/* $ODIR/
- fi
- echo "> Removing useless files"
- find $ODIR -iname "*$EXT" -exec rm '{}' \;
- echo "> Generating html pages"
- FILES=$(find $IDIR -iname "*$EXT" | sed -e 's,^\./,,')
- NB=$(echo $FILES | wc -w)
- COUNT=0
- preparebar 50 "#"
- for a in $FILES; do
- b="$(echo ${a%.*}.html | sed "s;$IDIR;$ODIR;g")"
-
- isfresher "${a}" "${b}"
- if [ $? -eq 0 ]; then
- sw_page "${a}" > "${b}";
- fi
-
-
-
-
-
-
- progressbar $COUNT $NB
-
-
- done
- echo "\n\n> Done! :)"
- exit 0
|