summaryrefslogtreecommitdiff
path: root/http/bin/mkws
blob: b005500d55d8ce842c9144bef0fc211ee044a462 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/sh -e
export PATH="$(dirname $(realpath $0)):$PATH"

usage() {
	>&2 printf "usage: %s url [path]\\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 [ -d "${PUBLIC}" ]
then
  echo "Copying from $(basename "${PUBLIC}") into $(basename "${OUT}")"
  cp -r "${PUBLIC}" "${OUT}"
else
  echo "No $(basename "${PUBLIC}") folder found"
  mkdir -p "${OUT}"
fi

if ! test -f "${SRC}"/index.upphtml
then
	>&2 printf "no index.upphtml file found\\n"
	exit 1
fi

for t in $(find -L "${SRC}/" -type f -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

  echo "Written ${OUT}/${rel_dir}${name}.${ext}"
done

echo "Making sitemap.xml"
pp "${SHARE}"/sitemap.uppxml "$1" > "${OUT}"/sitemap.xml