-
Notifications
You must be signed in to change notification settings - Fork 0
/
updater.py
59 lines (49 loc) · 1.55 KB
/
updater.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
import subprocess
# requests
try:
import requests
except:
print("Missing requests module")
print("Installing...")
subprocess.run(["pip3", "install", "requests"],
check=True, stdout=subprocess.PIPE).stdout
import requests
print("requests installed!")
# Git (needs to be in PATH)
try:
import git
except:
print("Missing GitPython module")
print("Installing...")
subprocess.run(["pip3", "install", "GitPython"],
check=True, stdout=subprocess.PIPE).stdout
import git
print("GitPython installed!")
def get_latest():
url = "https://raw.githubusercontent.com/astrohr/NEOPlanner/main/version"
try:
r = requests.get(url)
assert r.status_code == 200
latest_version = r.content.decode().strip()
except:
return None
return latest_version
def update():
g = git.Git()
g.pull()
subprocess.run(["pip3", "install", "-r", "requirements.txt"],
check=True, stdout=subprocess.PIPE).stdout
if __name__ == "__main__":
with open("version") as f:
current_version = f.read().strip()
print("Current version:", current_version)
latest_version = get_latest()
if latest_version != current_version:
print("New version available:", latest_version)
print("Updating...")
update()
print("Update complete")
elif latest_version == current_version:
print(f"You have the latest version ({current_version})")
else:
print("Warning: unable to get latest version information!")