| 1 | #!/usr/bin/env bash
 | 
| 2 | #
 | 
| 3 | # Usage:
 | 
| 4 | #   ./release-version.sh <function name>
 | 
| 5 | 
 | 
| 6 | set -o nounset
 | 
| 7 | set -o pipefail
 | 
| 8 | set -o errexit
 | 
| 9 | 
 | 
| 10 | source test/common.sh  # html-head
 | 
| 11 | 
 | 
| 12 | # NOTE: Left to right evaluation would be nice on this!
 | 
| 13 | #
 | 
| 14 | # Rewrite in YSH:
 | 
| 15 | # 
 | 
| 16 | # sys.stdin.read() | sub( / "\x00" { any* } "\x01" /, html_escape) | write
 | 
| 17 | escape-segments() {
 | 
| 18 |   python -c '
 | 
| 19 | import cgi, re, sys
 | 
| 20 | 
 | 
| 21 | print re.sub(
 | 
| 22 |   r"\x00(.*)\x01", 
 | 
| 23 |   lambda match: cgi.escape(match.group(1)),
 | 
| 24 |   sys.stdin.read())
 | 
| 25 | '
 | 
| 26 | }
 | 
| 27 | 
 | 
| 28 | # TODO: It would be nice to have a column of bugs fixed / addressed!
 | 
| 29 | 
 | 
| 30 | _git-changelog-body() {
 | 
| 31 |   local prev_branch=$1
 | 
| 32 |   local cur_branch=$2
 | 
| 33 |   shift 2
 | 
| 34 | 
 | 
| 35 |   # - a trick for HTML escaping (avoid XSS): surround %s with unlikely bytes,
 | 
| 36 |   #   \x00 and \x01.  Then pipe Python to escape.
 | 
| 37 |   # --reverse makes it go in forward chronlogical order.
 | 
| 38 | 
 | 
| 39 |   # %x00 generates the byte \x00
 | 
| 40 |   local format='<tr>
 | 
| 41 |     <td><a class="checksum"
 | 
| 42 |            href="https://github.com/oilshell/oil/commit/%H">%h</a>
 | 
| 43 |     </td>
 | 
| 44 |     <td class="date">%ad</td>
 | 
| 45 |     <td>%x00%an%x01</td>
 | 
| 46 |     <td class="subject">%x00%s%x01</td>
 | 
| 47 |   </tr>'
 | 
| 48 |   git log \
 | 
| 49 |     $prev_branch..$cur_branch \
 | 
| 50 |     --reverse \
 | 
| 51 |     --pretty="format:$format" \
 | 
| 52 |     --date=short \
 | 
| 53 |     "$@" \
 | 
| 54 |   | escape-segments
 | 
| 55 | }
 | 
| 56 | 
 | 
| 57 | _git-changelog-header() {
 | 
| 58 |   local prev_branch=$1
 | 
| 59 |   local cur_branch=$2
 | 
| 60 | 
 | 
| 61 |   html-head --title "Commits Between Branches $prev_branch and $cur_branch" \
 | 
| 62 |     'web/base.css' 'web/changelog.css'
 | 
| 63 | 
 | 
| 64 |   cat <<EOF
 | 
| 65 |   <body class="width60">
 | 
| 66 |     <h3>Commits Between Branches <code>$prev_branch</code> and
 | 
| 67 |        <code>$cur_branch</code></h3>
 | 
| 68 |     <table>
 | 
| 69 |       <colgroup>
 | 
| 70 |         <col>
 | 
| 71 |         <col>
 | 
| 72 |         <col>
 | 
| 73 |         <!-- prevent long commits from causing wrapping in other cells -->
 | 
| 74 |         <col style="width: 40em">
 | 
| 75 |       </colgroup>
 | 
| 76 | EOF
 | 
| 77 | # Doesn't seem necessary now.
 | 
| 78 | #     <thead>
 | 
| 79 | #        <tr>
 | 
| 80 | #          <td>Commit</td>
 | 
| 81 | #          <td>Date</td>
 | 
| 82 | #          <td>Description</td>
 | 
| 83 | #        </tr>
 | 
| 84 | #      </thead>
 | 
| 85 | }
 | 
| 86 | 
 | 
| 87 | _git-changelog() {
 | 
| 88 |   _git-changelog-header "$@"
 | 
| 89 |   _git-changelog-body "$@"
 | 
| 90 |   cat <<EOF
 | 
| 91 |     </table>
 | 
| 92 |   </body>
 | 
| 93 | </html>
 | 
| 94 | EOF
 | 
| 95 | }
 | 
| 96 | 
 | 
| 97 | git-changelog-0.1() {
 | 
| 98 |   local version='0.1.0'
 | 
| 99 |   _git-changelog release/0.0.0 release/0.1.0 \
 | 
| 100 |     > ../oilshell.org__deploy/release/$version/changelog.html
 | 
| 101 | }
 | 
| 102 | 
 | 
| 103 | git-changelog-0.2.alpha1() {
 | 
| 104 |   _git-changelog release/0.1.0 release/0.2.alpha1 \
 | 
| 105 |     > _release/VERSION/changelog.html
 | 
| 106 | }
 | 
| 107 | 
 | 
| 108 | git-changelog-0.2.0() {
 | 
| 109 |   _git-changelog release/0.1.0 release/0.2.0 \
 | 
| 110 |     > _release/VERSION/changelog.html
 | 
| 111 | }
 | 
| 112 | 
 | 
| 113 | git-changelog-0.3.alpha1() {
 | 
| 114 |   _git-changelog release/0.2.0 release/0.3.alpha1 \
 | 
| 115 |     > _release/VERSION/changelog.html
 | 
| 116 | }
 | 
| 117 | 
 | 
| 118 | git-changelog-0.3.0() {
 | 
| 119 |   _git-changelog release/0.2.0 release/0.3.0 \
 | 
| 120 |     > _release/VERSION/changelog.html
 | 
| 121 | }
 | 
| 122 | 
 | 
| 123 | git-changelog-0.4.0() {
 | 
| 124 |   _git-changelog release/0.3.0 release/0.4.0 \
 | 
| 125 |     > _release/VERSION/changelog.html
 | 
| 126 | }
 | 
| 127 | 
 | 
| 128 | git-changelog-0.5.alpha1() {
 | 
| 129 |   _git-changelog release/0.4.0 release/0.5.alpha1 \
 | 
| 130 |     > _release/VERSION/changelog.html
 | 
| 131 | }
 | 
| 132 | 
 | 
| 133 | # Alpha release logs are relative to last minor release
 | 
