forked from netrisai/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
updatePages.sh
executable file
·143 lines (104 loc) · 4.05 KB
/
updatePages.sh
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
136
137
138
139
140
141
142
143
#!/bin/bash
set -x
###################
# INSTALL DEPENDS #
###################
apt-get update
apt-get -y install git rsync python3-pip python3-virtualenv python3-setuptools
python3 -m pip install --upgrade sphinx-rtd-theme==0.5.1 importlib-metadata==4.0.1 gitpython rinohtype pygments
#####################
# DECLARE VARIABLES #
#####################
pwd
env
ls -lah
export SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
# make a new temp dir which will be our GitHub Pages docroot
docroot=`mktemp -d`
##############
# BUILD DOCS #
##############
# first, cleanup any old builds' static assets
make clean
# get a list of branches, excluding 'HEAD' and 'gh-pages'
versions="`git for-each-ref '--format=%(refname:lstrip=-1)' refs/remotes/origin/ | grep -viE '^(HEAD|gh-pages)$'`"
for current_version in ${versions}; do
# make the current language available to conf.py
export current_version
git checkout -B ${current_version} refs/remotes/origin/${current_version}
# rename "master" to "stable"
if [[ "${current_version}" == "master" ]]; then
current_version="stable"
fi
echo "INFO: Building sites for ${current_version}"
# skip this branch if it doesn't have our dir & sphinx config
if [ ! -e 'conf.py' ]; then
echo -e "\tINFO: Couldn't find 'conf.py' (skipped)"
continue
fi
languages="en"
##########
# BUILDS #
##########
echo "INFO: Building for ${languages}"
# HTML #
sphinx-build -b html . _build/html/${languages}/${current_version} -D language="${languages}"
# PDF #
sphinx-build -b rinoh . _build/rinoh -D language="${languages}"
mkdir -p "${docroot}/manifests/${languages}/${current_version}"
cp "_build/rinoh/ReadtheDocsTemplate.pdf" "${docroot}/manifests/${languages}/${current_version}/netris-docs_${languages}_${current_version}.pdf"
# EPUB #
sphinx-build -b epub . _build/epub -D language="${languages}"
mkdir -p "${docroot}/manifests/${languages}/${current_version}"
cp "_build/epub/Netrisdocs.epub" "${docroot}/manifests/${languages}/${current_version}/netris-docs_${languages}_${current_version}.epub"
# copy the static assets produced by the above build into our docroot
rsync -av "_build/html/" "${docroot}/"
done
# return to master branch
git checkout master
#######################
# Update GitHub Pages #
#######################
git config --global user.name "${GITHUB_ACTOR}"
git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com"
pushd "${docroot}"
# don't bother maintaining history; just generate fresh
git init
git remote add deploy "https://token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
git checkout -b gh-pages
# add .nojekyll to the root so that github won't 404 on content added to dirs
# that start with an underscore (_), such as our "_content" dir..
touch .nojekyll
# add redirect (for now) since I want repo-specific docs dirs, but we only have one so far
cat >> index.html <<EOF
<!DOCTYPE html>
<html>
<head>
<title>Netris Docs</title>
<meta http-equiv = "refresh" content="0; url=https://www.netris.ai/docs/" />
</head>
<body>
<p>Please wait while you're redirected to our <a href="/">netris documentation page</a>.</p>
</body>
</html>
EOF
# Add README
cat >> README.md <<EOF
# GitHub Pages Cache
Nothing to see here. The contents of this branch are essentially a cache that's not intended to be viewed on github.com.
You can view the actual documentation as it's intended to be viewed at [https://netris.ai/docs/](https://netris.ai/docs/)
If you're looking to update our documentation, check the relevant development branch's ['docs'](https://github.com/netrisai/docs).
EOF
# copy the resulting html pages built from sphinx above to our new git repo
git add .
# commit all the new files
msg="Updating Docs for commit ${GITHUB_SHA} made on `date -d"@${SOURCE_DATE_EPOCH}" --iso-8601=seconds` from ${GITHUB_REF}"
git commit -am "${msg}"
# overwrite the contents of the gh-pages branch on our github.com repo
git push deploy gh-pages --force
popd # return to main repo sandbox root
##################
# CLEANUP & EXIT #
##################
# exit cleanly
exit 0