Summary Files Commits Branches @commit @diff @stats
path: root / meta / meta.awk
blob: 58603d29b02f26a405c3dadd5546806aa2fec0b9 (plain) (blame)
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
BEGIN {
	FS="\t"
	while ((getline < ENVIRON["META"]) > 0) {
		if ($1 == "") continue
		meta_title[$1] = $2 " \\&mdash; Syndamia"
		meta_description[$1] = $3
	}
	FS=" "

	HEADER = getfile(ENVIRON["HEADER"])
	FOOTER = getfile(ENVIRON["FOOTER"])

	sitemap = ENVIRON["DST"] "/sitemap.xml"
	print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ORS \
	      "<urlset" ORS \
	      "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" ORS \
	      "xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9" ORS \
	      "http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\"" ORS \
	      "xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">" > sitemap

	for (i = ARGC; i > 0; --i) {
		if (!ARGV[i]) continue

		#-- Add header and footer --#
		start = HEADER
		FILENAME = substr(ARGV[i], length(ENVIRON["DST"]) + 2)
		gsub(/\$TITLE/, meta_title[FILENAME], start)
		gsub(/\$DESCRIPTION/, meta_description[FILENAME], start)

		end = FOOTER
		sub(/html$/, "du", FILENAME)
		gsub(/\$DUNBAR_SOURCE/, "/" FILENAME, end)

		# Note: nawk (20250116) has what is probably a bug,
		# if you do "print getfile(f) > f", you'll crash.
		# This is probably because in getfile we close the
		# file, but after the function is finished, the > expects
		# the file to be opened (> probably opens the file before
		# evaluating the print).
		contents = start getfile(ARGV[i]) end
		print contents > ARGV[i]

		#-- Add to sitemap --#
		print "<url><loc>" ENVIRON["URL"] substr(ARGV[i], length(ENVIRON["DST"]) + 1) "</loc><lastmod>" date "</lastmod><priority>1.0</priority></url>" > sitemap
	}

	print "</urlset>" > sitemap
}

function getfile(filename,    status, linebuf, filebuf) {
	while ((status = getline linebuf < filename) > 0)
		filebuf = filebuf linebuf ORS
	close(filename)
	sub(ORS "$", "", filebuf)
	return filebuf
}