| 134 | git-changelog-0.5.alpha2() {
 | 
| 135 |   _git-changelog release/0.5.alpha1 release/0.5.alpha2 \
 | 
| 136 |     > _release/VERSION/changelog.html
 | 
| 137 | }
 | 
| 138 | 
 | 
| 139 | git-changelog-0.5.alpha3() {
 | 
| 140 |   _git-changelog release/0.5.alpha2 release/0.5.alpha3 \
 | 
| 141 |     > _release/VERSION/changelog.html
 | 
| 142 | }
 | 
| 143 | 
 | 
| 144 | # Hm if you're not releasing on the same machine as the previous release, the
 | 
| 145 | # branch needs origin/ on the front?  Is this the best way to do it?
 | 
| 146 | # NOTE: 'git branch -a' shows all branches.
 | 
| 147 | 
 | 
| 148 | git-changelog-0.5.0() {
 | 
| 149 |   # NOTE: release/0.5 branch should be sync'd up with master squashes.
 | 
| 150 |   _git-changelog origin/release/0.5.alpha3 release/0.5.0 \
 | 
| 151 |     > _release/VERSION/changelog.html
 | 
| 152 | }
 | 
| 153 | 
 | 
| 154 | git-changelog-0.6.pre1() {
 | 
| 155 |   _git-changelog origin/release/0.5.0 release/0.6.pre1 \
 | 
| 156 |     > _release/VERSION/changelog.html
 | 
| 157 | }
 | 
| 158 | 
 | 
| 159 | git-changelog-0.6.pre2() {
 | 
| 160 |   _git-changelog origin/release/0.6.pre1 release/0.6.pre2 \
 | 
| 161 |     > _release/VERSION/changelog.html
 | 
| 162 | }
 | 
| 163 | 
 | 
| 164 | git-changelog-0.6.pre3() {
 | 
| 165 |   _git-changelog origin/release/0.6.pre2 release/0.6.pre3 \
 | 
| 166 |     > _release/VERSION/changelog.html
 | 
| 167 | }
 | 
| 168 | 
 | 
| 169 | git-changelog-0.6.pre4() {
 | 
| 170 |   _git-changelog origin/release/0.6.pre3 release/0.6.pre4 \
 | 
| 171 |     > _release/VERSION/changelog.html
 | 
| 172 | }
 | 
| 173 | 
 | 
| 174 | git-changelog-0.6.pre5() {
 | 
| 175 |   _git-changelog origin/release/0.6.pre4 release/0.6.pre5 \
 | 
| 176 |     > _release/VERSION/changelog.html
 | 
| 177 | }
 | 
| 178 | 
 | 
| 179 | git-changelog-0.6.pre6() {
 | 
| 180 |   _git-changelog origin/release/0.6.pre5 release/0.6.pre6 \
 | 
| 181 |     > _release/VERSION/changelog.html
 | 
| 182 | }
 | 
| 183 | 
 | 
| 184 | git-changelog-0.6.pre7() {
 | 
| 185 |   _git-changelog origin/release/0.6.pre6 release/0.6.pre7 \
 | 
| 186 |     > _release/VERSION/changelog.html
 | 
| 187 | }
 | 
| 188 | 
 | 
| 189 | git-changelog-0.6.pre8() {
 | 
| 190 |   _git-changelog origin/release/0.6.pre7 release/0.6.pre8 \
 | 
| 191 |     > _release/VERSION/changelog.html
 | 
| 192 | }
 | 
| 193 | 
 | 
| 194 | git-changelog-0.6.pre9() {
 | 
| 195 |   _git-changelog origin/release/0.6.pre8 release/0.6.pre9 \
 | 
| 196 |     > _release/VERSION/changelog.html
 | 
| 197 | }
 | 
| 198 | 
 | 
| 199 | git-changelog-0.6.pre10() {
 | 
| 200 |   _git-changelog origin/release/0.6.pre9 release/0.6.pre10 \
 | 
| 201 |     > _release/VERSION/changelog.html
 | 
| 202 | }
 | 
| 203 | 
 | 
| 204 | git-changelog-0.6.pre11() {
 | 
| 205 |   _git-changelog origin/release/0.6.pre10 release/0.6.pre11 \
 | 
| 206 |     > _release/VERSION/changelog.html
 | 
| 207 | }
 | 
| 208 | 
 | 
| 209 | git-changelog-0.6.pre12() {
 | 
| 210 |   _git-changelog origin/release/0.6.pre11 release/0.6.pre12 \
 | 
| 211 |     > _release/VERSION/changelog.html
 | 
| 212 | }
 | 
| 213 | 
 | 
| 214 | git-changelog-0.6.pre13() {
 | 
| 215 |   _git-changelog origin/release/0.6.pre12 release/0.6.pre13 \
 | 
| 216 |     > _release/VERSION/changelog.html
 | 
| 217 | }
 | 
| 218 | 
 | 
| 219 | git-changelog-0.6.pre14() {
 | 
| 220 |   _git-changelog origin/release/0.6.pre13 release/0.6.pre14 \
 | 
| 221 |     > _release/VERSION/changelog.html
 | 
| 222 | }
 | 
| 223 | 
 | 
| 224 | git-changelog-0.6.pre15() {
 | 
| 225 |   _git-changelog origin/release/0.6.pre14 release/0.6.pre15 \
 | 
| 226 |     > _release/VERSION/changelog.html
 | 
| 227 | }
 | 
| 228 | 
 | 
| 229 | git-changelog-0.6.pre16() {
 | 
| 230 |   _git-changelog origin/release/0.6.pre15 release/0.6.pre16 \
 | 
| 231 |     > _release/VERSION/changelog.html
 | 
| 232 | }
 | 
| 233 | 
 | 
| 234 | git-changelog-0.6.pre17() {
 | 
| 235 |   _git-changelog origin/release/0.6.pre16 release/0.6.pre17 \
 | 
| 236 |     > _release/VERSION/changelog.html
 | 
| 237 | }
 | 
| 238 | 
 | 
| 239 | git-changelog-0.6.pre18() {
 | 
| 240 |   _git-changelog origin/release/0.6.pre17 release/0.6.pre18 \
 | 
| 241 |     > _release/VERSION/changelog.html
 | 
| 242 | }
 | 
| 243 | 
 | 
| 244 | git-changelog-0.6.pre19() {
 | 
| 245 |   _git-changelog origin/release/0.6.pre18 release/0.6.pre19 \
 | 
| 246 |     > _release/VERSION/changelog.html
 | 
| 247 | }
 | 
| 248 | 
 | 
| 249 | git-changelog-0.6.pre20() {
 | 
| 250 |   _git-changelog origin/release/0.6.pre19 release/0.6.pre20 \
 | 
| 251 |     > _release/VERSION/changelog.html
 | 
| 252 | }
 | 
