Last active 1 day ago

swee revised this gist 1 day ago. Go to revision

1 file changed, 3 deletions

update_roundcube.py

@@ -1,10 +1,7 @@
1 1 from tqdm import tqdm
2 2 import requests
3 - import subprocess
4 3 import sys
5 - import time
6 4 import os
7 - import traceback
8 5 import tarfile
9 6 import json
10 7 print("Checking latest version...")

swee revised this gist 1 day ago. Go to revision

1 file changed, 54 insertions

update_roundcube.py(file created)

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