File: generate-versions.sh

package info (click to toggle)
dygraphs 2.2.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,340 kB
  • sloc: javascript: 24,842; sh: 800; python: 581; makefile: 45
file content (135 lines) | stat: -rwxr-xr-x 2,671 bytes parent folder | download
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/mksh
# © 2023 mirabilos <t.glaser@tarent.de> Ⓕ MIT

set -eo pipefail
case $KSH_VERSION {
(*MIRBSD\ KSH*) ;;
(*) echo E: do not call me with bash or something; exit 255 ;;
}

cat <<\EOF
<!--#set var="pagetitle" value="version history" -->
<!--#include virtual="header.html" -->

<h2>Version History</h2>

<p>For links to download each release, see the <a href="/download.html">Downloads</a> page.</p>

<table class="versions">
EOF

# could be a function converting */_ to b/i but we do not use it anywhere
alias out='print -rn --'

sed \
    -e 's!&!\&amp;!g' \
    -e 's!<!\&lt;!g' \
    -e 's!>!\&gt;!g' \
    -e 's!>!\&gt;!g' \
    -e 's!"!\&#34;!g' \
    -e 's!\[\([^]]*\)\](\(https*://[!-~]*\))!<a href="\2">\1</a>!g' \
    -e 's!\([ >]\)`\([^`]*\)`!\1<tt>\2</tt>!g' \
    <CHANGES.md |&
in_tr=0
in_ul=0
in_li=0
in_p=0
while IFS= read -pr line; do
	was_in_ul=$in_ul
	if (( in_li )); then
		if [[ $line = '  '* ]]; then
			print -r '<br />'
			out "         ${line##+( )}"
			continue
		fi
		print -r '</li>'
		in_li=0
	fi
	if (( in_ul )); then
		if [[ $line = '- '* ]]; then
			out "        <li>${line##-+( )}"
			in_li=1
			continue
		fi
		print -r '      </ul>'
		in_ul=0
	fi
	if [[ $line = '#'* ]]; then
		if [[ $line = '# '* ]]; then
			if (( in_tr )); then
				print -r '    </td>'
				print -r '  </tr>'
			fi
			line=${line#'# '}
			line=${line%')'}
			title=${line%' ('*}
			tag=$title
			if [[ $tag = v+([0-9.]) ]]; then
				title="<a href=\"#$tag\" title=\"link\">&#x1F517;</a>"$title
			else
				tag=
			fi
			print -r "  <tr${tag:+ id=\"$tag\"}>"
			print -r "    <td>$title<p class=\"date\">${line##*' ('}</p></td>"
			print -r '    <td class="notes">'
			in_tr=1
			continue
		fi
		if [[ $line = '## '* ]]; then
			print -r "      <h4>${line#'## '}</h4><ul>"
			in_ul=1
			continue
		fi
		print -ru2 "E: unsupported headline level"
		print -ru2 "N: $line"
		exit 1
	fi
	if [[ -z $line ]]; then
		if (( in_p )); then
			print -r '</p>'
			in_p=0
		fi
		# in_li/in_ul already handled above
		continue
	fi
	if [[ $line = '- '* ]]; then
		if (( in_p )); then
			print -r '</p>'
			in_p=0
			print -r '      <ul class="moveup">'
		else
			print -r '      <ul>'
		fi
		in_ul=1
		out "        <li>${line##-+( )}"
		in_li=1
		continue
	fi
	if (( in_p )); then
		print -r '<br />'
		print -nr '       '
	elif (( was_in_ul )); then
		print -nr '      <p class="moveup">'
		in_p=1
	else
		print -nr '      <p>'
		in_p=1
	fi
	out "$line"
done
if (( in_p )); then
	print -r '</p>'
fi
if (( in_li )); then
	print -r '</li>'
fi
if (( in_ul )); then
	print -r '      </ul>'
fi
cat <<\EOF
    </td>
  </tr>
</table>

<!--#include virtual="footer.html" -->
EOF