| 253 | 
 | 
| 254 | git-changelog-0.6.pre21() {
 | 
| 255 |   _git-changelog origin/release/0.6.pre20 release/0.6.pre21 \
 | 
| 256 |     > _release/VERSION/changelog.html
 | 
| 257 | }
 | 
| 258 | 
 | 
| 259 | git-changelog-0.6.pre22() {
 | 
| 260 |   _git-changelog origin/release/0.6.pre21 release/0.6.pre22 \
 | 
| 261 |     > _release/VERSION/changelog.html
 | 
| 262 | }
 | 
| 263 | 
 | 
| 264 | git-changelog-0.6.pre23() {
 | 
| 265 |   _git-changelog origin/release/0.6.pre22 release/0.6.pre23 \
 | 
| 266 |     > _release/VERSION/changelog.html
 | 
| 267 | }
 | 
| 268 | 
 | 
| 269 | git-changelog-0.6.0() {
 | 
| 270 |   _git-changelog origin/release/0.6.pre23 release/0.6.0 \
 | 
| 271 |     > _release/VERSION/changelog.html
 | 
| 272 | }
 | 
| 273 | 
 | 
| 274 | git-changelog-0.7.pre1() {
 | 
| 275 |   _git-changelog origin/release/0.6.0 release/0.7.pre1 \
 | 
| 276 |     > _release/VERSION/changelog.html
 | 
| 277 | }
 | 
| 278 | 
 | 
| 279 | git-changelog-0.7.pre2() {
 | 
| 280 |   _git-changelog origin/release/0.7.pre1 release/0.7.pre2 \
 | 
| 281 |     > _release/VERSION/changelog.html
 | 
| 282 | }
 | 
| 283 | 
 | 
| 284 | git-changelog-0.7.pre3() {
 | 
| 285 |   _git-changelog origin/release/0.7.pre2 release/0.7.pre3 \
 | 
| 286 |     > _release/VERSION/changelog.html
 | 
| 287 | }
 | 
| 288 | 
 | 
| 289 | git-changelog-0.7.pre4() {
 | 
| 290 |   _git-changelog origin/release/0.7.pre3 release/0.7.pre4 \
 | 
| 291 |     > _release/VERSION/changelog.html
 | 
| 292 | }
 | 
| 293 | 
 | 
| 294 | git-changelog-0.7.pre5() {
 | 
| 295 |   _git-changelog origin/release/0.7.pre4 release/0.7.pre5 \
 | 
| 296 |     > _release/VERSION/changelog.html
 | 
| 297 | }
 | 
| 298 | 
 | 
| 299 | git-changelog-0.7.pre6() {
 | 
| 300 |   _git-changelog origin/release/0.7.pre5 release/0.7.pre6 \
 | 
| 301 |     > _release/VERSION/changelog.html
 | 
| 302 | }
 | 
| 303 | 
 | 
| 304 | git-changelog-0.7.pre7() {
 | 
| 305 |   _git-changelog origin/release/0.7.pre6 release/0.7.pre7 \
 | 
| 306 |     > _release/VERSION/changelog.html
 | 
| 307 | }
 | 
| 308 | 
 | 
| 309 | git-changelog-0.7.pre8() {
 | 
| 310 |   _git-changelog origin/release/0.7.pre7 release/0.7.pre8 \
 | 
| 311 |     > _release/VERSION/changelog.html
 | 
| 312 | }
 | 
| 313 | 
 | 
| 314 | git-changelog-0.7.pre9() {
 | 
| 315 |   _git-changelog origin/release/0.7.pre8 release/0.7.pre9 \
 | 
| 316 |     > _release/VERSION/changelog.html
 | 
| 317 | }
 | 
| 318 | 
 | 
| 319 | git-changelog-0.7.pre10() {
 | 
| 320 |   _git-changelog origin/release/0.7.pre9 release/0.7.pre10 \
 | 
| 321 |     > _release/VERSION/changelog.html
 | 
| 322 | }
 | 
| 323 | 
 | 
| 324 | git-changelog-0.7.pre11() {
 | 
| 325 |   _git-changelog origin/release/0.7.pre10 release/0.7.pre11 \
 | 
| 326 |     > _release/VERSION/changelog.html
 | 
| 327 | }
 | 
| 328 | 
 | 
| 329 | git-changelog-0.7.0() {
 | 
| 330 |   _git-changelog origin/release/0.7.pre11 release/0.7.0 \
 | 
| 331 |     > _release/VERSION/changelog.html
 | 
| 332 | }
 | 
| 333 | 
 | 
| 334 | git-changelog-0.8.pre1() {
 | 
| 335 |   _git-changelog origin/release/0.7.0 release/0.8.pre1 \
 | 
| 336 |     > _release/VERSION/changelog.html
 | 
| 337 | }
 | 
| 338 | 
 | 
| 339 | git-changelog-0.8.pre2() {
 | 
| 340 |   _git-changelog origin/release/0.8.pre1 release/0.8.pre2 \
 | 
| 341 |     > _release/VERSION/changelog.html
 | 
| 342 | }
 | 
| 343 | 
 | 
| 344 | git-changelog-0.8.pre3() {
 | 
| 345 |   _git-changelog origin/release/0.8.pre2 release/0.8.pre3 \
 | 
| 346 |     > _release/VERSION/changelog.html
 | 
| 347 | }
 | 
| 348 | 
 | 
| 349 | git-changelog-0.8.pre4() {
 | 
| 350 |   _git-changelog origin/release/0.8.pre3 release/0.8.pre4 \
 | 
| 351 |     > _release/VERSION/changelog.html
 | 
| 352 | }
 | 
| 353 | 
 | 
| 354 | git-changelog-0.8.pre5() {
 | 
| 355 |   _git-changelog origin/release/0.8.pre4 release/0.8.pre5 \
 | 
| 356 |     > _release/VERSION/changelog.html
 | 
| 357 | }
 | 
| 358 | 
 | 
| 359 | git-changelog-0.8.pre6() {
 | 
| 360 |   _git-changelog origin/release/0.8.pre5 release/0.8.pre6 \
 | 
| 361 |     > _release/VERSION/changelog.html
 | 
| 362 | }
 | 
| 363 | 
 | 
| 364 | git-changelog-0.8.pre7() {
 | 
| 365 |   _git-changelog origin/release/0.8.pre6 release/0.8.pre7 \
 | 
| 366 |     > _release/VERSION/changelog.html
 | 
| 367 | }
 | 
| 368 | 
 | 
