| 1 | module main |
| 2 | |
| 3 | import os |
| 4 | import time |
| 5 | import term |
| 6 | |
| 7 | fn 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 | |
| 12 | fn default_release_tag_for(t time.Time) string { |
| 13 | return 'weekly.${iso_week_year(t):04}.${t.week_of_year():02}' |
| 14 | } |
| 15 | |
| 16 | fn 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 | |
| 26 | fn 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 | |