Remove dependency on platform_utils and use a minified version of its paths module instead

This commit is contained in:
Manuel Cortez 2022-02-23 10:09:15 -06:00
parent 2e0b8d0f75
commit 64f3acdbb6
No known key found for this signature in database
GPG Key ID: 9E0735CA15EFE790
4 changed files with 64 additions and 7 deletions

View File

@ -1,3 +1,2 @@
pypubsub pypubsub
requests requests
git+https://github.com/accessibleapps/platform_utils

View File

@ -11,9 +11,8 @@ import zipfile
import logging import logging
import requests import requests
from pubsub import pub # type: ignore from pubsub import pub # type: ignore
from platform_utils import paths # type: ignore
from typing import Optional, Dict, Tuple, Union, Any from typing import Optional, Dict, Tuple, Union, Any
from . import paths
log = logging.getLogger("updater.core") log = logging.getLogger("updater.core")
class UpdaterCore(object): class UpdaterCore(object):

60
updater/paths.py Normal file
View File

@ -0,0 +1,60 @@
""" Provide some system paths for multiple platforms.
This module has been taken and modified from https://github.com/accessibleapps/platform_utils and has been used to provide some convenient methods to retrieve system paths.
"""
import platform
import os
import sys
plat: str = platform.system()
is_windows: bool = plat == "Windows"
is_mac: bool = plat == "Darwin"
is_linux: bool = plat == "Linux"
# ToDo: Return correct values for nuitka build executables, as they do not use sys.frozen.
def is_frozen() -> bool:
""" Checks wheter the updater package is inside a frozen application.
:rtype: bool
"""
return hasattr(sys, "frozen")
def get_executable() -> str:
"""Returns the full executable path/name if frozen, or the full path/name of the main module if not.
:rtype: str
"""
if is_frozen():
if not is_mac:
return sys.executable
# On Mac, sys.executable points to python. We want the full path to the exe we ran.
exedir = os.path.abspath(os.path.dirname(sys.executable))
items = os.listdir(exedir)
if "python" in items:
items.remove("python")
return os.path.join(exedir, items[0])
# Not frozen
try:
import __main__
return os.path.abspath(__main__.__file__)
except AttributeError:
return sys.argv[0]
def executable_directory() -> str:
"""Always determine the directory of the executable, even when run with py2exe or otherwise frozen.
:rtype: str
"""
executable = get_executable()
path = os.path.abspath(os.path.dirname(executable))
return path
def app_path() -> str:
""" Returns application directory.
:rtype: str
"""
path = executable_directory()
if is_frozen() and is_mac:
path = os.path.abspath(os.path.join(path, "..", ".."))
return path

View File

@ -38,8 +38,7 @@ import logging
from typing import Optional, Any, cast from typing import Optional, Any, cast
from pubsub import pub # type: ignore from pubsub import pub # type: ignore
from pubsub.core.topicexc import TopicNameError # type: ignore from pubsub.core.topicexc import TopicNameError # type: ignore
from platform_utils import paths # type: ignore from . import core, utils, paths
from . import core, utils
log = logging.getLogger("updater.WXUpdater") log = logging.getLogger("updater.WXUpdater")
@ -167,7 +166,7 @@ class WXUpdater(core.UpdaterCore):
update_path = os.path.join(base_path, 'update') update_path = os.path.join(base_path, 'update')
extraction_path = self.extract_update(downloaded, destination=update_path) extraction_path = self.extract_update(downloaded, destination=update_path)
bootstrap_exe = self.move_bootstrap(extraction_path) bootstrap_exe = self.move_bootstrap(extraction_path)
source_path = os.path.join(paths.app_path(), "sandbox") source_path = paths.app_path()
self.on_update_almost_complete() self.on_update_almost_complete()
self.execute_bootstrap(bootstrap_exe, source_path) self.execute_bootstrap(bootstrap_exe, source_path)