| 369 | git-changelog-0.8.pre8() {
 | 
| 370 |   _git-changelog origin/release/0.8.pre7 release/0.8.pre8 \
 | 
| 371 |     > _release/VERSION/changelog.html
 | 
| 372 | }
 | 
| 373 | 
 | 
| 374 | git-changelog-0.8.pre9() {
 | 
| 375 |   _git-changelog origin/release/0.8.pre8 release/0.8.pre9 \
 | 
| 376 |     > _release/VERSION/changelog.html
 | 
| 377 | }
 | 
| 378 | 
 | 
| 379 | git-changelog-0.8.pre10() {
 | 
| 380 |   _git-changelog origin/release/0.8.pre9 release/0.8.pre10 \
 | 
| 381 |     > _release/VERSION/changelog.html
 | 
| 382 | }
 | 
| 383 | 
 | 
| 384 | git-changelog-0.8.pre11() {
 | 
| 385 |   _git-changelog origin/release/0.8.pre10 release/0.8.pre11 \
 | 
| 386 |     > _release/VERSION/changelog.html
 | 
| 387 | }
 | 
| 388 | 
 | 
| 389 | git-changelog-0.8.0() {
 | 
| 390 |   _git-changelog origin/release/0.8.pre11 release/0.8.0 \
 | 
| 391 |     > _release/VERSION/changelog.html
 | 
| 392 | }
 | 
| 393 | 
 | 
| 394 | git-changelog-0.8.1() {
 | 
| 395 |   _git-changelog origin/release/0.8.0 release/0.8.1 \
 | 
| 396 |     > _release/VERSION/changelog.html
 | 
| 397 | }
 | 
| 398 | 
 | 
| 399 | git-changelog-0.8.2() {
 | 
| 400 |   _git-changelog origin/release/0.8.1 release/0.8.2 \
 | 
| 401 |     > _release/VERSION/changelog.html
 | 
| 402 | }
 | 
| 403 | 
 | 
| 404 | git-changelog-0.8.3() {
 | 
| 405 |   _git-changelog origin/release/0.8.2 release/0.8.3 \
 | 
| 406 |     > _release/VERSION/changelog.html
 | 
| 407 | }
 | 
| 408 | 
 | 
| 409 | git-changelog-0.8.4() {
 | 
| 410 |   _git-changelog origin/release/0.8.3 release/0.8.4 \
 | 
| 411 |     > _release/VERSION/changelog.html
 | 
| 412 | }
 | 
| 413 | 
 | 
| 414 | git-changelog-0.8.5() {
 | 
| 415 |   _git-changelog origin/release/0.8.4 release/0.8.5 \
 | 
| 416 |     > _release/VERSION/changelog.html
 | 
| 417 | }
 | 
| 418 | 
 | 
| 419 | git-changelog-0.8.6() {
 | 
| 420 |   _git-changelog origin/release/0.8.5 release/0.8.6 \
 | 
| 421 |     > _release/VERSION/changelog.html
 | 
| 422 | }
 | 
| 423 | 
 | 
| 424 | git-changelog-0.8.7() {
 | 
| 425 |   _git-changelog origin/release/0.8.6 release/0.8.7 \
 | 
| 426 |     > _release/VERSION/changelog.html
 | 
| 427 | }
 | 
| 428 | 
 | 
| 429 | git-changelog-0.8.8() {
 | 
| 430 |   _git-changelog origin/release/0.8.7 release/0.8.8 \
 | 
| 431 |     > _release/VERSION/changelog.html
 | 
| 432 | }
 | 
| 433 | 
 | 
| 434 | git-changelog-0.8.9() {
 | 
| 435 |   _git-changelog origin/release/0.8.8 release/0.8.9 \
 | 
| 436 |     > _release/VERSION/changelog.html
 | 
| 437 | }
 | 
| 438 | 
 | 
| 439 | git-changelog-0.8.10() {
 | 
| 440 |   _git-changelog origin/release/0.8.9 release/0.8.10 \
 | 
| 441 |     > _release/VERSION/changelog.html
 | 
| 442 | }
 | 
| 443 | 
 | 
| 444 | git-changelog-0.8.11() {
 | 
| 445 |   _git-changelog origin/release/0.8.10 release/0.8.11 \
 | 
| 446 |     > _release/VERSION/changelog.html
 | 
| 447 | }
 | 
| 448 | 
 | 
| 449 | git-changelog-0.8.12() {
 | 
| 450 |   _git-changelog origin/release/0.8.11 release/0.8.12 \
 | 
| 451 |     > _release/VERSION/changelog.html
 | 
| 452 | }
 | 
| 453 | 
 | 
| 454 | git-changelog-0.9.0() {
 | 
| 455 |   _git-changelog origin/release/0.8.12 release/0.9.0 \
 | 
| 456 |     > _release/VERSION/changelog.html
 | 
| 457 | }
 | 
| 458 | 
 | 
| 459 | git-changelog-0.9.1() {
 | 
| 460 |   _git-changelog origin/release/0.9.0 release/0.9.1 \
 | 
| 461 |     > _release/VERSION/changelog.html
 | 
| 462 | }
 | 
| 463 | 
 | 
| 464 | git-changelog-0.9.3() {
 | 
| 465 |   _git-changelog origin/release/0.9.2 release/0.9.3 \
 | 
| 466 |     > _release/VERSION/changelog.html
 | 
| 467 | }
 | 
| 468 | 
 | 
| 469 | git-changelog-0.9.4() {
 | 
| 470 |   _git-changelog origin/release/0.9.3 release/0.9.4 \
 | 
| 471 |     > _release/VERSION/changelog.html
 | 
| 472 | }
 | 
| 473 | 
 | 
| 474 | git-changelog-0.9.5() {
 | 
| 475 |   _git-changelog origin/release/0.9.4 release/0.9.5 \
 | 
| 476 |     > _release/VERSION/changelog.html
 | 
| 477 | }
 | 
| 478 | 
 | 
| 479 | git-changelog-0.9.6() {
 | 
| 480 |   _git-changelog origin/release/0.9.5 release/0.9.6 \
 | 
| 481 |     > _release/VERSION/changelog.html
 | 
| 482 | }
 | 
| 483 | 
 | 
| 484 | git-changelog-0.9.7() {
 | 
| 485 |   _git-changelog origin/release/0.9.6 release/0.9.7 \
 | 
| 486 |     > _release/VERSION/changelog.html
 | 
| 487 | }
 | 
| 488 | 
 | 
| 489 | git-changelog-0.9.8() {
 | 
| 490 |   _git-changelog origin/release/0.9.7 release/0.9.8 \
 | 
| 491 |     > _release/VERSION/changelog.html
 | 
| 492 | }
 | 
