Last active 1 day ago

Revision 186fe76f216b8ff4cecb339a44514ed1034b8aa7

update_roundcube.py Raw
1from tqdm import tqdm
2import requests
3import sys
4import os
5import tarfile
6import json
7print("Checking latest version...")
8req = requests.get("https://api.github.com/repos/roundcube/roundcubemail/releases/latest").json()
9latest = req["tag_name"]
10download = ""
11for asset in req["assets"]:
12 if asset["name"] == f"roundcubemail-{latest}-complete.tar.gz":
13 download = asset["browser_download_url"]
14
15print(f"Latest: {latest}")
16print(f"Download Exists: {download != ''}")
17
18try:
19 current = json.load(open("/var/www/mail.swee.codes/composer.json"))["version"]
20except:
21 current = 0
22print(f"Current: {current if current != 0 else 'Not installed!'}")
23if current == 0:
24 sys.exit(1)
25if current == latest:
26 print("No need to update.")
27 sys.exit()
28
29print("Downloading latest version...")
30
31response = requests.get(download, stream=True)
32
33total_size = int(response.headers.get("content-length", 0))
34block_size = 1024
35
36os.mkdir("roundcube.part")
37
38with tqdm(total=total_size, unit="B", unit_scale=True, leave=False) as progress_bar:
39 with open("roundcube.part/rc.tar.gz", "wb") as file:
40 for data in response.iter_content(block_size):
41 progress_bar.update(len(data))
42 file.write(data)
43
44file = tarfile.open('roundcube.part/rc.tar.gz')
45file.extractall('./roundcube.part')
46file.close()
47
48os.chdir("roundcube.part")
49os.system(f"./roundcubemail-{latest}/bin/installto.sh -y /var/www/mail.swee.codes")
50os.chdir("..")
51os.system("rm -r roundcube.part")