2022-09-24 22:07:46 +00:00
|
|
|
#!/bin/bash
|
2022-10-04 21:42:16 +00:00
|
|
|
# render.sh: part of the tape-and-string framework.
|
2023-11-05 14:01:23 +00:00
|
|
|
#V:3.6-p1
|
2023-02-10 19:02:43 +00:00
|
|
|
#B: Load
|
2023-02-08 17:17:45 +00:00
|
|
|
enable -f /usr/lib/bash/csv csv
|
|
|
|
declare -A title
|
2023-02-10 19:02:43 +00:00
|
|
|
#E: Load
|
|
|
|
#B: Definition
|
2023-02-17 13:13:52 +00:00
|
|
|
function inf { 1>&2 echo -e "\x1B[1;32mINF\x1B[0m: $*"; }
|
|
|
|
function wrn { 1>&2 echo -e "\x1B[1;93mWRN\x1B[0m: $*"; }
|
|
|
|
function err { 1>&2 echo -e "\x1B[1;31mERR\x1B[0m: $*"; }
|
2023-02-10 14:49:00 +00:00
|
|
|
function dirs {
|
2023-02-11 22:26:39 +00:00
|
|
|
if test -d out; then
|
|
|
|
wrn "Directory 'out' already exists."
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
local i o dir
|
|
|
|
dir=(`./pfiles.rb dir`)
|
|
|
|
inf "Creating directory structure..."
|
|
|
|
echo ${dir[@]}
|
|
|
|
for i in ${dir[@]}; do
|
|
|
|
o="${i/in/out}"
|
|
|
|
mkdir -pv $o
|
|
|
|
done
|
2023-02-10 14:49:00 +00:00
|
|
|
}
|
|
|
|
function docs {
|
2023-02-18 21:12:37 +00:00
|
|
|
load_title
|
2023-02-11 22:26:39 +00:00
|
|
|
if ! test -d out; then
|
|
|
|
err "Cannot render, directory 'out' does not exist, run ./render.sh dir"
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
local i o doc
|
|
|
|
doc=(`./pfiles.rb doc`)
|
|
|
|
inf "Rendering document files..."
|
|
|
|
for i in ${doc[@]}; do
|
|
|
|
o="${i/in/out}"
|
2023-02-18 23:45:41 +00:00
|
|
|
o="${o%.*}.html"
|
2023-02-17 18:30:58 +00:00
|
|
|
echo "'$i' -> '$o'"
|
2023-02-11 22:26:39 +00:00
|
|
|
if test -z "${title[$i]}"; then
|
2023-02-18 23:45:41 +00:00
|
|
|
m4 -D_INFILE="$i" -DCSSI=$(awk -f awk/getsd.awk <<< "$i") m4/main.html.m4 > $o
|
2023-02-11 22:26:39 +00:00
|
|
|
else
|
2023-02-18 23:45:41 +00:00
|
|
|
m4 -D_INFILE="$i" -DCSSI=$(awk -f awk/getsd.awk <<< "$i") -DTITLE="${title[$i]}" m4/main.html.m4 > $o
|
2023-02-11 22:26:39 +00:00
|
|
|
fi
|
|
|
|
done
|
2023-02-10 14:49:00 +00:00
|
|
|
}
|
2023-11-05 14:01:23 +00:00
|
|
|
function sassfn {
|
2023-02-11 22:26:39 +00:00
|
|
|
if ! test -d out; then
|
|
|
|
err "Cannot render, directory 'out' does not exist, run ./render.sh dir"
|
2023-11-05 14:01:23 +00:00
|
|
|
exit 1
|
2023-02-11 22:26:39 +00:00
|
|
|
fi
|
|
|
|
inf "Rendering sass files..."
|
2023-11-05 14:01:23 +00:00
|
|
|
sass --no-source-map in/css:out/css
|
2023-02-10 14:49:00 +00:00
|
|
|
}
|
|
|
|
function other {
|
2023-10-27 14:04:35 +00:00
|
|
|
local other=`./pfiles.rb rest`
|
|
|
|
for i in $other; do
|
2023-11-05 14:01:23 +00:00
|
|
|
if test -f $i; then
|
|
|
|
inf "Skipping $i, file/hardlink exists..."
|
|
|
|
continue
|
|
|
|
fi
|
2023-10-27 14:04:35 +00:00
|
|
|
ln -v $i ${i/in/out}
|
|
|
|
done
|
2023-02-10 14:49:00 +00:00
|
|
|
}
|
2023-02-19 01:18:26 +00:00
|
|
|
function sitemap {
|
|
|
|
./gensimap.sh
|
|
|
|
}
|
2023-02-10 14:49:00 +00:00
|
|
|
function all {
|
2023-02-18 21:12:37 +00:00
|
|
|
load_title
|
2023-02-11 22:26:39 +00:00
|
|
|
dirs
|
|
|
|
docs
|
|
|
|
sass
|
|
|
|
other
|
2023-02-10 14:49:00 +00:00
|
|
|
}
|
2023-02-10 19:02:43 +00:00
|
|
|
function info {
|
2023-02-18 21:12:37 +00:00
|
|
|
load_title
|
2023-02-11 22:26:39 +00:00
|
|
|
local i
|
|
|
|
echo "* \$ignore"
|
|
|
|
if [ ${#ignore[@]} -eq 0 ]; then
|
|
|
|
echo null
|
|
|
|
else
|
|
|
|
for i in ${ignore[@]}; do
|
|
|
|
echo "- $i"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
echo "* \$titles"
|
|
|
|
for i in ${!title[@]}; do
|
|
|
|
echo " - $i :: ${title[$i]}"
|
|
|
|
done
|
2023-02-10 19:02:43 +00:00
|
|
|
}
|
2023-02-18 21:12:37 +00:00
|
|
|
function load_title {
|
|
|
|
local ii
|
|
|
|
while read -r ii; do
|
|
|
|
csv -a i "$ii"
|
|
|
|
title[in/${i[0]}]=${i[1]}
|
|
|
|
done < dat/title.csv
|
|
|
|
}
|
2023-02-10 19:02:43 +00:00
|
|
|
#E: Definition
|
|
|
|
#B: Logic
|
|
|
|
#B: Logic/LoadDefs
|
|
|
|
#B: Logic/LoadDefs/ignore
|
|
|
|
if test -f ignore.txt; then
|
2023-02-11 22:26:39 +00:00
|
|
|
while read -r i; do
|
|
|
|
ignore+=(in/$i)
|
2023-02-17 18:17:33 +00:00
|
|
|
done < dat/ignore.txt
|
2023-02-10 19:02:43 +00:00
|
|
|
fi
|
|
|
|
#E: Logic/LoadDefs/ignore
|
|
|
|
#E: Logic/LoadDefs
|
2023-02-10 14:49:00 +00:00
|
|
|
if test -z "$*"; then
|
2023-02-11 22:26:39 +00:00
|
|
|
all
|
|
|
|
exit $?
|
2023-02-10 14:49:00 +00:00
|
|
|
fi
|
|
|
|
case $1 in
|
2023-02-17 13:13:52 +00:00
|
|
|
dir) dirs;;
|
|
|
|
doc) docs;;
|
2023-02-18 21:12:37 +00:00
|
|
|
docs) docs;;
|
2023-11-05 14:01:23 +00:00
|
|
|
s[ac]ss) sassfn;;
|
2023-10-27 14:04:35 +00:00
|
|
|
other) dirs; other;;
|
2023-02-17 13:13:52 +00:00
|
|
|
rest) other;;
|
|
|
|
info) info;;
|
2023-02-19 01:18:26 +00:00
|
|
|
sitemap) sitemap;;
|
2023-02-17 13:13:52 +00:00
|
|
|
vall) info; all;;
|
|
|
|
all) all;;
|
|
|
|
*) all;;
|
2023-02-10 14:49:00 +00:00
|
|
|
esac
|
2023-02-10 19:02:43 +00:00
|
|
|
#E: Logic
|
|
|
|
exit $?
|