| 493 | 
 | 
| 494 | git-changelog-0.9.9() {
 | 
| 495 |   _git-changelog origin/release/0.9.8 release/0.9.9 \
 | 
| 496 |     > _release/VERSION/changelog.html
 | 
| 497 | }
 | 
| 498 | 
 | 
| 499 | git-changelog-0.10.0() {
 | 
| 500 |   _git-changelog origin/release/0.9.9 release/0.10.0 \
 | 
| 501 |     > _release/VERSION/changelog.html
 | 
| 502 | }
 | 
| 503 | 
 | 
| 504 | git-changelog-0.10.1() {
 | 
| 505 |   _git-changelog origin/release/0.10.0 release/0.10.1 \
 | 
| 506 |     > _release/VERSION/changelog.html
 | 
| 507 | }
 | 
| 508 | 
 | 
| 509 | git-changelog-0.11.0() {
 | 
| 510 |   _git-changelog origin/release/0.10.1 release/0.11.0 \
 | 
| 511 |     > _release/VERSION/changelog.html
 | 
| 512 | }
 | 
| 513 | 
 | 
| 514 | git-changelog-0.12.0() {
 | 
| 515 |   _git-changelog origin/release/0.11.0 release/0.12.0 \
 | 
| 516 |     > _release/VERSION/changelog.html
 | 
| 517 | }
 | 
| 518 | 
 | 
| 519 | git-changelog-0.12.3() {
 | 
| 520 |   _git-changelog origin/release/0.12.0 release/0.12.3 \
 | 
| 521 |     > _release/VERSION/changelog.html
 | 
| 522 | }
 | 
| 523 | 
 | 
| 524 | git-changelog-0.12.4() {
 | 
| 525 |   _git-changelog origin/release/0.12.3 release/0.12.4 \
 | 
| 526 |     > _release/VERSION/changelog.html
 | 
| 527 | }
 | 
| 528 | 
 | 
| 529 | git-changelog-0.12.5() {
 | 
| 530 |   _git-changelog origin/release/0.12.4 release/0.12.5 \
 | 
| 531 |     > _release/VERSION/changelog.html
 | 
| 532 | }
 | 
| 533 | 
 | 
| 534 | git-changelog-0.12.6() {
 | 
| 535 |   _git-changelog origin/release/0.12.5 release/0.12.6 \
 | 
| 536 |     > _release/VERSION/changelog.html
 | 
| 537 | }
 | 
| 538 | 
 | 
| 539 | git-changelog-0.12.7() {
 | 
| 540 |   _git-changelog origin/release/0.12.6 release/0.12.7 \
 | 
| 541 |     > _release/VERSION/changelog.html
 | 
| 542 | }
 | 
| 543 | 
 | 
| 544 | git-changelog-0.12.8() {
 | 
| 545 |   _git-changelog origin/release/0.12.7 release/0.12.8 \
 | 
| 546 |     > _release/VERSION/changelog.html
 | 
| 547 | }
 | 
| 548 | 
 | 
| 549 | git-changelog-0.12.9() {
 | 
| 550 |   _git-changelog origin/release/0.12.8 release/0.12.9 \
 | 
| 551 |     > _release/VERSION/changelog.html
 | 
| 552 | }
 | 
| 553 | 
 | 
| 554 | git-changelog-0.13.0() {
 | 
| 555 |   _git-changelog origin/release/0.12.9 release/0.13.0 \
 | 
| 556 |     > _release/VERSION/changelog.html
 | 
| 557 | }
 | 
| 558 | 
 | 
| 559 | git-changelog-0.13.1() {
 | 
| 560 |   _git-changelog origin/release/0.13.0 release/0.13.1 \
 | 
| 561 |     > _release/VERSION/changelog.html
 | 
| 562 | }
 | 
| 563 | 
 | 
| 564 | git-changelog-0.14.0() {
 | 
| 565 |   _git-changelog origin/release/0.13.1 release/0.14.0 \
 | 
| 566 |     > _release/VERSION/changelog.html
 | 
| 567 | }
 | 
| 568 | 
 | 
| 569 | git-changelog-0.14.1() {
 | 
| 570 |   _git-changelog origin/release/0.14.0 release/0.14.1 \
 | 
| 571 |     > _release/VERSION/changelog.html
 | 
| 572 | }
 | 
| 573 | 
 | 
| 574 | git-changelog-0.14.2() {
 | 
| 575 |   _git-changelog origin/release/0.14.1 release/0.14.2 \
 | 
| 576 |     > _release/VERSION/changelog.html
 | 
| 577 | }
 | 
| 578 | 
 | 
| 579 | git-changelog-0.15.0() {
 | 
| 580 |   _git-changelog origin/release/0.14.2 release/0.15.0 \
 | 
| 581 |     > _release/VERSION/changelog.html
 | 
| 582 | }
 | 
| 583 | 
 | 
| 584 | git-changelog-0.16.0() {
 | 
| 585 |   _git-changelog origin/release/0.15.0 release/0.16.0 \
 | 
| 586 |     > _release/VERSION/changelog.html
 | 
| 587 | }
 | 
| 588 | 
 | 
| 589 | git-changelog-0.17.0() {
 | 
| 590 |   _git-changelog origin/release/0.16.0 release/0.17.0 \
 | 
| 591 |     > _release/VERSION/changelog.html
 | 
| 592 | }
 | 
| 593 | 
 | 
| 594 | git-changelog-0.18.0() {
 | 
| 595 |   _git-changelog origin/release/0.17.0 release/0.18.0 \
 | 
| 596 |     > _release/VERSION/changelog.html
 | 
| 597 | }
 | 
| 598 | 
 | 
| 599 | git-changelog-0.19.0() {
 | 
| 600 |   _git-changelog origin/release/0.18.0 release/0.19.0 \
 | 
| 601 |     > _release/VERSION/changelog.html
 | 
| 602 | }
 | 
| 603 | 
 | 
| 604 | git-changelog-0.20.0() {
 | 
| 605 |   _git-changelog origin/release/0.19.0 release/0.20.0 \
 | 
| 606 |     > _release/VERSION/changelog.html
 | 
| 607 | }
 | 
| 608 | 
 | 
| 609 | git-changelog-0.21.0() {
 | 
| 610 |   _git-changelog origin/release/0.20.0 release/0.21.0 \
 | 
| 611 |     > _release/VERSION/changelog.html
 | 
| 612 | }
 | 
| 613 | 
 | 
