X-Git-Url: https://git.sommitrealweird.co.uk/bpgallery.git/blobdiff_plain/d4d3b701b154f0e7ff24fd3894d323cb2abf08b2..1538596387f4fced838c4489f70645d917491f14:/bpgallery.sh diff --git a/bpgallery.sh b/bpgallery.sh index f4aa372..247e5a5 100755 --- a/bpgallery.sh +++ b/bpgallery.sh @@ -17,9 +17,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +set -e set -f -VERSION="1.1+arch" +VERSION="1.1.0" function bpgallery_default_head() { cat <Thumbnails END if [[ ! -z $previouspage ]]; then - echo "
  • Previous
  • " + $ECHOCOMMAND "
  • Previous
  • " else - echo "
  • Previous
  • " + $ECHOCOMMAND "
  • Previous
  • " fi if [[ ! -z $nextpage ]]; then - echo "
  • Next
  • " + $ECHOCOMMAND "
  • Next
  • " else - echo "
  • Next
  • " + $ECHOCOMMAND "
  • Next
  • " fi cat < @@ -293,12 +294,10 @@ if [[ -z $INDEXDOCUMENT ]]; then INDEXDOCUMENT=index.html fi -if [[ $GENERATEPAGESFORFULLSIZE != 0 ]]; then - if declare -F "bpgallery_${BPGALLERY_THEME}_page" > /dev/null ; then - BPGALLERY_PAGE_FUNCTION="bpgallery_${BPGALLERY_THEME}_page" - else - BPGALLERY_PAGE_FUNCTION="bpgallery_default_page" - fi +if declare -F "bpgallery_${BPGALLERY_THEME}_page" > /dev/null ; then + BPGALLERY_PAGE_FUNCTION="bpgallery_${BPGALLERY_THEME}_page" +else + BPGALLERY_PAGE_FUNCTION="bpgallery_default_page" fi if declare -F "bpgallery_${BPGALLERY_THEME}_head" > /dev/null ; then @@ -349,7 +348,39 @@ Usage: displays this help screen --version displays the version and exits - + +This can also takes some environment variables, these will use defaults if not +set. + + TITLE + the title of the gallery + + WIDTH + the width to make the icons + + MEDIUMWIDTH + set the width of images in the medium size pages + + BPGALLERY_THEME + set the theme to use (described below) + + BPGALLERY_THEME_DIR + set an extra location to look for themes + + OUTPUTHTML + sets the script output to be wrapped in a
     block
    +
    +        GENERATEPAGESFORMEDIUMSIZE
    +            generate medium sized images and pages
    +
    +        GENERATEPAGESFORFULLSIZE
    +            decide wether to generate pages for the full size images or not
    +
    +        INDEXDOCUMENT
    +            name of the index page (e.g. index.html)
    +
    +Example:
    +	TITLE="My Funky Gallery" WIDTH=200 INDEXDOCUMENT="welcome.html" GENERATEPAGESFORFULLSIZE=1 GENERATEPAGESFORMEDIUMSIZE=1 MEDIUMWIDTH=400 $0 /path/to/image/folder
     END
     }
     
    @@ -365,6 +396,22 @@ function generate_resized_images() {
     	totalimages=$($FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 -I {} $ECHOCOMMAND {} | $WCCOMMAND);
     	imagestoupdate=$($FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 -I {} $ECHOCOMMAND {} | while read filename; do filename=${filename//\"/\\\"}; if [ ! -r "$2/$filename" ] || [ "$filename" -nt "$2/$filename" ] || [ $($IDENTIFYCOMMAND -format "%w" "$2/$filename") -ne $1 ]; then $ECHOCOMMAND $filename; fi; done | $WCCOMMAND)
     	
    +	if [ $totalimages -eq 0 ]; then
    +		# might as well exit at this point - there are no pictures
    +		$ECHOCOMMAND "No images for the gallery - exiting."
    +		exit 64
    +	else
    +		# check if the directory exists and create it other wise
    +		if [ ! -d $2 ]; then
    +			mkdir $2
    +		fi
    +
    +		if [ ! -w $2 ]; then
    +			$ECHOCOMMAND "Can't write to $2 directory, exiting"
    +			exit 16
    +		fi
    +	fi
    +
     	if [ $totalimages -eq $imagestoupdate ]; then
     		$ECHOCOMMAND "Regenerating all $2"
     	elif [ $imagestoupdate -eq 0 ]; then
    @@ -380,28 +427,10 @@ function generate_resized_images() {
     }
     
     function generate_thumbs() {
    -	if [ ! -d icons ]; then
    -		mkdir icons
    -	fi
    -
    -	if [ ! -w icons ]; then
    -		$ECHOCOMMAND "Can't write to icons directory, exiting"
    -		exit 16
    -	fi
    -
     	generate_resized_images $WIDTH icons
     }
     
     function generate_medium() {
    -	if [ ! -d medium ]; then
    -		mkdir medium
    -	fi
    -
    -	if [ ! -w medium ]; then
    -		$ECHOCOMMAND "Can't write to medium directory, exiting"
    -		exit 32
    -	fi
    -	
     	generate_resized_images $MEDIUMWIDTH medium
     }
     
    @@ -426,10 +455,10 @@ function generate_pages() {
     		addlinks=1
     	fi
     
    -	if [ -z $1 ] && [ -z $2 ] && [[ $GENERATEPAGESFORMEDIUMSIZE != 0 ]]; then
    +	if [ -z $2 ] && [[ $GENERATEPAGESFORMEDIUMSIZE != 0 ]]; then
     		addlinks=2
     	fi
    -
    +	
     	$FINDCOMMAND . $FINDIMAGESOPTIONS | \
     	$XARGSCOMMAND -0 -I {} $ECHOCOMMAND {} | \
     	$SORTCOMMAND -g | \
    @@ -438,45 +467,53 @@ function generate_pages() {
     		currentimage=$nextimage
     		nextimage=${imagefilename#./}
     		addlink=""
    -
    -		if [[ $addlinks == 1 ]]; then
    -			if [[ $GENERATEPAGESFORFULLSIZE != 0 ]]; then
    +		
    +		if [[ $GENERATEPAGESFORFULLSIZE != 0 ]]; then
    +			if [[ $addlinks == 1 ]]; then
     				addlink=${currentimage}.html
     			else
    -				addlink=${currentimage}
    +				addlink=${currentimage}${extra}.html
     			fi
    +		else
    +			addlink=${currentimage}
     		fi
     
    -		if [[ $addlinks == 2 ]]; then
    -			addlink=${currentimage}__medium.html
    -		fi
    -		
     		previouspage=$currentpage
     		currentpage=$nextpage
    -		nextpage=${imagefilename}${extra}.html
    +		if [[ $addlinks == 1 ]]; then
    +			nextpage=${nextimage}${extra}.html
    +		else
    +			nextpage=${nextimage}.html
    +		fi
     		filename=${extradir}${currentimage}
    -		generate_general_page "$previouspage" "$currentpage" "$nextpage" $addlink
    -		echo $nextimage
    +		echo "'$previouspage' '$currentpage' '$nextpage' '$addlink'" >> /tmp/bpgallery-tmp.log
    +		if [ "x$currentpage" != "x" ]; then
    +			generate_general_page "$previouspage" "$currentpage" "$nextpage" $addlink
    +		fi
    +		$ECHOCOMMAND $nextimage
     	done | tail -n 2 | (
     		read previouspage
     		read currentpage
     		addlink=""
     
    -		if [[ $addlinks == 1 ]]; then
    -			if [[ $GENERATEPAGESFORFULLSIZE ]]; then
    +		if [[ $GENERATEPAGESFORFULLSIZE != 0 ]]; then
    +			if [[ $addlinks == 1 ]]; then
     				addlink=${currentpage}.html
     			else
    -				addlink=${currentpage}
    +				addlink=${currentpage}${extra}.html
     			fi
    +		else
    +			addlink=${currentpage}
     		fi
     
    -		if [[ $addlinks == 2 ]]; then
    -			addlink=${nextimage}__medium.html
    -		fi
    -		
     		filename=${extradir}${currentpage}
    -		currentpage=${currentpage}${extra}.html
    -		previouspage=${previouspage}${extra}.html
    +		if [[ $addlinks == 1 ]]; then
    +			currentpage=${currentpage}${extra}.html
    +			previouspage=${previouspage}${extra}.html
    +		else
    +			currentpage=${currentpage}.html
    +			previouspage=${previouspage}.html
    +		fi
     		nextpage=""
     		generate_general_page "$previouspage" "$currentpage" "" $addlink
     	)
    @@ -488,6 +525,8 @@ function generate_medium_pages() {
     
     function generate_general_page() {
     
    +	echo 'Generating the page...' >> /tmp/bpgallery-tmp.log
    +
     	if [[ -z $1 ]]; then
     		previouspage=""
     	fi
    @@ -510,7 +549,7 @@ function generate_general_page() {
     	else
     		caption=""
     	fi
    -
    +	
     	$BPGALLERY_PAGE_FUNCTION > "$currentpage"
     }
     
    @@ -570,7 +609,11 @@ if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then
     fi
     
     if [ $GENERATEPAGESFORFULLSIZE != 0 ]; then
    -	generate_pages
    +	if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then
    +		generate_pages __medium
    +	else
    +		generate_pages
    +	fi
     fi
     
     if [ -r description.txt ] ; then
    @@ -592,7 +635,7 @@ if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then
     	extra=__medium
     fi
     
    -$FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 -I {} $ECHOCOMMAND {} |$SORTCOMMAND -g | while read filename; do filename=${filename#./}; if [ -r captions.txt ]; then caption=$($GREPCOMMAND -E "^$filename	" captions.txt); caption=${caption#*	}; else caption=""; fi; if [ $GENERATEPAGESFORFULLSIZE != 0 ]; then link=$(bpgallery_escape_url "${filename}${extra}.html"); else link=$(bpgallery_escape_url "$filename"); fi; filename=$(bpgallery_escape_url "$filename"); $BPGALLERY_THUMBSLINE_FUNCTION; done >> ${INDEXDOCUMENT}
    +$FINDCOMMAND . $FINDIMAGESOPTIONS | $XARGSCOMMAND -0 -I {} $ECHOCOMMAND {} | $SORTCOMMAND -g | while read filename; do filename=${filename#./}; if [ -r captions.txt ]; then caption=$($GREPCOMMAND -E "^$filename	" captions.txt); caption=${caption#*	}; else caption=""; fi; if [ $GENERATEPAGESFORMEDIUMSIZE != 0 ]; then link=$(bpgallery_escape_url "${filename}${extra}.html"); elif [ $GENERATEPAGESFORFULLSIZE != 0 ]; then link=$(bpgallery_escape_url "${filename}.html"); else link=$(bpgallery_escape_url "$filename"); fi; filename=$(bpgallery_escape_url "$filename"); $BPGALLERY_THUMBSLINE_FUNCTION; done >> ${INDEXDOCUMENT}
     
     $BPGALLERY_TAIL_FUNCTION >> ${INDEXDOCUMENT}