-
Notifications
You must be signed in to change notification settings - Fork 0
/
version.py
60 lines (51 loc) · 1.78 KB
/
version.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from pathlib import Path
import re
from datetime import datetime
class Version:
def __init__(self):
self.reset_date()
self.inc = 0
self.isdev = ''
def read_file(self):
version_file = Path('_version.py')
version_pattern = r"(?P<year>\d\d\d\d).(?P<month>\d+).(?P<day>\d+).(?P<inc>\d+)(?P<isdev>\+dev|)"
if version_file.exists():
with open('_version.py') as f:
verion_line = f.readline()
version_info = re.search(version_pattern, verion_line)
self.yr = version_info.group('year')
self.month = version_info.group('month')
self.day = version_info.group('day')
self.inc = int(version_info.group('inc'))
self.isdev = version_info.group('isdev')
else:
self.reset_date()
self.inc = 0
self.isdev = ''
def reset_date(self):
self.yr = datetime.now().year
self.month = datetime.now().month
self.day = datetime.now().day
def write_file(self, isdev=False):
if isdev:
self.isdev = '+dev'
with open('_version.py', 'w') as f:
f.write(
f"__version__ = '{self.__repr__()}'\n")
def __repr__(self) -> str:
return f'{self.yr}.{self.month}.{self.day}.{self.inc}{self.isdev}'
def update_version(self):
version_date = datetime.strptime(f'{self.yr}.{self.month}.{self.day}', r'%Y.%m.%d')
if version_date.date() < datetime.now().date():
self.inc = 1
self.reset_date()
else:
self.inc = self.inc + 1
def main():
version = Version()
version.read_file()
version.update_version()
version.write_file(isdev='+dev')
print(version)
if __name__ == "__main__":
main()