]> git.proxmox.com Git - mirror_frr.git/blob - tools/releasedate.py
Merge pull request #9460 from LabNConsulting/chopps/fix-ospf-config
[mirror_frr.git] / tools / releasedate.py
1 #!/usr/bin/python3
2 #
3 # print FRR release schedule dates
4
5 from datetime import datetime, date, timedelta
6
7 w2 = timedelta(days=14)
8
9
10 def year_gen(year):
11 for month in [3, 7, 11]:
12 d = date(year, month, 1)
13 if d.weekday() == 0:
14 d += timedelta(days=1)
15 elif d.weekday() >= 2:
16 d += timedelta(days=8 - d.weekday())
17 yield d
18
19
20 def calc(refdate):
21 year = refdate.year
22
23 prev = list(year_gen(year - 1))[-1]
24 releases = list(year_gen(year)) + list(year_gen(year + 1))
25
26 while refdate > releases[0]:
27 prev = releases.pop(0)
28
29 return (prev, releases)
30
31
32 if __name__ == "__main__":
33 now = datetime.now().date()
34 last, upcoming = calc(now)
35
36 print("Last release was (scheduled) on %s" % last.isoformat())
37
38 rel = upcoming.pop(0)
39 freeze, rc1, rc2 = rel - w2 * 3, rel - w2 * 2, rel - w2
40
41 if now == rel:
42 print("It's release day! 🎉")
43 elif now >= rc2:
44 print(
45 "%d days until release! (rc2 since %s)"
46 % ((rel - now).days, rc2.isoformat())
47 )
48 elif now >= rc1:
49 print("%d days until rc2. (rc1 since %s)" % ((rc2 - now).days, rc1.isoformat()))
50 elif now >= freeze:
51 print(
52 "%d days until rc1, master is frozen since %s"
53 % ((rc1 - now).days, freeze.isoformat())
54 )
55 else:
56 print(
57 "%d days of hacking time left! (Freeze on %s)"
58 % ((freeze - now).days, freeze.isoformat())
59 )