genwebgallery

changeset 6:cb0dff8c48c6

added option --overwrite; refactored checkCreateDir; fixed HTML output; introduced exit code 3 and 4; better help output
author meillo@marmaro.de
date Fri, 23 Nov 2007 22:43:41 +0100
parents a963f51cfd80
children b4f7cfb7db95
files genwebgallery genwebgallery.1
diffstat 2 files changed, 140 insertions(+), 82 deletions(-) [+]
line diff
     1.1 --- a/genwebgallery	Fri Nov 23 20:52:47 2007 +0100
     1.2 +++ b/genwebgallery	Fri Nov 23 22:43:41 2007 +0100
     1.3 @@ -1,97 +1,144 @@
     1.4  #!/bin/sh
     1.5  #
     1.6 -# generates a web gallery of static web pages
     1.7 +# generates a web gallery
     1.8  # requires: ImageMagick (convert)
     1.9  #
    1.10  # meillo@marmaro.de
    1.11  #
    1.12  
    1.13  
    1.14 -VERSION=0.3
    1.15 +VERSION=0.4
    1.16  
    1.17 -targetDir="web"
    1.18 -index="index.htm"
    1.19 -sizePic=640
    1.20 -sizeThumb=200
    1.21 -galleryTitle="gallery title"
    1.22 -copyright="please mind the copyright"
    1.23 +verbose="no"
    1.24 +targetDir="webgallery"
    1.25 +overwrite="no"
    1.26 +index="index.html"
    1.27 +sizePic=800
    1.28 +sizeThumb=150
    1.29 +galleryTitle="photo gallery"
    1.30 +copyright=""
    1.31  
    1.32 -verbose=""
    1.33 +
    1.34  
    1.35  
    1.36  function checkCreateDir() {
    1.37 -	if [ -d "$targetDir" ] ; then
    1.38 -		echo "Target dir '$targetDir' already exists."
    1.39 -		echo -n "remove it? [y/n] "
    1.40 +	remove="no"
    1.41 +	if [ -e "$targetDir" ] ; then
    1.42 +		if [ "$overwrite" = "no" ] ; then
    1.43 +			echo "output directory '$targetDir' already exists."
    1.44 +			echo -n "remove it? [y/n] "
    1.45 +			read remove
    1.46 +		fi
    1.47  
    1.48 -		read remove
    1.49 -		if [ $remove = "y" ] ; then
    1.50 +		if [ "$remove" = "y" -o "$overwrite" = "yes" ] ; then
    1.51 +			echo "removing '$targetDir' ..."
    1.52  			rm -r "$targetDir"
    1.53 -			echo "removing '$targetDir' ..."
    1.54 +			if [ $? -ne 0 ] ; then
    1.55 +				echo "ABORT"
    1.56 +				exit 4
    1.57 +			fi
    1.58  		else
    1.59 -			exit 1
    1.60 +			echo "keep output directory"
    1.61 +			echo "ABORT"
    1.62 +			exit 3
    1.63  		fi
    1.64  	fi
    1.65 +
    1.66  	mkdir -p "$targetDir"
    1.67  }
    1.68  
    1.69  
    1.70  
    1.71 +
    1.72  function insertHeader() {
    1.73 -  echo <<EOF
    1.74 -<?xml version="1.0" encoding="utf-8"?>
    1.75 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    1.76 -  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    1.77 -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    1.78 +  echo "
    1.79 +<?xml version=\"1.0\" encoding=\"utf-8\"?>
    1.80 +<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
    1.81 +  \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
    1.82 +<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
    1.83  <head>
    1.84  <title>$titleName</title>
    1.85 -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    1.86 -  <meta name="Generator" content="genwebgallery - see http://prog.marmaro.de" />
    1.87 +<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
    1.88 +  <meta name=\"Generator\" content=\"genwebgallery - http://prog.marmaro.de\" />
    1.89  </head>
    1.90  <body>
    1.91  
    1.92 -EOF
    1.93 +"
    1.94  }
    1.95  
    1.96  
    1.97 +
    1.98  function insertFooter() {
    1.99 -	echo <<EOF
   1.100 +	echo "
   1.101  
   1.102  </body>
   1.103  </html>
   1.104 -EOF
   1.105 +"
   1.106  }
   1.107  
   1.108  
   1.109 +
   1.110  function log() {
   1.111 -	if [ $verbose ] ; then
   1.112 +	if [ $verbose = "yes" ] ; then
   1.113  		echo "$1";
   1.114  	fi
   1.115  }
   1.116  
   1.117  
   1.118 +
   1.119  function checkConvert() {
   1.120  	log "checking convert installation"
   1.121  	(convert -version) 2> /dev/null > /dev/null
   1.122  	if [ $? -ne 0 ] ; then
   1.123 -		echo "Error: Can not find 'convert' (package imagemagick)"
   1.124 -		echo "ABORT!"
   1.125 +		echo "Can not find 'convert' (package imagemagick)"
   1.126 +		echo "ABORT"
   1.127  		exit 2
   1.128  	fi
   1.129 +	log "convert found:"
   1.130  	log "`convert -version`"
   1.131  }
   1.132  
   1.133  
   1.134 -####
   1.135  
   1.136 +function usage() {
   1.137 +	echo "usage: `basename $0` [OPTIONS] FILES"
   1.138 +	exit 1
   1.139 +}
   1.140  
   1.141  
   1.142 -if [ $# -eq 0 ] ; then
   1.143 -	echo "usage: `basename $0` [OPTIONS] FILES"
   1.144 +
   1.145 +function help() {
   1.146 +	echo "`basename $0`
   1.147 +
   1.148 +generates a web gallery consisting of html pages
   1.149 +
   1.150 +usage: `basename $0` [OPTIONS] PICTURES
   1.151 +
   1.152 +options:
   1.153 +	--version   print program version
   1.154 +	--help      display this output
   1.155 +	-v          be verbose ($verbose)
   1.156 +	-o DIR      folder where generated files go to ($targetDir)
   1.157 +	-i FILE     the name of the index file ($index)
   1.158 +	-t TEXT     title of the gallery ($galleryTitle)
   1.159 +	-c TEXT     a copyright notice ($copyright)
   1.160 +	-ps PIXELS  size of the pics ($sizePic)
   1.161 +	-ts PIXELS  size of the thumbnails ($sizeThumb)
   1.162 +	--overwrite overwrite output directory ($overwrite)
   1.163 +
   1.164 +for more information see man page: genwebgallery(1)
   1.165 +
   1.166 +author: meillo@marmaro.de
   1.167 +homepage: http://prog.marmaro.de
   1.168 +"
   1.169  	exit 0
   1.170 -fi
   1.171 +}
   1.172  
   1.173  
   1.174 +
   1.175 +
   1.176 +# option processing
   1.177 +
   1.178  while [  "$#" -ge 1  -a  "${1:0:1}" = '-'  ] ; do
   1.179  	case $1 in
   1.180  		'--version')
   1.181 @@ -99,34 +146,14 @@
   1.182  			exit 0
   1.183  			;;
   1.184  		'--help')
   1.185 -			echo "`basename $0`
   1.186 -
   1.187 -generates a web gallery consisting of html pages
   1.188 -
   1.189 -usage: `basename $0` [OPTIONS] FILES
   1.190 -
   1.191 -options:
   1.192 -	--version: echo program version
   1.193 -	--help: display this output
   1.194 -	-v: be verbose
   1.195 -	-o DIR: all generated content is copied to this folder
   1.196 -	-i FILE: the name of the index file (index.htm)
   1.197 -	-t TITLE: title of the gallery
   1.198 -	-c COPYRIGHT: a copyright notice
   1.199 -	-ps PIXELS: size of the pics
   1.200 -	-ts PIXELS: size of the thumbnails
   1.201 -
   1.202 -author: meillo@marmaro.de
   1.203 -homepage: http://prog.marmaro.de
   1.204 -"
   1.205 -			exit 0
   1.206 +			help
   1.207  			;;
   1.208  		'-v' | '--verbose')
   1.209 -			verbose=1
   1.210 +			verbose="yes"
   1.211  			shift
   1.212  			;;
   1.213  		'-o' | '--output')
   1.214 -			targetDir=$2
   1.215 +			targetDir="$2"
   1.216  			shift
   1.217  			shift
   1.218  			;;
   1.219 @@ -136,7 +163,7 @@
   1.220  			shift
   1.221  			;;
   1.222  		'-t' | '--title')
   1.223 -			galleryTitle=$2
   1.224 +			galleryTitle="$2"
   1.225  			shift
   1.226  			shift
   1.227  			;;
   1.228 @@ -155,6 +182,10 @@
   1.229  			shift
   1.230  			shift
   1.231  			;;
   1.232 +		'--overwrite')
   1.233 +			overwrite="yes"
   1.234 +			shift
   1.235 +			;;
   1.236  		*)
   1.237  			echo "invalid option: $1"
   1.238  			echo "see: `basename $0` --help"
   1.239 @@ -164,39 +195,51 @@
   1.240  done
   1.241  
   1.242  if [ $# -eq 0 ] ; then
   1.243 -	echo "usage: `basename $0` [OPTIONS] FILES"
   1.244 -	exit 0
   1.245 +	usage
   1.246  fi
   1.247  
   1.248  
   1.249 +
   1.250  # verbose output
   1.251 -log "verbose on"
   1.252 -log "output dir is: $targetDir"
   1.253 -log "index file is: $index"
   1.254 -log "gallery title is: $galleryTitle"
   1.255 -log "copyright notice is: $copyright"
   1.256 -log "picture size is: $sizePic"
   1.257 -log "thumbnail size is: $sizeThumb"
   1.258 +log "verbose:              $verbose"
   1.259 +log
   1.260 +log "output dir:           $targetDir"
   1.261 +log "index file:           $index"
   1.262 +log "gallery title:        $galleryTitle"
   1.263 +log "copyright notice:     $copyright"
   1.264 +log "picture size:         ${sizePic}px"
   1.265 +log "thumbnail size:       ${sizeThumb}px"
   1.266 +log "overwrite output dir: $overwrite"
   1.267 +log
   1.268  checkConvert
   1.269 -log ""
   1.270 +log
   1.271  
   1.272  
   1.273 +
   1.274 +# generate web gallery
   1.275 +
   1.276  checkCreateDir
   1.277  
   1.278 -insertHeader > "$targetDir/$index"
   1.279 -echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
   1.280 +echo `insertHeader` > "$targetDir/$index"
   1.281 +if [ "$galleryTitle" != "" ] ; then
   1.282 +	echo "<h1>$galleryTitle</h1>" >> "$targetDir/$index"
   1.283 +fi
   1.284  
   1.285  for i in "$@" ; do
   1.286 -	file=`basename $i`
   1.287 +	file="`basename $i`"
   1.288  	targetFile="$targetDir/$file.htm"
   1.289  	log "processing file: $file"
   1.290  
   1.291  	# generate pic page
   1.292 -	insertHeader > "$targetFile"
   1.293 -	echo "<h1>$galleryTitle</h1>" \
   1.294 -	     "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" \
   1.295 -	     "<p>$copyright</p>" >> "$targetFile"
   1.296 -	insertFooter >> "$targetFile"
   1.297 +	echo `insertHeader` > "$targetFile"
   1.298 +	if [ "$galleryTitle" != "" ] ; then
   1.299 +		echo "<h1>$galleryTitle</h1>" >> "$targetFile"
   1.300 +	fi
   1.301 +	echo "<p><a href=\"$index\"><img src=\"$file\" alt=\"$file\" /></a></p>" >> "$targetFile"
   1.302 +	if [ "$copyright" != "" ] ; then
   1.303 +		echo "<p>$copyright</p>" >> "$targetFile"
   1.304 +	fi
   1.305 +	echo `insertFooter` >> "$targetFile"
   1.306  
   1.307  	# copy and resize pics
   1.308  	convert "$i" -resize ${sizePic}x${sizePic} "$targetDir/$file"
   1.309 @@ -206,5 +249,7 @@
   1.310  	echo "    <a href=\"$file.htm\"><img src=\"_$file\" alt=\"$file\" /></a>" >> "$targetDir/$index"
   1.311  done
   1.312  
   1.313 -echo "<p>$copyright</p>" >> "$targetDir/$index"
   1.314 -insertFooter >> "$targetDir/$index"
   1.315 +if [ "$copyright" != "" ] ; then
   1.316 +	echo "<p>$copyright</p>" >> "$targetDir/$index"
   1.317 +fi
   1.318 +echo `insertFooter` >> "$targetDir/$index"
     2.1 --- a/genwebgallery.1	Fri Nov 23 20:52:47 2007 +0100
     2.2 +++ b/genwebgallery.1	Fri Nov 23 22:43:41 2007 +0100
     2.3 @@ -4,20 +4,19 @@
     2.4  genwebgallery
     2.5  
     2.6  .SH SYNOPSIS
     2.7 -.B genwebgallery [OPTIONS] FILES
     2.8 +.B genwebgallery [OPTIONS] PICTURES
     2.9  
    2.10  .SH DESCRIPTION
    2.11  .B genwebgallery
    2.12 -generates a web gallery of mentioned pictures.
    2.13 +Generates a web gallery of mentioned pictures. Only very minimalistic static HTML pages are generated. Copies of the pictures get resized to the defined sizes.
    2.14  .PP
    2.15 -Only static HTML pages are generated.
    2.16 +All generated content goes in a subdirectory which defaults to 'webgallery'. Or any other directory specified by --output.
    2.17  .PP
    2.18  The
    2.19  .BR convert
    2.20  tool from ImageMagick is required.
    2.21  
    2.22  .SH OPTIONS
    2.23 -.B genwebgallery
    2.24  .TP
    2.25  .B \-\-help
    2.26  Show summary of options.
    2.27 @@ -45,6 +44,14 @@
    2.28  .TP
    2.29  .B \-ts, \-\-thumb-size
    2.30  Specify size of thumbnails
    2.31 +.TP
    2.32 +.B \-\-overwrite
    2.33 +Overwrites the output directory if it exists without asking.
    2.34 +Without this option, the users is interactively asked what to do.
    2.35 +.PP
    2.36 +See
    2.37 +.B genwebgallery --help
    2.38 +for default values.
    2.39  
    2.40  .SH EXIT CODE
    2.41  .TP
    2.42 @@ -56,12 +63,18 @@
    2.43  .B convert
    2.44  could not be found. It's probably not installed.
    2.45  Normally it is provided by the ImageMagick tool collection.
    2.46 +.TP
    2.47 +.B 3
    2.48 +The output directory already exists and the user wanted to keep it.
    2.49 +.TP
    2.50 +.B 4
    2.51 +The output directory already exists and the user wanted it to be deleted, but it was not possible.
    2.52  
    2.53  .SH SEE ALSO
    2.54  .BR convert (1),
    2.55  .BR ImageMagick (1).
    2.56  
    2.57  .SH AUTHOR
    2.58 -genwebgallery was written by markus schnalke <meillo@marmaro.de>
    2.59 +genwebgallery and this man page was written by markus schnalke <meillo@marmaro.de>
    2.60  .PP
    2.61  Website: http://prog.marmaro.de