UPDATE_VERSION = '1.5.0' from config import VERSION if VERSION < UPDATE_VERSION: print('Update available.') prompt = input('Update to latest version. (yes/no)') if prompt == 'yes': import subprocess try: process = subprocess.Popen(["git", "checkout", "-f"], stdout=subprocess.PIPE) except FileNotFoundError: print('Git not installed.') exit() finally: output = process.communicate()[0] print(output) import sqlite3 from os import path from config import RESOURCES_PATH database = path.join(RESOURCES_PATH, 'database.db') conn = sqlite3.connect(database) with open(path.join(RESOURCES_PATH, '__dump__.sql'), 'w') as f: for line in conn.iterdump(): f.write('%s\n' % line) sql = '''BEGIN TRANSACTION; ALTER TABLE app_settings RENAME TO tmp_app_settings; CREATE TABLE app_settings ( sett VARCHAR NOT NULL, backup_enabled SMALLINT, backup_type SMALLINT, google_drive_id VARCHAR, backup_file_prefix VARCHAR, email_push_enabled SMALLINT, web_push_enabled SMALLINT, dynalist_api_token VARCHAR, dynalist_api_url VARCHAR, dynalist_api_file_id VARCHAR, smtp_host VARCHAR, smtp_port INTEGER, smtp_email VARCHAR, smtp_password VARCHAR, secret_code VARCHAR, app_name VARCHAR, old_file VARCHAR, new_file VARCHAR, backup_dir VARCHAR, PRIMARY KEY (sett) ); INSERT INTO "app_settings" SELECT 'core', backup_enabled, backup_type, google_drive_id, backup_file_prefix, email_push_enabled, web_push_enabled, dynalist_api_token, dynalist_api_url, dynalist_api_file_id, smtp_host, smtp_port, smtp_email, smtp_password, secret_code, 'Dynalist Companion', 'path/to/old.txt', 'path/to/new.txt', 'path/to/backup_directory' FROM tmp_app_settings; DROP TABLE tmp_app_settings; COMMIT;''' cur = conn.cursor() cur.executescript(sql) print('Updated.') exit() print('Update cancelled.') exit() print('No updates available. :-)')