| 614 | git-changelog-0.22.0() {
 | 
| 615 |   _git-changelog origin/release/0.21.0 release/0.22.0 \
 | 
| 616 |     > _release/VERSION/changelog.html
 | 
| 617 | }
 | 
| 618 | 
 | 
| 619 | # For announcement.html
 | 
| 620 | html-redirect() {
 | 
| 621 |   local url=$1
 | 
| 622 |   cat <<EOF
 | 
| 623 | <!DOCTYPE html>
 | 
| 624 | <html>
 | 
| 625 |   <head>
 | 
| 626 |     <meta http-equiv="refresh" content="0; url=$url" />
 | 
| 627 |   </head>
 | 
| 628 |   <body>
 | 
| 629 |     <p>Redirect to<a href="$url">$url</a></p>
 | 
| 630 |   </body>
 | 
| 631 | </html>  
 | 
| 632 | EOF
 | 
| 633 | }
 | 
| 634 | 
 | 
| 635 | no-announcement() {
 | 
| 636 |   html-head --title 'No announcement'
 | 
| 637 |   cat <<EOF
 | 
| 638 |   <body>
 | 
| 639 |     <p>No announcement for this release.  Previous announcements are tagged
 | 
| 640 |     with #<a href="/blog/tags.html?tag=oil-release#oil-release">oil-release</a>.
 | 
| 641 |     </p>
 | 
| 642 |   </body>
 | 
| 643 | </html>  
 | 
| 644 | EOF
 | 
| 645 | }
 | 
| 646 | 
 | 
| 647 | write-no-announcement() {
 | 
| 648 |   no-announcement > _release/VERSION/announcement.html
 | 
| 649 | }
 | 
| 650 | 
 | 
| 651 | readonly SITE_DEPLOY_DIR='../oilshell.org__deploy'
 | 
| 652 | 
 | 
| 653 | announcement-0.0() {
 | 
| 654 |   html-redirect '/blog/2017/07/23.html' \
 | 
| 655 |     > ../oilshell.org__deploy/release/0.0.0/announcement.html
 | 
| 656 | }
 | 
| 657 | 
 | 
| 658 | announcement-0.1() {
 | 
| 659 |   local version='0.1.0'
 | 
| 660 |   html-redirect '/blog/2017/09/09.html' \
 | 
| 661 |     > ../oilshell.org__deploy/release/$version/announcement.html
 | 
| 662 | }
 | 
| 663 | 
 | 
| 664 | announcement-0.2() {
 | 
| 665 |   html-redirect '/blog/2017/11/10.html' > _release/VERSION/announcement.html
 | 
| 666 | }
 | 
| 667 | 
 | 
| 668 | announcement-0.3() {
 | 
| 669 |   html-redirect '/blog/2017/12/22.html' > _release/VERSION/announcement.html
 | 
| 670 |   #no-announcement > _release/VERSION/announcement.html
 | 
| 671 | }
 | 
| 672 | 
 | 
| 673 | announcement-0.4() {
 | 
| 674 |   html-redirect '/blog/2018/02/03.html' > _release/VERSION/announcement.html
 | 
| 675 | }
 | 
| 676 | 
 | 
| 677 | announcement-0.5.alpha3() {
 | 
| 678 |   html-redirect '/blog/2018/04/30.html' > _release/VERSION/announcement.html
 | 
| 679 | }
 | 
| 680 | 
 | 
| 681 | announcement-0.5() {
 | 
| 682 |   html-redirect '/blog/2018/07/12.html' > _release/VERSION/announcement.html
 | 
| 683 | }
 | 
| 684 | 
 | 
| 685 | announcement-0.6.pre1() {
 | 
| 686 |   html-redirect '/blog/2018/08/15.html' > _release/VERSION/announcement.html
 | 
| 687 | }
 | 
| 688 | 
 | 
| 689 | announcement-0.6.pre2() {
 | 
| 690 |   html-redirect '/blog/2018/08/19.html' > _release/VERSION/announcement.html
 | 
| 691 | }
 | 
| 692 | 
 | 
| 693 | announcement-0.6.pre3() {
 | 
| 694 |   write-no-announcement
 | 
| 695 | }
 | 
| 696 | 
 | 
| 697 | announcement-0.6.pre4() {
 | 
| 698 |   write-no-announcement
 | 
| 699 | }
 | 
| 700 | 
 | 
| 701 | announcement-0.6.pre5() {
 | 
| 702 |   html-redirect '/blog/2018/10/11.html' > $SITE_DEPLOY_DIR/release/0.6.pre5/announcement.html
 | 
| 703 | }
 | 
| 704 | 
 | 
| 705 | announcement-0.6.pre6() {
 | 
| 706 |   no-announcement > $SITE_DEPLOY_DIR/release/0.6.pre6/announcement.html
 | 
| 707 | }
 | 
| 708 | 
 | 
| 709 | announcement-0.6.pre7() {
 | 
| 710 |   write-no-announcement
 | 
| 711 | }
 | 
| 712 | 
 | 
| 713 | announcement-0.6.pre8() {
 | 
| 714 |   html-redirect '/blog/2018/11/15.html' > $SITE_DEPLOY_DIR/release/0.6.pre8/announcement.html
 | 
| 715 | }
 | 
| 716 | 
 | 
| 717 | announcement-0.6.pre9() {
 | 
| 718 |   write-no-announcement
 | 
| 719 | }
 | 
| 720 | 
 | 
| 721 | announcement-0.6.pre10() {
 | 
| 722 |   write-no-announcement
 | 
| 723 | }
 | 
| 724 | 
 | 
| 725 | announcement-0.6.pre11() {
 | 
| 726 |   html-redirect '/blog/2018/12/16.html' > $SITE_DEPLOY_DIR/release/0.6.pre11/announcement.html
 | 
| 727 | }
 | 
| 728 | 
 | 
| 729 | announcement-0.6.pre12() {
 | 
| 730 |   html-redirect '/blog/2019/01/18.html' > $SITE_DEPLOY_DIR/release/0.6.pre12/announcement.html
 | 
| 731 | }
 | 
| 732 | 
 | 
| 733 | announcement-0.6.pre13() {
 | 
| 734 |   html-redirect '/blog/2019/02/05.html' > $SITE_DEPLOY_DIR/release/0.6.pre13/announcement.html
 | 
| 735 | }
 | 
| 736 | 
 | 
| 737 | announcement-0.6.pre14() {
 | 
| 738 |   html-redirect '/blog/2019/02/18.html' > $SITE_DEPLOY_DIR/release/0.6.pre14/announcement.html
 | 
| 739 | }
 | 
| 740 | 
 | 
