v / .github / workflows / show_manual_release_cmd.vsh
47 lines · 38 sloc · 1.19 KB · 5b69150b3efa1dbb15d019830c5ba7a1febe8e61
Raw
1module main
2
3import os
4import time
5import term
6
7fn iso_week_year(t time.Time) int {
8 // ISO 8601 assigns a date to the year of the Thursday in its week.
9 return t.add_days(4 - t.day_of_week()).year
10}
11
12fn default_release_tag_for(t time.Time) string {
13 return 'weekly.${iso_week_year(t):04}.${t.week_of_year():02}'
14}
15
16fn release_time() time.Time {
17 now_override := os.getenv('V_RELEASE_TAG_NOW')
18 if now_override != '' {
19 return time.parse(now_override) or {
20 panic('invalid V_RELEASE_TAG_NOW `${now_override}`: ${err}')
21 }
22 }
23 return time.now()
24}
25
26fn main() {
27 now := release_time()
28 mut remote_name := 'origin'
29 mut release_tag := default_release_tag_for(now)
30
31 if os.args.len > 1 {
32 remote_name = os.args[1]
33 }
34
35 if os.args.len > 2 {
36 release_tag = os.args[2]
37 }
38
39 println('## Usage: show_manual_release_cmd.vsh [REMOTE] [TAGNAME]')
40 println('## current remote_name: ${remote_name}')
41 println('## current release_tag: ${release_tag}')
42 println('## ▼▼▼ ${term.ecolorize(term.yellow,
43 'run the following, to make a new github release')} ▼▼▼ ')
44
45 git_cmd := 'git tag -s -m "releases: ${release_tag}" ${release_tag} && git push --atomic ${remote_name} ${release_tag}'
46 println(git_cmd)
47}
48