OILS / devtools / release-version.sh View on Github | oils.pub

1254 lines, 874 significant
1#!/usr/bin/env bash
2#
3# Usage:
4# ./release-version.sh <function name>
5
6set -o nounset
7set -o pipefail
8set -o errexit
9
10source 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
17escape-segments() {
18 python2 -c '
19import cgi, re, sys
20
21print 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/oils-for-unix/oils/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>
76EOF
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 echo '
91 </table>
92 </body>
93</html>
94'
95}
96
97escape-and-shortlog() {
98 python2 -c '
99import cgi, re, sys
100
101by_author = {}
102for line in sys.stdin: # each record is on a line
103 author, record = line.split("\x02")
104 html = re.sub(
105 r"\x00([^\x01]+)\x01",
106 lambda match: cgi.escape(match.group(1)),
107 record)
108 if author not in by_author:
109 by_author[author] = []
110 by_author[author].append(html)
111
112authors = by_author.keys()
113authors.sort(key=lambda x: x.lower()) # case insensitive sort
114
115for author in authors:
116 # author takes up whole row
117 print("<tr><td colspan=2 class=author-cell>")
118 print(author)
119 print("</td> <td></td> </tr>")
120 for html in by_author[author]:
121 print("<tr>")
122 print(html.rstrip())
123 print("</tr>")
124'
125}
126
127git-shortlog-html() {
128 local prev_branch=${1:-release/0.36.0}
129 local cur_branch=${2:-release/0.37.0}
130
131 # Format consumed by escape-and-shortlog above. Git uses %xff for the byte 0x02
132 # - AUTHOR %x02 REST - split by byte 0x02
133 # - anything between %x00 and and %x01 is HTML-escaped
134
135 local format='%an%x02 <td><a class="checksum" href="https://github.com/oils-for-unix/oils/commit/%H">%h</a></td> <td>%x00%s%x01</td>'
136 git log \
137 --pretty="format:$format" \
138 --date=short \
139 --reverse \
140 $prev_branch..$cur_branch | escape-and-shortlog
141}
142
143test-git-shortlog-html() {
144 local out=_tmp/shortlog.html
145
146 { echo '
147 <style>
148 body {
149 width: 30em;
150 margin: 0 auto;
151 }
152 .checksum {
153 font-family: monospace;
154 margin-left: 2em; /* indent */
155 }
156 .shortlog {
157 font-size: large;
158 }
159 .shortlog td {
160 vertical-align: top;
161 }
162 .author-cell {
163 padding: 1em;
164 }
165 </style>
166 <table class="shortlog">
167 '
168 git-shortlog-html
169 echo '</table>'
170 } > $out
171
172 echo "Wrote $out"
173}
174
175git-changelog-0.1() {
176 local version='0.1.0'
177 _git-changelog release/0.0.0 release/0.1.0 \
178 > ../oilshell.org__deploy/release/$version/changelog.html
179}
180
181git-changelog-0.2.alpha1() {
182 _git-changelog release/0.1.0 release/0.2.alpha1 \
183 > _release/VERSION/changelog.html
184}
185
186git-changelog-0.2.0() {
187 _git-changelog release/0.1.0 release/0.2.0 \
188 > _release/VERSION/changelog.html
189}
190
191git-changelog-0.3.alpha1() {
192 _git-changelog release/0.2.0 release/0.3.alpha1 \
193 > _release/VERSION/changelog.html
194}
195
196git-changelog-0.3.0() {
197 _git-changelog release/0.2.0 release/0.3.0 \
198 > _release/VERSION/changelog.html
199}
200
201git-changelog-0.4.0() {
202 _git-changelog release/0.3.0 release/0.4.0 \
203 > _release/VERSION/changelog.html
204}
205
206git-changelog-0.5.alpha1() {
207 _git-changelog release/0.4.0 release/0.5.alpha1 \
208 > _release/VERSION/changelog.html
209}
210
211# Alpha release logs are relative to last minor release
212git-changelog-0.5.alpha2() {
213 _git-changelog release/0.5.alpha1 release/0.5.alpha2 \
214 > _release/VERSION/changelog.html
215}
216
217git-changelog-0.5.alpha3() {
218 _git-changelog release/0.5.alpha2 release/0.5.alpha3 \
219 > _release/VERSION/changelog.html
220}
221
222# Hm if you're not releasing on the same machine as the previous release, the
223# branch needs origin/ on the front? Is this the best way to do it?
224# NOTE: 'git branch -a' shows all branches.
225
226git-changelog-0.5.0() {
227 # NOTE: release/0.5 branch should be sync'd up with master squashes.
228 _git-changelog origin/release/0.5.alpha3 release/0.5.0 \
229 > _release/VERSION/changelog.html
230}
231
232git-changelog-0.6.pre1() {
233 _git-changelog origin/release/0.5.0 release/0.6.pre1 \
234 > _release/VERSION/changelog.html
235}
236
237git-changelog-0.6.pre2() {
238 _git-changelog origin/release/0.6.pre1 release/0.6.pre2 \
239 > _release/VERSION/changelog.html
240}
241
242git-changelog-0.6.pre3() {
243 _git-changelog origin/release/0.6.pre2 release/0.6.pre3 \
244 > _release/VERSION/changelog.html
245}
246
247git-changelog-0.6.pre4() {
248 _git-changelog origin/release/0.6.pre3 release/0.6.pre4 \
249 > _release/VERSION/changelog.html
250}
251
252git-changelog-0.6.pre5() {
253 _git-changelog origin/release/0.6.pre4 release/0.6.pre5 \
254 > _release/VERSION/changelog.html
255}
256
257git-changelog-0.6.pre6() {
258 _git-changelog origin/release/0.6.pre5 release/0.6.pre6 \
259 > _release/VERSION/changelog.html
260}
261
262git-changelog-0.6.pre7() {
263 _git-changelog origin/release/0.6.pre6 release/0.6.pre7 \
264 > _release/VERSION/changelog.html
265}
266
267git-changelog-0.6.pre8() {
268 _git-changelog origin/release/0.6.pre7 release/0.6.pre8 \
269 > _release/VERSION/changelog.html
270}
271
272git-changelog-0.6.pre9() {
273 _git-changelog origin/release/0.6.pre8 release/0.6.pre9 \
274 > _release/VERSION/changelog.html
275}
276
277git-changelog-0.6.pre10() {
278 _git-changelog origin/release/0.6.pre9 release/0.6.pre10 \
279 > _release/VERSION/changelog.html
280}
281
282git-changelog-0.6.pre11() {
283 _git-changelog origin/release/0.6.pre10 release/0.6.pre11 \
284 > _release/VERSION/changelog.html
285}
286
287git-changelog-0.6.pre12() {
288 _git-changelog origin/release/0.6.pre11 release/0.6.pre12 \
289 > _release/VERSION/changelog.html
290}
291
292git-changelog-0.6.pre13() {
293 _git-changelog origin/release/0.6.pre12 release/0.6.pre13 \
294 > _release/VERSION/changelog.html
295}
296
297git-changelog-0.6.pre14() {
298 _git-changelog origin/release/0.6.pre13 release/0.6.pre14 \
299 > _release/VERSION/changelog.html
300}
301
302git-changelog-0.6.pre15() {
303 _git-changelog origin/release/0.6.pre14 release/0.6.pre15 \
304 > _release/VERSION/changelog.html
305}
306
307git-changelog-0.6.pre16() {
308 _git-changelog origin/release/0.6.pre15 release/0.6.pre16 \
309 > _release/VERSION/changelog.html
310}
311
312git-changelog-0.6.pre17() {
313 _git-changelog origin/release/0.6.pre16 release/0.6.pre17 \
314 > _release/VERSION/changelog.html
315}
316
317git-changelog-0.6.pre18() {
318 _git-changelog origin/release/0.6.pre17 release/0.6.pre18 \
319 > _release/VERSION/changelog.html
320}
321
322git-changelog-0.6.pre19() {
323 _git-changelog origin/release/0.6.pre18 release/0.6.pre19 \
324 > _release/VERSION/changelog.html
325}
326
327git-changelog-0.6.pre20() {
328 _git-changelog origin/release/0.6.pre19 release/0.6.pre20 \
329 > _release/VERSION/changelog.html
330}
331
332git-changelog-0.6.pre21() {
333 _git-changelog origin/release/0.6.pre20 release/0.6.pre21 \
334 > _release/VERSION/changelog.html
335}
336
337git-changelog-0.6.pre22() {
338 _git-changelog origin/release/0.6.pre21 release/0.6.pre22 \
339 > _release/VERSION/changelog.html
340}
341
342git-changelog-0.6.pre23() {
343 _git-changelog origin/release/0.6.pre22 release/0.6.pre23 \
344 > _release/VERSION/changelog.html
345}
346
347git-changelog-0.6.0() {
348 _git-changelog origin/release/0.6.pre23 release/0.6.0 \
349 > _release/VERSION/changelog.html
350}
351
352git-changelog-0.7.pre1() {
353 _git-changelog origin/release/0.6.0 release/0.7.pre1 \
354 > _release/VERSION/changelog.html
355}
356
357git-changelog-0.7.pre2() {
358 _git-changelog origin/release/0.7.pre1 release/0.7.pre2 \
359 > _release/VERSION/changelog.html
360}
361
362git-changelog-0.7.pre3() {
363 _git-changelog origin/release/0.7.pre2 release/0.7.pre3 \
364 > _release/VERSION/changelog.html
365}
366
367git-changelog-0.7.pre4() {
368 _git-changelog origin/release/0.7.pre3 release/0.7.pre4 \
369 > _release/VERSION/changelog.html
370}
371
372git-changelog-0.7.pre5() {
373 _git-changelog origin/release/0.7.pre4 release/0.7.pre5 \
374 > _release/VERSION/changelog.html
375}
376
377git-changelog-0.7.pre6() {
378 _git-changelog origin/release/0.7.pre5 release/0.7.pre6 \
379 > _release/VERSION/changelog.html
380}
381
382git-changelog-0.7.pre7() {
383 _git-changelog origin/release/0.7.pre6 release/0.7.pre7 \
384 > _release/VERSION/changelog.html
385}
386
387git-changelog-0.7.pre8() {
388 _git-changelog origin/release/0.7.pre7 release/0.7.pre8 \
389 > _release/VERSION/changelog.html
390}
391
392git-changelog-0.7.pre9() {
393 _git-changelog origin/release/0.7.pre8 release/0.7.pre9 \
394 > _release/VERSION/changelog.html
395}
396
397git-changelog-0.7.pre10() {
398 _git-changelog origin/release/0.7.pre9 release/0.7.pre10 \
399 > _release/VERSION/changelog.html
400}
401
402git-changelog-0.7.pre11() {
403 _git-changelog origin/release/0.7.pre10 release/0.7.pre11 \
404 > _release/VERSION/changelog.html
405}
406
407git-changelog-0.7.0() {
408 _git-changelog origin/release/0.7.pre11 release/0.7.0 \
409 > _release/VERSION/changelog.html
410}
411
412git-changelog-0.8.pre1() {
413 _git-changelog origin/release/0.7.0 release/0.8.pre1 \
414 > _release/VERSION/changelog.html
415}
416
417git-changelog-0.8.pre2() {
418 _git-changelog origin/release/0.8.pre1 release/0.8.pre2 \
419 > _release/VERSION/changelog.html
420}
421
422git-changelog-0.8.pre3() {
423 _git-changelog origin/release/0.8.pre2 release/0.8.pre3 \
424 > _release/VERSION/changelog.html
425}
426
427git-changelog-0.8.pre4() {
428 _git-changelog origin/release/0.8.pre3 release/0.8.pre4 \
429 > _release/VERSION/changelog.html
430}
431
432git-changelog-0.8.pre5() {
433 _git-changelog origin/release/0.8.pre4 release/0.8.pre5 \
434 > _release/VERSION/changelog.html
435}
436
437git-changelog-0.8.pre6() {
438 _git-changelog origin/release/0.8.pre5 release/0.8.pre6 \
439 > _release/VERSION/changelog.html
440}
441
442git-changelog-0.8.pre7() {
443 _git-changelog origin/release/0.8.pre6 release/0.8.pre7 \
444 > _release/VERSION/changelog.html
445}
446
447git-changelog-0.8.pre8() {
448 _git-changelog origin/release/0.8.pre7 release/0.8.pre8 \
449 > _release/VERSION/changelog.html
450}
451
452git-changelog-0.8.pre9() {
453 _git-changelog origin/release/0.8.pre8 release/0.8.pre9 \
454 > _release/VERSION/changelog.html
455}
456
457git-changelog-0.8.pre10() {
458 _git-changelog origin/release/0.8.pre9 release/0.8.pre10 \
459 > _release/VERSION/changelog.html
460}
461
462git-changelog-0.8.pre11() {
463 _git-changelog origin/release/0.8.pre10 release/0.8.pre11 \
464 > _release/VERSION/changelog.html
465}
466
467git-changelog-0.8.0() {
468 _git-changelog origin/release/0.8.pre11 release/0.8.0 \
469 > _release/VERSION/changelog.html
470}
471
472git-changelog-0.8.1() {
473 _git-changelog origin/release/0.8.0 release/0.8.1 \
474 > _release/VERSION/changelog.html
475}
476
477git-changelog-0.8.2() {
478 _git-changelog origin/release/0.8.1 release/0.8.2 \
479 > _release/VERSION/changelog.html
480}
481
482git-changelog-0.8.3() {
483 _git-changelog origin/release/0.8.2 release/0.8.3 \
484 > _release/VERSION/changelog.html
485}
486
487git-changelog-0.8.4() {
488 _git-changelog origin/release/0.8.3 release/0.8.4 \
489 > _release/VERSION/changelog.html
490}
491
492git-changelog-0.8.5() {
493 _git-changelog origin/release/0.8.4 release/0.8.5 \
494 > _release/VERSION/changelog.html
495}
496
497git-changelog-0.8.6() {
498 _git-changelog origin/release/0.8.5 release/0.8.6 \
499 > _release/VERSION/changelog.html
500}
501
502git-changelog-0.8.7() {
503 _git-changelog origin/release/0.8.6 release/0.8.7 \
504 > _release/VERSION/changelog.html
505}
506
507git-changelog-0.8.8() {
508 _git-changelog origin/release/0.8.7 release/0.8.8 \
509 > _release/VERSION/changelog.html
510}
511
512git-changelog-0.8.9() {
513 _git-changelog origin/release/0.8.8 release/0.8.9 \
514 > _release/VERSION/changelog.html
515}
516
517git-changelog-0.8.10() {
518 _git-changelog origin/release/0.8.9 release/0.8.10 \
519 > _release/VERSION/changelog.html
520}
521
522git-changelog-0.8.11() {
523 _git-changelog origin/release/0.8.10 release/0.8.11 \
524 > _release/VERSION/changelog.html
525}
526
527git-changelog-0.8.12() {
528 _git-changelog origin/release/0.8.11 release/0.8.12 \
529 > _release/VERSION/changelog.html
530}
531
532git-changelog-0.9.0() {
533 _git-changelog origin/release/0.8.12 release/0.9.0 \
534 > _release/VERSION/changelog.html
535}
536
537git-changelog-0.9.1() {
538 _git-changelog origin/release/0.9.0 release/0.9.1 \
539 > _release/VERSION/changelog.html
540}
541
542git-changelog-0.9.3() {
543 _git-changelog origin/release/0.9.2 release/0.9.3 \
544 > _release/VERSION/changelog.html
545}
546
547git-changelog-0.9.4() {
548 _git-changelog origin/release/0.9.3 release/0.9.4 \
549 > _release/VERSION/changelog.html
550}
551
552git-changelog-0.9.5() {
553 _git-changelog origin/release/0.9.4 release/0.9.5 \
554 > _release/VERSION/changelog.html
555}
556
557git-changelog-0.9.6() {
558 _git-changelog origin/release/0.9.5 release/0.9.6 \
559 > _release/VERSION/changelog.html
560}
561
562git-changelog-0.9.7() {
563 _git-changelog origin/release/0.9.6 release/0.9.7 \
564 > _release/VERSION/changelog.html
565}
566
567git-changelog-0.9.8() {
568 _git-changelog origin/release/0.9.7 release/0.9.8 \
569 > _release/VERSION/changelog.html
570}
571
572git-changelog-0.9.9() {
573 _git-changelog origin/release/0.9.8 release/0.9.9 \
574 > _release/VERSION/changelog.html
575}
576
577git-changelog-0.10.0() {
578 _git-changelog origin/release/0.9.9 release/0.10.0 \
579 > _release/VERSION/changelog.html
580}
581
582git-changelog-0.10.1() {
583 _git-changelog origin/release/0.10.0 release/0.10.1 \
584 > _release/VERSION/changelog.html
585}
586
587git-changelog-0.11.0() {
588 _git-changelog origin/release/0.10.1 release/0.11.0 \
589 > _release/VERSION/changelog.html
590}
591
592git-changelog-0.12.0() {
593 _git-changelog origin/release/0.11.0 release/0.12.0 \
594 > _release/VERSION/changelog.html
595}
596
597git-changelog-0.12.3() {
598 _git-changelog origin/release/0.12.0 release/0.12.3 \
599 > _release/VERSION/changelog.html
600}
601
602git-changelog-0.12.4() {
603 _git-changelog origin/release/0.12.3 release/0.12.4 \
604 > _release/VERSION/changelog.html
605}
606
607git-changelog-0.12.5() {
608 _git-changelog origin/release/0.12.4 release/0.12.5 \
609 > _release/VERSION/changelog.html
610}
611
612git-changelog-0.12.6() {
613 _git-changelog origin/release/0.12.5 release/0.12.6 \
614 > _release/VERSION/changelog.html
615}
616
617git-changelog-0.12.7() {
618 _git-changelog origin/release/0.12.6 release/0.12.7 \
619 > _release/VERSION/changelog.html
620}
621
622git-changelog-0.12.8() {
623 _git-changelog origin/release/0.12.7 release/0.12.8 \
624 > _release/VERSION/changelog.html
625}
626
627git-changelog-0.12.9() {
628 _git-changelog origin/release/0.12.8 release/0.12.9 \
629 > _release/VERSION/changelog.html
630}
631
632git-changelog-0.13.0() {
633 _git-changelog origin/release/0.12.9 release/0.13.0 \
634 > _release/VERSION/changelog.html
635}
636
637git-changelog-0.13.1() {
638 _git-changelog origin/release/0.13.0 release/0.13.1 \
639 > _release/VERSION/changelog.html
640}
641
642git-changelog-0.14.0() {
643 _git-changelog origin/release/0.13.1 release/0.14.0 \
644 > _release/VERSION/changelog.html
645}
646
647git-changelog-0.14.1() {
648 _git-changelog origin/release/0.14.0 release/0.14.1 \
649 > _release/VERSION/changelog.html
650}
651
652git-changelog-0.14.2() {
653 _git-changelog origin/release/0.14.1 release/0.14.2 \
654 > _release/VERSION/changelog.html
655}
656
657git-changelog-0.15.0() {
658 _git-changelog origin/release/0.14.2 release/0.15.0 \
659 > _release/VERSION/changelog.html
660}
661
662git-changelog-0.16.0() {
663 _git-changelog origin/release/0.15.0 release/0.16.0 \
664 > _release/VERSION/changelog.html
665}
666
667git-changelog-0.17.0() {
668 _git-changelog origin/release/0.16.0 release/0.17.0 \
669 > _release/VERSION/changelog.html
670}
671
672git-changelog-0.18.0() {
673 _git-changelog origin/release/0.17.0 release/0.18.0 \
674 > _release/VERSION/changelog.html
675}
676
677git-changelog-0.19.0() {
678 _git-changelog origin/release/0.18.0 release/0.19.0 \
679 > _release/VERSION/changelog.html
680}
681
682git-changelog-0.20.0() {
683 _git-changelog origin/release/0.19.0 release/0.20.0 \
684 > _release/VERSION/changelog.html
685}
686
687git-changelog-0.21.0() {
688 _git-changelog origin/release/0.20.0 release/0.21.0 \
689 > _release/VERSION/changelog.html
690}
691
692git-changelog-0.22.0() {
693 _git-changelog origin/release/0.21.0 release/0.22.0 \
694 > _release/VERSION/changelog.html
695}
696
697git-changelog-0.23.0() {
698 _git-changelog origin/release/0.22.0 release/0.23.0 \
699 > _release/VERSION/changelog.html
700}
701
702git-changelog-0.24.0() {
703 _git-changelog origin/release/0.23.0 release/0.24.0 \
704 > _release/VERSION/changelog.html
705}
706
707git-changelog-0.25.0() {
708 _git-changelog origin/release/0.24.0 release/0.25.0 \
709 > _release/VERSION/changelog.html
710}
711
712git-changelog-0.26.0() {
713 _git-changelog origin/release/0.25.0 release/0.26.0 \
714 > _release/VERSION/changelog.html
715}
716
717git-changelog-0.27.0() {
718 _git-changelog origin/release/0.26.0 release/0.27.0 \
719 > _release/VERSION/changelog.html
720}
721
722git-changelog-0.28.0() {
723 _git-changelog origin/release/0.27.0 release/0.28.0 \
724 > _release/VERSION/changelog.html
725}
726
727git-changelog-0.29.0() {
728 _git-changelog origin/release/0.28.0 release/0.29.0 \
729 > _release/VERSION/changelog.html
730}
731
732git-changelog-0.30.0() {
733 _git-changelog origin/release/0.29.0 release/0.30.0 \
734 > _release/VERSION/changelog.html
735}
736
737git-changelog-0.31.0() {
738 _git-changelog origin/release/0.30.0 release/0.31.0 \
739 > _release/VERSION/changelog.html
740}
741
742git-changelog-0.32.0() {
743 _git-changelog origin/release/0.31.0 release/0.32.0 \
744 > _release/VERSION/changelog.html
745}
746
747git-changelog-0.33.0() {
748 _git-changelog origin/release/0.32.0 release/0.33.0 \
749 > _release/VERSION/changelog.html
750}
751
752git-changelog-0.34.0() {
753 _git-changelog origin/release/0.33.0 release/0.34.0 \
754 > _release/VERSION/changelog.html
755}
756
757git-changelog-0.35.0() {
758 _git-changelog origin/release/0.34.0 release/0.35.0 \
759 > _release/VERSION/changelog.html
760}
761
762git-changelog-0.36.0() {
763 _git-changelog origin/release/0.35.0 release/0.36.0 \
764 > _release/VERSION/changelog.html
765}
766
767git-changelog-0.37.0() {
768 _git-changelog origin/release/0.36.0 release/0.37.0 \
769 > _release/VERSION/changelog.html
770}
771
772# For announcement.html
773html-redirect() {
774 local url=$1
775 cat <<EOF
776<!DOCTYPE html>
777<html>
778 <head>
779 <meta http-equiv="refresh" content="0; url=$url" />
780 </head>
781 <body>
782 <p>Redirect to<a href="$url">$url</a></p>
783 </body>
784</html>
785EOF
786}
787
788no-announcement() {
789 html-head --title 'No announcement'
790 cat <<EOF
791 <body>
792 <p>No announcement for this release. Previous announcements are tagged
793 with #<a href="/blog/tags.html?tag=oils-release#oils-release">oils-release</a>.
794 </p>
795 </body>
796</html>
797EOF
798}
799
800write-no-announcement() {
801 no-announcement > _release/VERSION/announcement.html
802}
803
804readonly SITE_DEPLOY_DIR='../../oilshell/oilshell.org__deploy'
805
806announcement-0.0() {
807 html-redirect '/blog/2017/07/23.html' \
808 > ../oilshell.org__deploy/release/0.0.0/announcement.html
809}
810
811announcement-0.1() {
812 local version='0.1.0'
813 html-redirect '/blog/2017/09/09.html' \
814 > ../oilshell.org__deploy/release/$version/announcement.html
815}
816
817announcement-0.2() {
818 html-redirect '/blog/2017/11/10.html' > _release/VERSION/announcement.html
819}
820
821announcement-0.3() {
822 html-redirect '/blog/2017/12/22.html' > _release/VERSION/announcement.html
823 #no-announcement > _release/VERSION/announcement.html
824}
825
826announcement-0.4() {
827 html-redirect '/blog/2018/02/03.html' > _release/VERSION/announcement.html
828}
829
830announcement-0.5.alpha3() {
831 html-redirect '/blog/2018/04/30.html' > _release/VERSION/announcement.html
832}
833
834announcement-0.5() {
835 html-redirect '/blog/2018/07/12.html' > _release/VERSION/announcement.html
836}
837
838announcement-0.6.pre1() {
839 html-redirect '/blog/2018/08/15.html' > _release/VERSION/announcement.html
840}
841
842announcement-0.6.pre2() {
843 html-redirect '/blog/2018/08/19.html' > _release/VERSION/announcement.html
844}
845
846announcement-0.6.pre3() {
847 write-no-announcement
848}
849
850announcement-0.6.pre4() {
851 write-no-announcement
852}
853
854announcement-0.6.pre5() {
855 html-redirect '/blog/2018/10/11.html' > $SITE_DEPLOY_DIR/release/0.6.pre5/announcement.html
856}
857
858announcement-0.6.pre6() {
859 no-announcement > $SITE_DEPLOY_DIR/release/0.6.pre6/announcement.html
860}
861
862announcement-0.6.pre7() {
863 write-no-announcement
864}
865
866announcement-0.6.pre8() {
867 html-redirect '/blog/2018/11/15.html' > $SITE_DEPLOY_DIR/release/0.6.pre8/announcement.html
868}
869
870announcement-0.6.pre9() {
871 write-no-announcement
872}
873
874announcement-0.6.pre10() {
875 write-no-announcement
876}
877
878announcement-0.6.pre11() {
879 html-redirect '/blog/2018/12/16.html' > $SITE_DEPLOY_DIR/release/0.6.pre11/announcement.html
880}
881
882announcement-0.6.pre12() {
883 html-redirect '/blog/2019/01/18.html' > $SITE_DEPLOY_DIR/release/0.6.pre12/announcement.html
884}
885
886announcement-0.6.pre13() {
887 html-redirect '/blog/2019/02/05.html' > $SITE_DEPLOY_DIR/release/0.6.pre13/announcement.html
888}
889
890announcement-0.6.pre14() {
891 html-redirect '/blog/2019/02/18.html' > $SITE_DEPLOY_DIR/release/0.6.pre14/announcement.html
892}
893
894announcement-0.6.pre15() {
895 html-redirect '/blog/2019/02/18.html' > $SITE_DEPLOY_DIR/release/0.6.pre15/announcement.html
896}
897
898announcement-0.6.pre16-to-22() {
899 for i in {16..22}; do
900 html-redirect '/blog/2019/06/13.html' > $SITE_DEPLOY_DIR/release/0.6.pre$i/announcement.html
901 done
902}
903
904announcement-0.6.pre23() {
905 html-redirect '/blog/2019/07/19.html' > $SITE_DEPLOY_DIR/release/0.6.pre23/announcement.html
906}
907
908announcement-0.6.0() {
909 html-redirect '/blog/2019/07/19.html' > $SITE_DEPLOY_DIR/release/0.6.0/announcement.html
910}
911
912announcement-0.7.pre1() {
913 html-redirect '/blog/2019/07/19.html' > $SITE_DEPLOY_DIR/release/0.7.pre1/announcement.html
914}
915
916announcement-0.7.pre2() {
917 write-no-announcement
918}
919
920announcement-0.7.pre3() {
921 write-no-announcement
922}
923
924announcement-0.7.pre4() {
925 write-no-announcement
926}
927
928announcement-0.7.pre5() {
929 write-no-announcement
930}
931
932announcement-0.7.pre6() {
933 html-redirect '/blog/2016/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre6/announcement.html
934}
935
936announcement-0.7.pre7() {
937 html-redirect '/blog/2019/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre7/announcement.html
938}
939
940announcement-0.7.pre8() {
941 html-redirect '/blog/2019/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre8/announcement.html
942}
943
944announcement-0.7.pre9() {
945 html-redirect '/blog/2019/12/09.html' > $SITE_DEPLOY_DIR/release/0.7.pre9/announcement.html
946}
947
948announcement-0.7.pre10() {
949 write-no-announcement
950}
951
952announcement-0.7.pre11() {
953 write-no-announcement
954}
955
956announcement-0.7.0() {
957 html-redirect '/blog/2020/02/recap.html' > $SITE_DEPLOY_DIR/release/0.7.0/announcement.html
958}
959
960announcement-0.8.pre1() {
961 html-redirect '/blog/2020/02/recap.html' > $SITE_DEPLOY_DIR/release/0.8.pre1/announcement.html
962}
963
964announcement-0.8.pre2() {
965 html-redirect '/blog/2020/03/release-metrics.html' > $SITE_DEPLOY_DIR/release/0.8.pre2/announcement.html
966}
967
968announcement-0.8.pre3() {
969 html-redirect '/blog/2020/03/release-0.8.pre3.html' > $SITE_DEPLOY_DIR/release/0.8.pre3/announcement.html
970}
971
972announcement-0.8.pre4() {
973 html-redirect '/blog/2020/04/release-0.8.pre4.html' > $SITE_DEPLOY_DIR/release/0.8.pre4/announcement.html
974}
975
976announcement-0.8.pre5() {
977 html-redirect '/blog/2020/05/translation-progress.html' > $SITE_DEPLOY_DIR/release/0.8.pre5/announcement.html
978}
979
980announcement-0.8.pre6() {
981 html-redirect '/blog/2020/06/release-0.8.pre6.html' > $SITE_DEPLOY_DIR/release/0.8.pre6/announcement.html
982}
983
984announcement-0.8.pre7() {
985 write-no-announcement
986}
987
988announcement-0.8.pre8() {
989 write-no-announcement
990}
991
992announcement-0.8.pre9() {
993 write-no-announcement
994}
995
996announcement-0.8.pre10() {
997 write-no-announcement
998}
999
1000announcement-0.8.pre11() {
1001 write-no-announcement
1002}
1003
1004announcement-0.8.0() {
1005 write-no-announcement
1006}
1007
1008announcement-0.8.1() {
1009 write-no-announcement
1010}
1011
1012announcement-0.8.2() {
1013 write-no-announcement
1014}
1015
1016announcement-0.8.3() {
1017 write-no-announcement
1018}
1019
1020announcement-0.8.4() {
1021 write-no-announcement
1022}
1023
1024announcement-0.8.5() {
1025 write-no-announcement
1026}
1027
1028announcement-0.8.6() {
1029 write-no-announcement
1030}
1031
1032announcement-0.8.7() {
1033 write-no-announcement
1034}
1035
1036announcement-0.8.8() {
1037 write-no-announcement
1038}
1039
1040announcement-0.8.9() {
1041 write-no-announcement
1042}
1043
1044announcement-0.8.10() {
1045 write-no-announcement
1046}
1047
1048announcement-0.8.11() {
1049 write-no-announcement
1050}
1051
1052announcement-0.8.12() {
1053 write-no-announcement
1054}
1055
1056announcement-0.9.0() {
1057 write-no-announcement
1058}
1059
1060announcement-0.9.1() {
1061 write-no-announcement
1062}
1063
1064announcement-0.9.3() {
1065 write-no-announcement
1066}
1067
1068announcement-0.9.4() {
1069 write-no-announcement
1070}
1071
1072announcement-0.9.5() {
1073 write-no-announcement
1074}
1075
1076announcement-0.9.6() {
1077 write-no-announcement
1078}
1079
1080announcement-0.9.7() {
1081 write-no-announcement
1082}
1083
1084announcement-0.9.8() {
1085 write-no-announcement
1086}
1087
1088announcement-0.9.9() {
1089 write-no-announcement
1090}
1091
1092announcement-0.10.0() {
1093 write-no-announcement
1094}
1095
1096announcement-0.10.1() {
1097 write-no-announcement
1098}
1099
1100announcement-0.11.0() {
1101 write-no-announcement
1102}
1103
1104announcement-0.12.0() {
1105 write-no-announcement
1106}
1107
1108announcement-0.12.3() {
1109 write-no-announcement
1110}
1111
1112announcement-0.12.4() {
1113 write-no-announcement
1114}
1115
1116announcement-0.12.5() {
1117 write-no-announcement
1118}
1119
1120announcement-0.12.6() {
1121 write-no-announcement
1122}
1123
1124announcement-0.12.7() {
1125 html-redirect '/blog/2022/10/garbage-collector.html' > $SITE_DEPLOY_DIR/release/0.12.7/announcement.html
1126}
1127
1128announcement-0.12.8() {
1129 write-no-announcement
1130}
1131
1132announcement-0.12.9() {
1133 write-no-announcement
1134}
1135
1136announcement-0.13.0() {
1137 write-no-announcement
1138}
1139
1140announcement-0.13.1() {
1141 write-no-announcement
1142}
1143
1144announcement-0.14.0() {
1145 write-no-announcement
1146}
1147
1148announcement-0.14.1() {
1149 write-no-announcement
1150}
1151
1152announcement-0.14.2() {
1153 html-redirect '/blog/2023/03/release-0.14.2.html' > $SITE_DEPLOY_DIR/release/0.14.2/announcement.html
1154}
1155
1156announcement-0.15.0() {
1157 html-redirect '/blog/2023/05/release-0.15.0.html' > $SITE_DEPLOY_DIR/release/0.15.0/announcement.html
1158}
1159
1160announcement-0.16.0() {
1161 html-redirect '/blog/2023/06/release-0.16.0.html' > $SITE_DEPLOY_DIR/release/0.16.0/announcement.html
1162}
1163
1164announcement-0.17.0() {
1165 html-redirect '/blog/2023/08/release-0.17.0.html' > $SITE_DEPLOY_DIR/release/0.17.0/announcement.html
1166}
1167
1168announcement-0.18.0() {
1169 html-redirect '/blog/2023/09/release-0.18.0.html' > $SITE_DEPLOY_DIR/release/0.18.0/announcement.html
1170}
1171
1172announcement-0.19.0() {
1173 html-redirect '/blog/2024/01/release-0.19.0.html' > $SITE_DEPLOY_DIR/release/0.19.0/announcement.html
1174}
1175
1176announcement-0.20.0() {
1177 html-redirect '/blog/2024/02/release-0.20.0.html' > $SITE_DEPLOY_DIR/release/0.20.0/announcement.html
1178}
1179
1180announcement-0.21.0() {
1181 html-redirect '/blog/2024/03/release-0.21.0.html' > $SITE_DEPLOY_DIR/release/0.21.0/announcement.html
1182}
1183
1184announcement-0.22.0() {
1185 html-redirect '/blog/2024/06/release-0.22.0.html' > $SITE_DEPLOY_DIR/release/0.22.0/announcement.html
1186}
1187
1188announcement-0.23.0() {
1189 html-redirect '/blog/2024/11/release-0.23.0.html' > $SITE_DEPLOY_DIR/release/0.23.0/announcement.html
1190}
1191
1192announcement-0.24.0() {
1193 html-redirect '/blog/2025/01/release-0.24.0.html' > $SITE_DEPLOY_DIR/release/0.24.0/announcement.html
1194}
1195
1196announcement-0.25.0() {
1197 write-no-announcement
1198}
1199
1200announcement-0.26.0() {
1201 write-no-announcement
1202}
1203
1204announcement-0.27.0() {
1205 write-no-announcement
1206}
1207
1208announcement-0.28.0() {
1209 write-no-announcement
1210}
1211
1212announcement-0.29.0() {
1213 write-no-announcement
1214}
1215
1216announcement-0.30.0() {
1217 write-no-announcement
1218}
1219
1220announcement-0.31.0() {
1221 write-no-announcement
1222}
1223
1224announcement-0.32.0() {
1225 write-no-announcement
1226}
1227
1228announcement-0.33.0() {
1229 write-no-announcement
1230}
1231
1232announcement-0.34.0() {
1233 write-no-announcement
1234}
1235
1236announcement-0.35.0() {
1237 write-no-announcement
1238}
1239
1240announcement-0.36.0() {
1241 write-no-announcement
1242}
1243
1244announcement-0.37.0() {
1245 write-no-announcement
1246}
1247
1248blog-redirect() {
1249 html-redirect 'making-plans.html' > $SITE_DEPLOY_DIR/blog/2020/01/11.html
1250}
1251
1252if test $(basename $0) = 'release-version.sh'; then
1253 "$@"
1254fi