Last active 1 day ago

Revision 65f1c41d6a7260cd909be1f7c4ebb9f3793769b8

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