Add an updater program

This commit is contained in:
CMDR-Kiel42 committed 2019-07-23 00:10:06 +02:00
1 parent 5729c8e4d6
commit 80f2eeaa87
2 files changed
+46

No files matched your search

+4
View File
@@ -8,6 +8,7 @@ import json
import webbrowser import webbrowser
import requests import requests
import traceback import traceback
import subprocess
from time import sleep from time import sleep
from AutoCompleter import AutoCompleter from AutoCompleter import AutoCompleter
from PlaceHolderEntry import PlaceHolderEntry from PlaceHolderEntry import PlaceHolderEntry
@@ -41,6 +42,9 @@ def plugin_start(plugin_dir):
if response.status_code == 200: if response.status_code == 200:
if this.plugin_version != response.content: if this.plugin_version != response.content:
this.update_available = True this.update_available = True
pid = os.getpid()
print("PID: " + str(pid))
subprocess.Popen(["./updater.py", "--pid=" + str(pid), "--version=" + response.content])
else: else:
sys.stderr.write("Could not query latest version from GitHub: " + str(response.status_code) + response.text) sys.stderr.write("Could not query latest version from GitHub: " + str(response.status_code) + response.text)
except NameError: except NameError:
Executable
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env python2
import os
import requests
import sys
import argparse
import time
import zipfile
def is_running(pid):
try:
os.kill(pid, 0)
except OSError:
return False
return True
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--pid')
parser.add_argument('--version')
args = parser.parse_args()
pid = args.pid
version = args.version
zip_name = "EDMC_SpanshRouter_" + args.version.replace('.', '') + ".zip"
url = 'https://github.com/CMDR-Kiel42/EDMC_SpanshRouter/releases/download/v' + args.version + '/' + zip_name
r = requests.get(url)
with open(zip_name, 'wb') as f:
f.write(r.content)
while is_running(int(pid)):
time.sleep(.25)
with zipfile.ZipFile(zip_name, 'r') as zip_ref:
zip_ref.extractall("./")
os.remove(zip_name)
if __name__ == "__main__":
main()