povray/unix/scripts/portfolio.sh
2013-11-06 13:07:19 -05:00

139 lines
4.4 KiB
Bash
Executable file

#!/bin/sh
# ==============================================================================
# POV-Ray 3.7
# portfolio.sh - render the POV-Ray portfolio
# ==============================================================================
# written November 2003 by Christoph Hormann
# This file is part of POV-Ray and subject to the POV-Ray licence
# see POVLEGAL.DOC for details
# ------------------------------------------------------------------------------
# calling conventions:
#
# portfolio.sh [log] [-d scene_directory] [-o output_directory]
#
# output_directory: if specified all images are written to this directory
# if not specified the images are written into the scene
# file directories, if these are not writable they are
# written in the current directory.
# log: log all text output of POV-Ray to a file (log.txt)
# scene_directory: if specified the portfolio scene in this directory are
# rendered, otherwise the scene directory is determined form
# the main povray ini file.
# (usually /usr/local/share/povray-3.7/scenes/portfolio).
# ==============================================================================
# test mode
#SCENE_DIR=.
VERSION=3.7
VER_DIR=povray-$VERSION
DEFAULT_DIR=/usr/local
SYSCONFDIR=$DEFAULT_DIR/etc
install_dir()
{
if [ -z "$POVINI" ] ; then
test -f "$SYSCONFDIR/povray.ini" && POVINI="$SYSCONFDIR/povray.ini"
test -f "$HOME/.povrayrc" && POVINI="$HOME/.povrayrc"
test -f "$SYSCONFDIR/povray/$VERSION/povray.ini" && POVINI="$SYSCONFDIR/povray/$VERSION/povray.ini"
test -f "$HOME/.povray/$VERSION/povray.ini" && POVINI="$HOME/.povray/$VERSION/povray.ini"
fi
if [ ! -z "$POVINI" ] ; then
# this is not a completely failsafe method but it should work in most cases
INSTALL_DIR=`grep -E -i "^library_path=.*share/$VER_DIR" "$POVINI" | head -n 1 | sed "s?[^=]*=\"*??;s?/share/$VER_DIR.*??"`
echo "$INSTALL_DIR"
fi
}
OPTIONS="$1 $2 $3 $4 $5"
case "$OPTIONS" in
*log* | *LOG* | *Log* )
DATE=`date`
LOG_FILE="log.txt"
echo "log file for POV-Ray 3.7 sample scene render $DATE" > "$LOG_FILE"
;;
esac
test "$1" = "-d" && SCENE_DIR="$2"
test "$2" = "-d" && SCENE_DIR="$3"
test "$3" = "-d" && SCENE_DIR="$4"
test "$4" = "-d" && SCENE_DIR="$5"
if [ -z "$SCENE_DIR" ] ; then
INSTALL_DIR="`install_dir`"
if [ -z "$INSTALL_DIR" ] ; then
echo "------------------------------------------------------"
echo " the sample scene render script could not determine"
echo " the location where POV-Ray is installed. Make sure"
echo " POV-Ray $VERSION has been correctly installed on this"
echo " computer. If you continue the script will try to"
echo " the scenes from the current directory."
echo ""
read -p "Press CTRL-C to abort or any other key to continue " -n 1
echo "------------------------------------------------------"
SCENE_DIR=.
else
SCENE_DIR="$INSTALL_DIR/share/$VER_DIR/scenes/portfolio"
fi
fi
if [ ! -d "$SCENE_DIR" ] ; then
echo "------------------------------------------------------"
echo " Your POV-Ray installation seems to be defective"
echo " so this script does not work."
echo " Try reinstalling POV-Ray."
echo "------------------------------------------------------"
read
exit
fi
if [ -d "$SCENE_DIR/portfolio" ] ; then
SCENE_DIR="$SCENE_DIR/portfolio"
fi
test "$1" = "-o" && OUTPUT_DIR="$2"
test "$2" = "-o" && OUTPUT_DIR="$3"
test "$3" = "-o" && OUTPUT_DIR="$4"
test "$4" = "-o" && OUTPUT_DIR="$5"
if [ -z "$OUTPUT_DIR" ] ; then
if [ -w "$SCENE_DIR" ] ; then
OUTPUT_DIR="$SCENE_DIR"
else
OUTPUT_DIR=.
fi
fi
if [ ! -d "$OUTPUT_DIR" ] ; then
mkdir -p "$OUTPUT_DIR"
fi
if [ "$SCENE_DIR" != "$OUTPUT_DIR" ] ; then
test -f "$SCENE_DIR/index.html" && cp -f "$SCENE_DIR/index.html" "$OUTPUT_DIR/"
test -f "$SCENE_DIR/readme.txt" && cp -f "$SCENE_DIR/readme.txt" "$OUTPUT_DIR/"
fi
CURR_DIR=`pwd`
SCENE_DIR=`echo "$SCENE_DIR" | sed "s?^\.?$CURR_DIR?"`
SCENE_DIR=`echo "$SCENE_DIR" | sed "s?^\([^/]\)?$CURR_DIR/\1?"`
FILE_LIST=`find "$SCENE_DIR" -not -path "*__empty*" -name "*.ini" | sort`
cd "$OUTPUT_DIR"
#echo "$FILE_LIST"
#echo "-------"
#echo "$OUTPUT_DIR"
#echo "$SCENE_DIR"
if [ -z "$LOG_FILE" ] ; then
echo "$FILE_LIST" | xargs -n 1 povray +L$SCENE_DIR
else
echo "$FILE_LIST" | xargs -n 1 povray +L$SCENE_DIR 2>&1 | tee -a "$LOG_FILE"
fi
cd "$CURR_DIR"