Check-in [333c671a3a]
Overview
Comment:Include download page in wiki pages updated
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 333c671a3a495f8ae846aec83c5b790fdaeef9244ba6a3bcc0d1e6018b9eae72
User & Date: rkeene on 2018-07-09 22:12:53
Other Links: manifest | tags
Context
2018-07-10
00:01
As part of release engineering, upload unversioned files check-in: f3070aed72 user: rkeene tags: trunk
2018-07-09
22:12
Include download page in wiki pages updated check-in: 333c671a3a user: rkeene tags: trunk
16:52
Updated to support creating a wiki page for the Tcl Nano manual page check-in: 3bf973af21 user: rkeene tags: trunk
Changes

Modified build/update-wiki from [044a2d83b9] to [c5365d627b].

1
2
3
4
5



6

7
8
9







10



11


12




13
14
15
16
17
18



















































19
20
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




-
+
+
+

+
-
-
-
+
+
+
+
+
+
+

+
+
+
-
+
+

+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


#! /usr/bin/env bash

set -e

cd "$(dirname "${BASH_SOURCE[0]}")/.."
# Wiki pages to update
wikiPageManual='Manual'
wikiPageDownloads='Downloads'

# Function to update a wiki page, if it has changed
tclNanoVersion=0.1
tclNanoReleaseDate='09-Jul-2018'
wikiPageManual='Manual'
function updatePage() {
	local pageName newContents mimeType
	local oldContents

	pageName="$1"
	newContents="$2"
	mimeType="$3"

	if [ -z "${mimeType}" ]; then
		mimeType='text/x-fossil-wiki'
	fi
manPage="$(groff -mandoc -Thtml nano.man | sed -r 's@</*(body|html)( [^>]*|)>@@g;/<head>/,/<\/head>/ d' | sed "s/@@VERS@@/${tclNanoVersion}/g;s/@@SHORT_DATE@@/${tclNanoRelaseDate}/g" | sed 's/\[/\&#91;/g;s/\]/\&#93;/' | tail -n +5)"

	oldContents="$(fossil wiki export "${pageName}" 2>/dev/null)" || oldContents=''

	if [ "${oldContents}" != "${newContents}" ]; then
		echo "${newContents}" | fossil wiki commit --mimetype "${mimeType}" "${pageName}" >/dev/null 2>/dev/null || \
			echo "${newContents}" | fossil wiki create --mimetype "${mimeType}" "${pageName}" || return 1
	fi
oldManPage="$(fossil wiki export "${wikiPageManual}" 2>/dev/null)" || oldManPage=''

if [ "${oldManPage}" != "${manPage}" ]; then
	echo "${manPage}" | fossil wiki commit --mimetype text/x-fossil-wiki "${wikiPageManual}" || \
		echo "${manPage}" | fossil wiki create --mimetype text/x-fossil-wiki "${wikiPageManual}"
fi

	return 0
}

# Generate the new downloads page
function generateDownloads() {
	local version tarball sha256

	version="$1"
	tarball="$2"
	sha256="$3"

	if [ -z "${version}" -o -z "${tarball}" ]; then
		return 0
	fi

	echo 'Tcl Nano'
	echo '========'
	echo ''
	echo "Current release: **${version}**"
	echo '  - Downloads:'
	echo "    - [Source](/uv/${tarball}) <small>(SHA2-256: ${sha256})</small>"
	echo ''
	echo "Older releases may be found in the [archives](/uvlist)."

	return 0
}

# Ensure we are operating in the root of the checkout
cd "$(dirname "${BASH_SOURCE[0]}")/.."

# Update the repository
fossil sync
fossil uv sync

# Determine latest release
tclNanoVersion="$(fossil uv ls | sed 's/^releases\/tcl-nano-\(.*\)\.tar\.gz/\1/;t;d' | sort --version-sort | tail -n 1)"
tclNanoTarball="releases/tcl-nano-${tclNanoVersion}.tar.gz"
tclNanoReleaseDate="$(fossil uv cat "${tclNanoTarball}" 2>/dev/null | gzip -dc 2>/dev/null | tar -tvf - 2>/dev/null | awk '{ print $4 }')"
tclNanoTarballSHA256="$(fossil uv cat "${tclNanoTarball}" 2>/dev/null | openssl dgst -sha256 | sed 's/.*= *//')"

# Generate the new manual page entry
manPage="$(groff -mandoc -Thtml nano.man | sed -r 's@</*(body|html)( [^>]*|)>@@g;/<head>/,/<\/head>/ d' | sed "s/@@VERS@@/${tclNanoVersion}/g;s/@@SHORT_DATE@@/${tclNanoRelaseDate}/g" | sed 's/\[/\&#91;/g;s/\]/\&#93;/g' | tail -n +5)"
updatePage "${wikiPageManual}" "${manPage}"

# Generate the new download page entry
downloadsPage="$(generateDownloads "${tclNanoVersion}" "${tclNanoTarball}" "${tclNanoTarballSHA256}")"
updatePage "${wikiPageDownloads}" "${downloadsPage}" 'text/markdown'

# Push changes if any have been made
fossil sync

exit 0