| 741 | announcement-0.6.pre15() {
 | 
| 742 |   html-redirect '/blog/2019/02/18.html' > $SITE_DEPLOY_DIR/release/0.6.pre15/announcement.html
 | 
| 743 | }
 | 
| 744 | 
 | 
| 745 | announcement-0.6.pre16-to-22() {
 | 
| 746 |   for i in {16..22}; do
 | 
| 747 |     html-redirect '/blog/2019/06/13.html' > $SITE_DEPLOY_DIR/release/0.6.pre$i/announcement.html
 | 
| 748 |   done
 | 
| 749 | }
 | 
| 750 | 
 | 
| 751 | announcement-0.6.pre23() {
 | 
| 752 |   html-redirect '/blog/2019/07/19.html' > $SITE_DEPLOY_DIR/release/0.6.pre23/announcement.html
 | 
| 753 | }
 | 
| 754 | 
 | 
| 755 | announcement-0.6.0() {
 | 
| 756 |   html-redirect '/blog/2019/07/19.html' > $SITE_DEPLOY_DIR/release/0.6.0/announcement.html
 | 
| 757 | }
 | 
| 758 | 
 | 
| 759 | announcement-0.7.pre1() {
 | 
| 760 |   html-redirect '/blog/2019/07/19.html' > $SITE_DEPLOY_DIR/release/0.7.pre1/announcement.html
 | 
| 761 | }
 | 
| 762 | 
 | 
| 763 | announcement-0.7.pre2() {
 | 
| 764 |   write-no-announcement
 | 
| 765 | }
 | 
| 766 | 
 | 
| 767 | announcement-0.7.pre3() {
 | 
| 768 |   write-no-announcement
 | 
| 769 | }
 | 
| 770 | 
 | 
| 771 | announcement-0.7.pre4() {
 | 
| 772 |   write-no-announcement
 | 
| 773 | }
 | 
| 774 | 
 | 
| 775 | announcement-0.7.pre5() {
 | 
| 776 |   write-no-announcement
 | 
| 777 | }
 | 
| 778 | 
 | 
| 779 | announcement-0.7.pre6() {
 | 
| 780 |   html-redirect '/blog/2016/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre6/announcement.html
 | 
| 781 | }
 | 
| 782 | 
 | 
| 783 | announcement-0.7.pre7() {
 | 
| 784 |   html-redirect '/blog/2019/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre7/announcement.html
 | 
| 785 | }
 | 
| 786 | 
 | 
| 787 | announcement-0.7.pre8() {
 | 
| 788 |   html-redirect '/blog/2019/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre8/announcement.html
 | 
| 789 | }
 | 
| 790 | 
 | 
| 791 | announcement-0.7.pre9() {
 | 
| 792 |   html-redirect '/blog/2019/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre9/announcement.html
 | 
| 793 | }
 | 
| 794 | 
 | 
| 795 | announcement-0.7.pre10() {
 | 
| 796 |   write-no-announcement
 | 
| 797 | }
 | 
| 798 | 
 | 
| 799 | announcement-0.7.pre11() {
 | 
| 800 |   write-no-announcement
 | 
| 801 | }
 | 
| 802 | 
 | 
| 803 | announcement-0.7.0() {
 | 
| 804 |   html-redirect '/blog/2020/02/recap.html' > $SITE_DEPLOY_DIR/release/0.7.0/announcement.html
 | 
| 805 | }
 | 
| 806 | 
 | 
| 807 | announcement-0.8.pre1() {
 | 
| 808 |   html-redirect '/blog/2020/02/recap.html' > $SITE_DEPLOY_DIR/release/0.8.pre1/announcement.html
 | 
| 809 | }
 | 
| 810 | 
 | 
| 811 | announcement-0.8.pre2() {
 | 
| 812 |   html-redirect '/blog/2020/03/release-metrics.html' > $SITE_DEPLOY_DIR/release/0.8.pre2/announcement.html
 | 
| 813 | }
 | 
| 814 | 
 | 
| 815 | announcement-0.8.pre3() {
 | 
| 816 |   html-redirect '/blog/2020/03/release-0.8.pre3.html' > $SITE_DEPLOY_DIR/release/0.8.pre3/announcement.html
 | 
| 817 | }
 | 
| 818 | 
 | 
| 819 | announcement-0.8.pre4() {
 | 
| 820 |   html-redirect '/blog/2020/04/release-0.8.pre4.html' > $SITE_DEPLOY_DIR/release/0.8.pre4/announcement.html
 | 
| 821 | }
 | 
| 822 | 
 | 
| 823 | announcement-0.8.pre5() {
 | 
| 824 |   html-redirect '/blog/2020/05/translation-progress.html' > $SITE_DEPLOY_DIR/release/0.8.pre5/announcement.html
 | 
| 825 | }
 | 
| 826 | 
 | 
| 827 | announcement-0.8.pre6() {
 | 
| 828 |   html-redirect '/blog/2020/06/release-0.8.pre6.html' > $SITE_DEPLOY_DIR/release/0.8.pre6/announcement.html
 | 
| 829 | }
 | 
| 830 | 
 | 
| 831 | announcement-0.8.pre7() {
 | 
| 832 |   write-no-announcement
 | 
| 833 | }
 | 
| 834 | 
 | 
| 835 | announcement-0.8.pre8() {
 | 
| 836 |   write-no-announcement
 | 
| 837 | }
 | 
| 838 | 
 | 
| 839 | announcement-0.8.pre9() {
 | 
| 840 |   write-no-announcement
 | 
| 841 | }
 | 
| 842 | 
 | 
| 843 | announcement-0.8.pre10() {
 | 
| 844 |   write-no-announcement
 | 
| 845 | }
 | 
| 846 | 
 | 
| 847 | announcement-0.8.pre11() {
 | 
| 848 |   write-no-announcement
 | 
| 849 | }
 | 
| 850 | 
 | 
| 851 | announcement-0.8.0() {
 | 
| 852 |   write-no-announcement
 | 
| 853 | }
 | 
| 854 | 
 | 
| 855 | announcement-0.8.1() {
 | 
| 856 |   write-no-announcement
 | 
| 857 | }
 | 
| 858 | 
 | 
| 859 | announcement-0.8.2() {
 | 
| 860 |   write-no-announcement
 | 
| 861 | }
 | 
| 862 | 
 | 
| 863 | announcement-0.8.3() {
 | 
| 864 |   write-no-announcement
 | 
| 865 | }
 | 
| 866 | 
 | 
| 867 | announcement-0.8.4() {
 | 
| 868 |   write-no-announcement
 | 
| 869 | }
 | 
| 870 | 
 | 
| 871 | announcement-0.8.5() {
 | 
| 872 |   write-no-announcement
 | 
| 873 | }
 | 
