73 lines
1.7 KiB
Bash
Executable File
73 lines
1.7 KiB
Bash
Executable File
#!/bin/sh -e
|
|
export PATH="$(dirname $(realpath $0)):$PATH"
|
|
|
|
usage() {
|
|
>&2 printf "usage: %s url [pattern]\\n" "$(basename "$0")"
|
|
exit 1
|
|
}
|
|
|
|
test $# -lt 1 && usage
|
|
|
|
export SRC="$(realpath src)"
|
|
export PUBLIC="$(realpath public)"
|
|
export SHARE="$(realpath share)"
|
|
export LAYOUTS="$(realpath share/layouts)"
|
|
export DEFAULT_LAYOUT="${LAYOUTS}/default.layout.upphtml"
|
|
export OUT="$(realpath out)"
|
|
|
|
if ! test -f "${SRC}"/index.upphtml
|
|
then
|
|
>&2 printf "no index.upphtml file found\\n"
|
|
exit 1
|
|
fi
|
|
|
|
PATH_PATTERN="${2:-*}"
|
|
for t in $(find -L "${SRC}/" -type f -and -wholename "${PATH_PATTERN}" -and -name "*\.upp*" -and -not -name "*\.upp*\.*")
|
|
do
|
|
basename="$(basename "$t")"
|
|
ext="${basename##*upp}"
|
|
|
|
basename_without_ext="${basename%\.upp${ext}}"
|
|
penultimate_segment="${basename_without_ext##*\.}"
|
|
if [ "$basename_without_ext" != "$penultimate_segment" ] && [ -f "${LAYOUTS}/${penultimate_segment}.layout.upphtml" ]
|
|
then
|
|
layout="${LAYOUTS}/${penultimate_segment}.layout.upphtml"
|
|
name="${basename%\.${penultimate_segment}\.upp${ext}}"
|
|
else
|
|
layout="${DEFAULT_LAYOUT}"
|
|
name="${basename%\.upp${ext}}"
|
|
fi
|
|
|
|
in_dir="$(dirname "$t")/"
|
|
rel_dir="${in_dir#${SRC}/}"
|
|
mkdir -p "${OUT}/${rel_dir}/"
|
|
|
|
args="$( [ -f "${t}.args" ] && cat "${t}.args" || echo "" )"
|
|
if [ "$(head -n 1 "${layout}")" = "#!" ]
|
|
then
|
|
>"${layout}.tmp" echo "
|
|
#!
|
|
${args}
|
|
$(tail -n +2 "${layout}")
|
|
"
|
|
else
|
|
>"${layout}.tmp" echo "
|
|
#!
|
|
${args}
|
|
#!
|
|
$(cat "${layout}")
|
|
"
|
|
fi
|
|
if [ "$ext" = "html" ]
|
|
then
|
|
pp "${layout}.tmp" "${t}" "${1}" > \
|
|
"${OUT}/${rel_dir}/${name}.${ext}"
|
|
else
|
|
pp "${t}" "${1}" > \
|
|
"${OUT}/${rel_dir}/${name}.${ext}"
|
|
fi
|
|
rm "${layout}.tmp"
|
|
|
|
echo "Written ${OUT}/${rel_dir}${name}.${ext}"
|
|
done
|