From 80f2eeaa87d1025437cf9120feac8f1f408e2b49 Mon Sep 17 00:00:00 2001 From: CMDR-Kiel42 Date: Tue, 23 Jul 2019 00:10:06 +0200 Subject: [PATCH] Add an updater program --- load.py | 4 ++++ updater.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100755 updater.py diff --git a/load.py b/load.py index c8e4a7b..10259dc 100644 --- a/load.py +++ b/load.py @@ -8,6 +8,7 @@ import json import webbrowser import requests import traceback +import subprocess from time import sleep from AutoCompleter import AutoCompleter from PlaceHolderEntry import PlaceHolderEntry @@ -41,6 +42,9 @@ def plugin_start(plugin_dir): if response.status_code == 200: if this.plugin_version != response.content: this.update_available = True + pid = os.getpid() + print("PID: " + str(pid)) + subprocess.Popen(["./updater.py", "--pid=" + str(pid), "--version=" + response.content]) else: sys.stderr.write("Could not query latest version from GitHub: " + str(response.status_code) + response.text) except NameError: diff --git a/updater.py b/updater.py new file mode 100755 index 0000000..ead1e4c --- /dev/null +++ b/updater.py @@ -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()