mirror of
https://github.com/flynx/photobook.git
synced 2025-11-01 03:40:10 +00:00
fixing bugs...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
feb1395bd0
commit
0b26af3abf
BIN
examples/spread generation/spreads/04/01.png
Normal file
BIN
examples/spread generation/spreads/04/01.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 384 KiB |
0
examples/spread generation/spreads/04/fullbleed.tpl
Normal file
0
examples/spread generation/spreads/04/fullbleed.tpl
Normal file
@ -103,20 +103,18 @@ TEMPLATE_PATH=templates/
|
|||||||
|
|
||||||
IMAGE_DIR=pages/
|
IMAGE_DIR=pages/
|
||||||
|
|
||||||
#IMAGE_HIRES_DIR=
|
|
||||||
|
|
||||||
|
|
||||||
CAPTIONS=captions/
|
CAPTIONS=captions/
|
||||||
|
|
||||||
|
#IMAGE_HIRES_DIR=
|
||||||
|
|
||||||
|
TEXT_FORMATS='.*\.txt$'
|
||||||
|
IMAGE_FORMATS='.*\.(jpeg|jpg|png|pdf|svg|eps)$'
|
||||||
|
|
||||||
# Default timplates
|
# Default timplates
|
||||||
TEXT_SPREAD=
|
TEXT_SPREAD=text-spread
|
||||||
#SINGLE_IMAGE_SPREAD=blank-image
|
|
||||||
SINGLE_IMAGE_SPREAD=imagebleedleft
|
SINGLE_IMAGE_SPREAD=imagebleedleft
|
||||||
DOUBLE_IMAGE_SPREAD=image-image
|
DOUBLE_IMAGE_SPREAD=image-image
|
||||||
|
|
||||||
TEXT_FORMATS='.*.txt$'
|
|
||||||
IMAGE_FORMATS='.*\.(jpeg|jpg|png|pdf|svg|eps)$'
|
|
||||||
|
|
||||||
|
|
||||||
# load config...
|
# load config...
|
||||||
[ -e $CFG_FILE ] && source $CFG_FILE
|
[ -e $CFG_FILE ] && source $CFG_FILE
|
||||||
@ -139,6 +137,8 @@ printhelp(){
|
|||||||
echo " - single image default template (default: $SINGLE_IMAGE_SPREAD)."
|
echo " - single image default template (default: $SINGLE_IMAGE_SPREAD)."
|
||||||
echo " --double-image-tpl=NAME"
|
echo " --double-image-tpl=NAME"
|
||||||
echo " - double image default template (default: $DOUBLE_IMAGE_SPREAD)."
|
echo " - double image default template (default: $DOUBLE_IMAGE_SPREAD)."
|
||||||
|
echo " --text-spread-tpl=NAME"
|
||||||
|
echo " - text spread default template (default: $TEXT_SPREAD)."
|
||||||
echo
|
echo
|
||||||
echo "Parameters:"
|
echo "Parameters:"
|
||||||
echo " PATH - path to root pages directory (default: $IMAGE_DIR)"
|
echo " PATH - path to root pages directory (default: $IMAGE_DIR)"
|
||||||
@ -192,6 +192,11 @@ while true ; do
|
|||||||
shift
|
shift
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
|
--text-spread-tpl)
|
||||||
|
TEXT_SPREAD=$2
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
|
||||||
# handle unknown options...
|
# handle unknown options...
|
||||||
-*|--*)
|
-*|--*)
|
||||||
@ -223,25 +228,36 @@ STOP=$(( FROM + COUNT ))
|
|||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
# usage:
|
||||||
|
# getCaption SPREAD IMAGE
|
||||||
# XXX should we report images w/o captions???
|
# XXX should we report images w/o captions???
|
||||||
getCaption(){
|
getCaption(){
|
||||||
local C=`basename "${1%.*}"`
|
local spread=$1
|
||||||
#C="${C/[0-9]-}"
|
local name=`basename "${2%.*}"`
|
||||||
C="$CAPTIONS/${C}.txt"
|
|
||||||
|
|
||||||
if [ -e "${C}" ] ; then
|
local captions=(
|
||||||
C=$(cat "${C}" \
|
"$CAPTIONS/${name}.txt"
|
||||||
| sed 's/\\\/\\\\\\\/g')
|
"${spread}/${name}.txt"
|
||||||
else
|
)
|
||||||
C=""
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ${C[*]}
|
local caption
|
||||||
|
for caption in "${captions[@]}" ; do
|
||||||
|
if [ -e "${caption}" ] ; then
|
||||||
|
echo ${caption}
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
readCaption(){
|
||||||
|
[ -z "$1" ] \
|
||||||
|
&& return 1
|
||||||
|
cat "$1" \
|
||||||
|
| sed -e 's/\\/\\\\\\/g'
|
||||||
}
|
}
|
||||||
|
|
||||||
# XXX EXPERIMENTAL index template variables...
|
# XXX EXPERIMENTAL index template variables...
|
||||||
declare -A TEMPLATE_INDEX
|
declare -A TEMPLATE_INDEX
|
||||||
templateVars(){
|
templateSlots(){
|
||||||
# cache the vars...
|
# cache the vars...
|
||||||
if [ ${TEMPLATE_INDEX[$1]+_} ] ; then
|
if [ ${TEMPLATE_INDEX[$1]+_} ] ; then
|
||||||
TEMPLATE_INDEX[$1]=$(cat "$1" \
|
TEMPLATE_INDEX[$1]=$(cat "$1" \
|
||||||
@ -251,13 +267,7 @@ templateVars(){
|
|||||||
fi
|
fi
|
||||||
echo ${TEMPLATE_INDEX[$1]}
|
echo ${TEMPLATE_INDEX[$1]}
|
||||||
}
|
}
|
||||||
# cache all template vars...
|
|
||||||
indexTemplates(){
|
|
||||||
local tpl
|
|
||||||
for tpl in "${TEMPLATE_PATH}"/* ; do
|
|
||||||
templateVars "${tpl}" > /dev/null
|
|
||||||
done
|
|
||||||
}
|
|
||||||
# Populate template image/text slots
|
# Populate template image/text slots
|
||||||
# usage:
|
# usage:
|
||||||
# populateTemplate SPREAD TEMPLATE ITEMS...
|
# populateTemplate SPREAD TEMPLATE ITEMS...
|
||||||
@ -265,6 +275,9 @@ indexTemplates(){
|
|||||||
populateTemplate(){
|
populateTemplate(){
|
||||||
local spread="$1"
|
local spread="$1"
|
||||||
local tpl="$2"
|
local tpl="$2"
|
||||||
|
[ -e "$tpl" ] \
|
||||||
|
|| return 1
|
||||||
|
# XXX for some magical reason this returns an empty list...
|
||||||
local slots=( $(templateSlots "${tpl}") )
|
local slots=( $(templateSlots "${tpl}") )
|
||||||
local text=$(cat "${tpl}")
|
local text=$(cat "${tpl}")
|
||||||
|
|
||||||
@ -285,12 +298,21 @@ populateTemplate(){
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo >&2
|
||||||
|
echo POPULATETEMPLATE: "$spread" "$tpl" ... =\> $(templateSlots "${tpl}") >&2
|
||||||
|
echo >&2
|
||||||
|
|
||||||
local var
|
local var
|
||||||
local val
|
local val
|
||||||
local index=()
|
local index=()
|
||||||
local captions=()
|
local captions=()
|
||||||
local name
|
local name
|
||||||
# pass 1: images...
|
# pass 1: images...
|
||||||
|
# NOTE: we are doing this in three passes as caption and image slots
|
||||||
|
# can be included in the template in any order but the captions
|
||||||
|
# need all the images to be fully populated/indexed (passes 1
|
||||||
|
# and 2), and text is done as a separate pass to prevent it
|
||||||
|
# from competing with captions.
|
||||||
local i=0
|
local i=0
|
||||||
for var in ${slots[@]} ; do
|
for var in ${slots[@]} ; do
|
||||||
name=${var//[0-9]/}
|
name=${var//[0-9]/}
|
||||||
@ -325,22 +347,12 @@ populateTemplate(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# get global caption...
|
# get global caption...
|
||||||
val=$(getCaption "${index[${var/$name/}]}")
|
val=$(getCaption "$spread" "${index[${var/$name/}]}" "${txt[@]}")
|
||||||
# see if we have a local caption if no global is found...
|
|
||||||
if [ -z ${val} ] ; then
|
if [ -n "${val}" ] ; then
|
||||||
# get corresponding image name...
|
# XXX need to clear the used texts...
|
||||||
local image=$(basename "${index[${var/$name/}]%.*}")
|
# XXX
|
||||||
for i in ${!txt[@]} ; do
|
val=$(readCaption "${val}")
|
||||||
local e=${txt[$i]}
|
|
||||||
if [ "$(basename ${e%.*})" = "${image}" ] ; then
|
|
||||||
if [ -e "${e}" ] ; then
|
|
||||||
val=$(cat "${e}" \
|
|
||||||
| sed 's/\\\/\\\\\\\/g')
|
|
||||||
fi
|
|
||||||
unset "txt[$i]"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
text=$(echo -e "${text}" | \
|
text=$(echo -e "${text}" | \
|
||||||
@ -367,28 +379,22 @@ populateTemplate(){
|
|||||||
sed "s/\${${var}}/${val}/g")
|
sed "s/\${${var}}/${val}/g")
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# print out the filled template...
|
||||||
|
echo % page template: $tpl
|
||||||
echo -e "${text}"
|
echo -e "${text}"
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
# usage:
|
# usage:
|
||||||
# handleSpread SPREAD
|
# handleSpread SPREAD
|
||||||
#
|
#
|
||||||
# closure: $IMAGE_HIRES_DIR, $SINGLE_IMAGE_SPREAD, $TEXT_SPREAD
|
# closure: $IMAGE_HIRES_DIR, $SINGLE_IMAGE_SPREAD, $TEXT_SPREAD
|
||||||
handleSpread(){
|
handleSpread(){
|
||||||
local spread=$1
|
local spread="$1"
|
||||||
# skip non-spreads...
|
# skip non-spreads...
|
||||||
if ! [ -d "$spread" ] ; then
|
[ -d "$spread" ] \
|
||||||
return
|
|| return 1
|
||||||
fi
|
|
||||||
# skip temporarily disabled...
|
|
||||||
if [ -z ${spread/-*/} ] ; then
|
|
||||||
echo "% spread: ${spread/-/}: skipped..." | tee >(cat >&2)
|
|
||||||
echo %
|
|
||||||
return
|
|
||||||
else
|
|
||||||
printf "Spread ($c/$l): ${spread/-/} \r" >&2
|
|
||||||
echo "% spread: ${spread/-/}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# auto layout / templates...
|
# auto layout / templates...
|
||||||
# NOTE: to use a specific template just `touch <template-name>.tpl`
|
# NOTE: to use a specific template just `touch <template-name>.tpl`
|
||||||
@ -412,6 +418,7 @@ handleSpread(){
|
|||||||
img+=("$elem")
|
img+=("$elem")
|
||||||
items+=("$elem")
|
items+=("$elem")
|
||||||
elif [[ "$elem" =~ $TEXT_FORMATS ]] ; then
|
elif [[ "$elem" =~ $TEXT_FORMATS ]] ; then
|
||||||
|
txt+=("$elem")
|
||||||
items+=("$elem")
|
items+=("$elem")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -439,9 +446,10 @@ handleSpread(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# manual layout...
|
# manual layout...
|
||||||
|
local template
|
||||||
local layout=( $spread/*layout.tex )
|
local layout=( $spread/*layout.tex )
|
||||||
if ! [ -z $layout ] ; then
|
if ! [ -z $layout ] ; then
|
||||||
local template=${layout[0]}
|
template=${layout[0]}
|
||||||
|
|
||||||
# templates and partial templates...
|
# templates and partial templates...
|
||||||
else
|
else
|
||||||
@ -455,15 +463,16 @@ handleSpread(){
|
|||||||
# no template explicitly defined -> match auto-template...
|
# no template explicitly defined -> match auto-template...
|
||||||
if [ -z $layout ] && [ -z $template ] ; then
|
if [ -z $layout ] && [ -z $template ] ; then
|
||||||
# no images...
|
# no images...
|
||||||
|
# XXX check if template exists...
|
||||||
if [ ${#img[@]} == 0 ] ; then
|
if [ ${#img[@]} == 0 ] ; then
|
||||||
template=$TEXT_SPREAD
|
template=$(getTemplate "$spread" "$TEXT_SPREAD")
|
||||||
|
fi
|
||||||
# single image...
|
# single image...
|
||||||
elif [ ${#img[@]} == 1 ] ; then
|
if [ -z $template ] && [ ${#img[@]} == 1 ] ; then
|
||||||
template=$SINGLE_IMAGE_SPREAD
|
template=$(getTemplate "$spread" "$SINGLE_IMAGE_SPREAD")
|
||||||
|
fi
|
||||||
# build spread from pages...
|
# build spread from pages...
|
||||||
else
|
if [ -z $template ] ; then
|
||||||
local C=0
|
local C=0
|
||||||
local P
|
local P
|
||||||
local elem
|
local elem
|
||||||
@ -473,14 +482,19 @@ handleSpread(){
|
|||||||
&& echo "left" \
|
&& echo "left" \
|
||||||
|| echo "right")
|
|| echo "right")
|
||||||
|
|
||||||
|
# XXX need to use populateTemplate here...
|
||||||
|
# ...to do this need to somehow remove the used
|
||||||
|
# slots/files from list...
|
||||||
|
|
||||||
# image...
|
# image...
|
||||||
if [[ "$elem" =~ $IMAGE_FORMATS ]] ; then
|
if [[ "$elem" =~ $IMAGE_FORMATS ]] ; then
|
||||||
echo %
|
echo %
|
||||||
echo "% $P page (image)..."
|
echo "% $P page (image)..."
|
||||||
TEMPLATE=`getTemplate "$spread" "imagepage"`
|
template=`getTemplate "$spread" "imagepage"`
|
||||||
echo % page template: $template
|
echo % page template: $template
|
||||||
anotatePath "${elem}"
|
anotatePath "${elem}"
|
||||||
local caption=`getCaption "${elem}"`
|
local caption=$(getCaption "$spread" "${elem}")
|
||||||
|
caption=$(readCaption "$caption")
|
||||||
cat "${template}" \
|
cat "${template}" \
|
||||||
| sed -e "s%\${IMAGE0\?}%${elem%.*}%" \
|
| sed -e "s%\${IMAGE0\?}%${elem%.*}%" \
|
||||||
-e "s%\${CAPTION0\?}%${caption}%"
|
-e "s%\${CAPTION0\?}%${caption}%"
|
||||||
@ -488,23 +502,23 @@ handleSpread(){
|
|||||||
else
|
else
|
||||||
echo %
|
echo %
|
||||||
echo "% $P page (text)..."
|
echo "% $P page (text)..."
|
||||||
template=`getTemplate "$spread" "textpage"`
|
template=$(getTemplate "$spread" "textpage")
|
||||||
echo % page template: $template
|
echo % page template: $template
|
||||||
cat "${template}" \
|
cat "${template}" \
|
||||||
| sed "s%\${TEXT}%${elem}%"
|
| sed "s%\${TEXT}%${elem}%"
|
||||||
fi
|
fi
|
||||||
# reset for next page...
|
# reset for next page...
|
||||||
TEMPLATE=
|
template=
|
||||||
# ignore the rest of the items when we are done
|
# ignore the rest of the items when we are done
|
||||||
# creating two pages...
|
# creating two pages...
|
||||||
[ $C == 2 ] \
|
[ $C == 2 ] \
|
||||||
&& break
|
&& return 0
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# formatting done...
|
# formatting done...
|
||||||
[ -z $TEMPLATE ] \
|
[ -z $template ] \
|
||||||
&& return
|
&& return 0
|
||||||
|
|
||||||
# format template path...
|
# format template path...
|
||||||
template=${template/$spread\//}
|
template=${template/$spread\//}
|
||||||
@ -514,6 +528,8 @@ handleSpread(){
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
populateTemplate "$spread" "$template" "${img[@]}" "${txt[@]}"
|
populateTemplate "$spread" "$template" "${img[@]}" "${txt[@]}"
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -535,6 +551,9 @@ getTemplate(){
|
|||||||
if [ -z $TEMPLATE ] ; then
|
if [ -z $TEMPLATE ] ; then
|
||||||
TEMPLATE="$TEMPLATE_PATH/${TYPE}.tex"
|
TEMPLATE="$TEMPLATE_PATH/${TYPE}.tex"
|
||||||
fi
|
fi
|
||||||
|
if ! [ -e $TEMPLATE ] ; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
echo $TEMPLATE
|
echo $TEMPLATE
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -616,135 +635,7 @@ for spread in "${IMAGE_DIR}"/* ; do
|
|||||||
echo "% spread: ${spread/-/}"
|
echo "% spread: ${spread/-/}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
handleSpread "$spread"
|
||||||
# auto layout / templates...
|
|
||||||
# NOTE: to use a specific template just `touch <template-name>.tpl`
|
|
||||||
# in the spread directory...
|
|
||||||
|
|
||||||
# layout tweaks...
|
|
||||||
tweaks=($spread/*tweak.tex)
|
|
||||||
if ! [ -z ${tweaks} ] ; then
|
|
||||||
echo "% tweaks: ${tweaks[0]}"
|
|
||||||
cat ${tweaks[0]}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# NOTE: we also get *.txt files here...
|
|
||||||
items=($spread/*.!(tex|tpl|bak))
|
|
||||||
|
|
||||||
# get hi-res image paths...
|
|
||||||
if ! [ -z $IMAGE_HIRES_DIR ] ; then
|
|
||||||
C=0
|
|
||||||
for img in "${items[@]}" ; do
|
|
||||||
# skip non-images...
|
|
||||||
if [[ "$img" == "${img/.txt/}" ]] ; then
|
|
||||||
#new="../$IMAGE_HIRES_DIR/`basename ${img/[0-9]-/}`"
|
|
||||||
new="$IMAGE_HIRES_DIR/`basename ${img/[0-9]-/}`"
|
|
||||||
# ignore file ext for availability test...
|
|
||||||
# NOTE: the first match may be an unsupported format...
|
|
||||||
new="${new%.*}"
|
|
||||||
new=($new.*)
|
|
||||||
if [ -e "${new[0]}" ] ; then
|
|
||||||
items[$C]=${new[0]}
|
|
||||||
else
|
|
||||||
echo %
|
|
||||||
echo "% WARNING: hi-res image not found for: \"${img}\" -> \"${new}\"" \
|
|
||||||
| tee >(cat >&2)
|
|
||||||
echo %
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
C=$(( C + 1 ))
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# manual layout...
|
|
||||||
layout=($spread/*layout.tex)
|
|
||||||
if ! [ -z $layout ] ; then
|
|
||||||
TEMPLATE=${layout[0]}
|
|
||||||
|
|
||||||
# templates and partial templates...
|
|
||||||
else
|
|
||||||
# spread template...
|
|
||||||
TEMPLATE=($spread/*.tpl)
|
|
||||||
# skip page template refs: *-imagepage.tpl / *-textpage.tpl
|
|
||||||
# XXX this will also eat 0-imagepage.tpl / 20-textpage.tpl -- do a better pattern...
|
|
||||||
if ! [ -z $TEMPLATE ] ; then
|
|
||||||
TEMPLATE=(`ls "$spread/"*.tpl \
|
|
||||||
| egrep -v '.*-(imagepage|textpage)\.tpl'`)
|
|
||||||
fi
|
|
||||||
# no template explicitly defined -> match auto-template...
|
|
||||||
AUTO=
|
|
||||||
if [ -z $layout ] && [ -z $TEMPLATE ] ; then
|
|
||||||
AUTO=" (auto)"
|
|
||||||
if [ ${#items[@]} == 1 ] ; then
|
|
||||||
TEMPLATE=$SINGLE_IMAGE_SPREAD
|
|
||||||
|
|
||||||
# multiple images...
|
|
||||||
else
|
|
||||||
C=0
|
|
||||||
for img in "${items[@]}" ; do
|
|
||||||
C=$(( C + 1 ))
|
|
||||||
P=`[ $C == 1 ] && echo "left" || echo "right"`
|
|
||||||
|
|
||||||
# image...
|
|
||||||
if [ "${img/.txt/}" == "${img}" ] ; then
|
|
||||||
echo %
|
|
||||||
echo "% $P page (image)..."
|
|
||||||
TEMPLATE=`getTemplate "$spread" "imagepage"`
|
|
||||||
echo % page template: $TEMPLATE
|
|
||||||
anotatePath "${img}"
|
|
||||||
CAPTION=`getCaption "${img}"`
|
|
||||||
cat "${TEMPLATE}" \
|
|
||||||
| sed "s%\${IMAGE0\?}%${img%.*}%" \
|
|
||||||
| sed "s%\${CAPTION0\?}%${CAPTION}%"
|
|
||||||
|
|
||||||
# text...
|
|
||||||
else
|
|
||||||
echo %
|
|
||||||
echo "% $P page (text)..."
|
|
||||||
TEMPLATE=`getTemplate "$spread" "textpage"`
|
|
||||||
echo % page template: $TEMPLATE
|
|
||||||
cat "${TEMPLATE}" \
|
|
||||||
| sed "s%\${TEXT}%${img}%"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# reset for next page...
|
|
||||||
TEMPLATE=
|
|
||||||
# only two pages at a time...
|
|
||||||
[ $C == 2 ] && break
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# formatting done...
|
|
||||||
[ -z $TEMPLATE ] && continue
|
|
||||||
|
|
||||||
# XXX index the manual template...
|
|
||||||
#if [ -z ${TEMPLATE_INDEX[$TEMPLATE]}] ; then
|
|
||||||
#fi
|
|
||||||
|
|
||||||
# format...
|
|
||||||
TEMPLATE=${TEMPLATE/$spread\//}
|
|
||||||
TEMPLATE=${TEMPLATE/[0-9]-/}
|
|
||||||
# get...
|
|
||||||
TEMPLATE="$TEMPLATE_PATH/${TEMPLATE[0]%.*}.tex"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# spread template...
|
|
||||||
|
|
||||||
# captions...
|
|
||||||
CAPTION0=`getCaption "${items[0]}"`
|
|
||||||
CAPTION1=`getCaption "${items[1]}"`
|
|
||||||
|
|
||||||
echo "% template: (template${AUTO}: $TEMPLATE)"
|
|
||||||
anotatePath "${items[0]}"
|
|
||||||
|
|
||||||
# fill the template...
|
|
||||||
cat "${TEMPLATE}" \
|
|
||||||
| sed "s%\${IMAGE0\?}%${items[0]%.*}%" \
|
|
||||||
| sed "s%\${CAPTION0\?}%${CAPTION0}%" \
|
|
||||||
| sed "s%\${IMAGE1}%${items[1]%.*}%" \
|
|
||||||
| sed "s%\${CAPTION1}%${CAPTION1}%"
|
|
||||||
done
|
done
|
||||||
|
|
||||||
echo %
|
echo %
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user