| 874 | 
 | 
| 875 | announcement-0.8.6() {
 | 
| 876 |   write-no-announcement
 | 
| 877 | }
 | 
| 878 | 
 | 
| 879 | announcement-0.8.7() {
 | 
| 880 |   write-no-announcement
 | 
| 881 | }
 | 
| 882 | 
 | 
| 883 | announcement-0.8.8() {
 | 
| 884 |   write-no-announcement
 | 
| 885 | }
 | 
| 886 | 
 | 
| 887 | announcement-0.8.9() {
 | 
| 888 |   write-no-announcement
 | 
| 889 | }
 | 
| 890 | 
 | 
| 891 | announcement-0.8.10() {
 | 
| 892 |   write-no-announcement
 | 
| 893 | }
 | 
| 894 | 
 | 
| 895 | announcement-0.8.11() {
 | 
| 896 |   write-no-announcement
 | 
| 897 | }
 | 
| 898 | 
 | 
| 899 | announcement-0.8.12() {
 | 
| 900 |   write-no-announcement
 | 
| 901 | }
 | 
| 902 | 
 | 
| 903 | announcement-0.9.0() {
 | 
| 904 |   write-no-announcement
 | 
| 905 | }
 | 
| 906 | 
 | 
| 907 | announcement-0.9.1() {
 | 
| 908 |   write-no-announcement
 | 
| 909 | }
 | 
| 910 | 
 | 
| 911 | announcement-0.9.3() {
 | 
| 912 |   write-no-announcement
 | 
| 913 | }
 | 
| 914 | 
 | 
| 915 | announcement-0.9.4() {
 | 
| 916 |   write-no-announcement
 | 
| 917 | }
 | 
| 918 | 
 | 
| 919 | announcement-0.9.5() {
 | 
| 920 |   write-no-announcement
 | 
| 921 | }
 | 
| 922 | 
 | 
| 923 | announcement-0.9.6() {
 | 
| 924 |   write-no-announcement
 | 
| 925 | }
 | 
| 926 | 
 | 
| 927 | announcement-0.9.7() {
 | 
| 928 |   write-no-announcement
 | 
| 929 | }
 | 
| 930 | 
 | 
| 931 | announcement-0.9.8() {
 | 
| 932 |   write-no-announcement
 | 
| 933 | }
 | 
| 934 | 
 | 
| 935 | announcement-0.9.9() {
 | 
| 936 |   write-no-announcement
 | 
| 937 | }
 | 
| 938 | 
 | 
| 939 | announcement-0.10.0() {
 | 
| 940 |   write-no-announcement
 | 
| 941 | }
 | 
| 942 | 
 | 
| 943 | announcement-0.10.1() {
 | 
| 944 |   write-no-announcement
 | 
| 945 | }
 | 
| 946 | 
 | 
| 947 | announcement-0.11.0() {
 | 
| 948 |   write-no-announcement
 | 
| 949 | }
 | 
| 950 | 
 | 
| 951 | announcement-0.12.0() {
 | 
| 952 |   write-no-announcement
 | 
| 953 | }
 | 
| 954 | 
 | 
| 955 | announcement-0.12.3() {
 | 
| 956 |   write-no-announcement
 | 
| 957 | }
 | 
| 958 | 
 | 
| 959 | announcement-0.12.4() {
 | 
| 960 |   write-no-announcement
 | 
| 961 | }
 | 
| 962 | 
 | 
| 963 | announcement-0.12.5() {
 | 
| 964 |   write-no-announcement
 | 
| 965 | }
 | 
| 966 | 
 | 
| 967 | announcement-0.12.6() {
 | 
| 968 |   write-no-announcement
 | 
| 969 | }
 | 
| 970 | 
 | 
| 971 | announcement-0.12.7() {
 | 
| 972 |   write-no-announcement
 | 
| 973 | }
 | 
| 974 | 
 | 
| 975 | announcement-0.12.8() {
 | 
| 976 |   write-no-announcement
 | 
| 977 | }
 | 
| 978 | 
 | 
| 979 | announcement-0.12.9() {
 | 
| 980 |   write-no-announcement
 | 
| 981 | }
 | 
| 982 | 
 | 
| 983 | announcement-0.13.0() {
 | 
| 984 |   write-no-announcement
 | 
| 985 | }
 | 
| 986 | 
 | 
| 987 | announcement-0.13.1() {
 | 
| 988 |   write-no-announcement
 | 
| 989 | }
 | 
| 990 | 
 | 
| 991 | announcement-0.14.0() {
 | 
| 992 |   write-no-announcement
 | 
| 993 | }
 | 
| 994 | 
 | 
| 995 | announcement-0.14.1() {
 | 
| 996 |   write-no-announcement
 | 
| 997 | }
 | 
| 998 | 
 | 
| 999 | announcement-0.14.2() {
 | 
| 1000 |   write-no-announcement
 | 
| 1001 | }
 | 
| 1002 | 
 | 
| 1003 | announcement-0.15.0() {
 | 
| 1004 |   write-no-announcement
 | 
| 1005 | }
 | 
| 1006 | 
 | 
| 1007 | announcement-0.16.0() {
 | 
| 1008 |   write-no-announcement
 | 
| 1009 | }
 | 
| 1010 | 
 | 
| 1011 | announcement-0.17.0() {
 | 
| 1012 |   write-no-announcement
 | 
| 1013 | }
 | 
| 1014 | 
 | 
| 1015 | announcement-0.18.0() {
 | 
| 1016 |   write-no-announcement
 | 
| 1017 | }
 | 
| 1018 | 
 | 
| 1019 | announcement-0.19.0() {
 | 
| 1020 |   write-no-announcement
 | 
| 1021 | }
 | 
| 1022 | 
 | 
| 1023 | announcement-0.20.0() {
 | 
| 1024 |   write-no-announcement
 | 
| 1025 | }
 | 
| 1026 | 
 | 
| 1027 | announcement-0.21.0() {
 | 
| 1028 |   write-no-announcement
 | 
| 1029 | }
 | 
| 1030 | 
 | 
| 1031 | announcement-0.22.0() {
 | 
| 1032 |   write-no-announcement
 | 
| 1033 | }
 | 
| 1034 | 
 | 
| 1035 | blog-redirect() {
 | 
| 1036 |   html-redirect 'making-plans.html' > $SITE_DEPLOY_DIR/blog/2020/01/11.html
 | 
| 1037 | }
 | 
| 1038 | 
 | 
| 1039 | if test $(basename $0) = 'release-version.sh'; then
 | 
| 1040 |   "$@"
 | 
| 1041 | fi
 |