Merge pull request #1440 from clinton-hall/fix/bytecode

Clean up bytecode left over after update
This commit is contained in:
Labrys of Knossos 2018-12-19 19:48:16 -05:00 committed by GitHub
commit cbc8655b9a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 73 additions and 27 deletions

View file

@ -23,20 +23,21 @@ except ImportError:
if sys.platform == 'win32':
sys.ext('Please install pywin32')
PROGRAM_DIR = libs.util.module_root()
APP_ROOT = libs.util.module_path(parent=True)
SOURCE_ROOT = libs.util.module_path()
# init preliminaries
SYS_ARGV = sys.argv[1:]
APP_FILENAME = sys.argv[0]
APP_NAME = os.path.basename(APP_FILENAME)
LOG_DIR = os.path.join(PROGRAM_DIR, 'logs')
LOG_DIR = os.path.join(APP_ROOT, 'logs')
LOG_FILE = os.path.join(LOG_DIR, 'nzbtomedia.log')
PID_FILE = os.path.join(LOG_DIR, 'nzbtomedia.pid')
CONFIG_FILE = os.path.join(PROGRAM_DIR, 'autoProcessMedia.cfg')
CONFIG_SPEC_FILE = os.path.join(PROGRAM_DIR, 'autoProcessMedia.cfg.spec')
CONFIG_MOVIE_FILE = os.path.join(PROGRAM_DIR, 'autoProcessMovie.cfg')
CONFIG_TV_FILE = os.path.join(PROGRAM_DIR, 'autoProcessTv.cfg')
TEST_FILE = os.path.join(PROGRAM_DIR, 'tests', 'test.mp4')
CONFIG_FILE = os.path.join(APP_ROOT, 'autoProcessMedia.cfg')
CONFIG_SPEC_FILE = os.path.join(APP_ROOT, 'autoProcessMedia.cfg.spec')
CONFIG_MOVIE_FILE = os.path.join(APP_ROOT, 'autoProcessMovie.cfg')
CONFIG_TV_FILE = os.path.join(APP_ROOT, 'autoProcessTv.cfg')
TEST_FILE = os.path.join(APP_ROOT, 'tests', 'test.mp4')
MYAPP = None
import six
@ -747,7 +748,7 @@ def initialize(section=None):
if platform.system() == 'Windows':
FFMPEG = os.path.join(FFMPEG_PATH, 'ffmpeg.exe')
FFPROBE = os.path.join(FFMPEG_PATH, 'ffprobe.exe')
SEVENZIP = os.path.join(PROGRAM_DIR, 'core', 'extractor', 'bin', platform.machine(), '7z.exe')
SEVENZIP = os.path.join(APP_ROOT, 'core', 'extractor', 'bin', platform.machine(), '7z.exe')
SHOWEXTRACT = int(str(CFG["Windows"]["show_extraction"]), 0)
if not (os.path.isfile(FFMPEG)): # problem

View file

@ -19,7 +19,7 @@ def extract(file_path, output_destination):
core.logger.error("EXTRACTOR: Could not find 7-zip, Exiting")
return False
wscriptlocation = os.path.join(os.environ['WINDIR'], 'system32', 'wscript.exe')
invislocation = os.path.join(core.PROGRAM_DIR, 'core', 'extractor', 'bin', 'invisible.vbs')
invislocation = os.path.join(core.APP_ROOT, 'core', 'extractor', 'bin', 'invisible.vbs')
cmd_7zip = [wscriptlocation, invislocation, str(core.SHOWEXTRACT), core.SEVENZIP, "x", "-y"]
ext_7zip = [".rar", ".zip", ".tar.gz", "tgz", ".tar.bz2", ".tbz", ".tar.lzma", ".tlz", ".7z", ".xz"]
extract_commands = dict.fromkeys(ext_7zip, cmd_7zip)

View file

@ -22,7 +22,7 @@ def db_filename(filename="nzbtomedia.db", suffix=None):
"""
if suffix:
filename = "{0}.{1}".format(filename, suffix)
return core.os.path.join(core.PROGRAM_DIR, filename)
return core.os.path.join(core.APP_ROOT, filename)
class DBConnection(object):

View file

@ -15,6 +15,7 @@ from six.moves.urllib.request import urlretrieve
import core
from core import github_api as github, logger
import libs.util
class CheckVersion(object):
@ -48,7 +49,7 @@ class CheckVersion(object):
"""
# check if we're a windows build
if os.path.isdir(os.path.join(core.PROGRAM_DIR, u'.git')):
if os.path.isdir(os.path.join(core.APP_ROOT, u'.git')):
install_type = 'git'
else:
install_type = 'source'
@ -79,7 +80,23 @@ class CheckVersion(object):
def update(self):
if self.updater.need_update():
return self.updater.update()
result = self.updater.update()
self.clean()
return result
@staticmethod
def clean():
# Clean libs
result = libs.util.git_clean(
remove_directories=True,
force=True,
ignore_rules=True,
paths=[
libs.LIB_ROOT,
core.SOURCE_ROOT,
],
)
logger.debug(result)
class UpdateManager(object):
@ -174,9 +191,9 @@ class GitUpdateManager(UpdateManager):
try:
logger.log(u"Executing {cmd} with your shell in {directory}".format
(cmd=cmd, directory=core.PROGRAM_DIR), logger.DEBUG)
(cmd=cmd, directory=core.APP_ROOT), logger.DEBUG)
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
shell=True, cwd=core.PROGRAM_DIR)
shell=True, cwd=core.APP_ROOT)
output, err = p.communicate()
exit_status = p.returncode
@ -345,7 +362,7 @@ class SourceUpdateManager(UpdateManager):
def _find_installed_version(self):
version_file = os.path.join(core.PROGRAM_DIR, u'version.txt')
version_file = os.path.join(core.APP_ROOT, u'version.txt')
if not os.path.isfile(version_file):
self._cur_commit_hash = None
@ -437,11 +454,11 @@ class SourceUpdateManager(UpdateManager):
"""
tar_download_url = 'https://github.com/{org}/{repo}/tarball/{branch}'.format(
org=self.github_repo_user, repo=self.github_repo, branch=self.branch)
version_path = os.path.join(core.PROGRAM_DIR, u'version.txt')
version_path = os.path.join(core.APP_ROOT, u'version.txt')
try:
# prepare the update dir
sb_update_dir = os.path.join(core.PROGRAM_DIR, u'sb-update')
sb_update_dir = os.path.join(core.APP_ROOT, u'sb-update')
if os.path.isdir(sb_update_dir):
logger.log(u"Clearing out update folder {dir} before extracting".format(dir=sb_update_dir))
@ -485,12 +502,12 @@ class SourceUpdateManager(UpdateManager):
# walk temp folder and move files to main folder
logger.log(u"Moving files from {source} to {destination}".format
(source=content_dir, destination=core.PROGRAM_DIR))
(source=content_dir, destination=core.APP_ROOT))
for dirname, dirnames, filenames in os.walk(content_dir): # @UnusedVariable
dirname = dirname[len(content_dir) + 1:]
for curfile in filenames:
old_path = os.path.join(content_dir, dirname, curfile)
new_path = os.path.join(core.PROGRAM_DIR, dirname, curfile)
new_path = os.path.join(core.APP_ROOT, dirname, curfile)
# Avoid DLL access problem on WIN32/64
# These files needing to be updated manually

View file

@ -4,8 +4,7 @@ import sys
import libs.util
ROOT_DIR = libs.util.module_root()
LIB_DIR = os.path.join(ROOT_DIR, 'libs')
LIB_ROOT = libs.util.module_path()
COMMON = 'common'
CUSTOM = 'custom'
@ -18,7 +17,7 @@ MANDATORY = {
CUSTOM,
}
DIRECTORY = {
lib: os.path.join(LIB_DIR, lib)
lib: os.path.join(LIB_ROOT, lib)
for lib in [COMMON, CUSTOM, PY2, WIN]
}

View file

@ -5,7 +5,7 @@ import time
import libs
if __name__ == '__main__':
os.chdir(libs.LIB_DIR)
os.chdir(libs.LIB_ROOT)
for lib, directory in libs.DIRECTORY.items():
if lib == 'custom':
continue

View file

@ -4,19 +4,20 @@ import sys
import os
__all__ = [
'module_root',
'module_path',
'add_path',
]
def module_root(module=__file__):
def module_path(module=__file__, parent=False):
try:
path = module.__file__
except AttributeError:
path = module
directory = os.path.dirname(path)
parent = os.path.join(directory, os.pardir)
absolute = os.path.abspath(parent)
if parent:
directory = os.path.join(directory, os.pardir)
absolute = os.path.abspath(directory)
normalized = os.path.normpath(absolute)
return normalized
@ -58,3 +59,31 @@ def install_requirements(
args.append(path)
subprocess.call(args)
def git_clean(remove_directories=False, force=False, dry_run=False, interactive=False, quiet=False, exclude=None,
ignore_rules=False, clean_ignored=False, paths=None):
command = ['git', 'clean']
if remove_directories:
command.append('-d')
if force:
command.append('--force')
if interactive:
command.append('--interactive')
if quiet:
command.append('--quiet')
if dry_run:
command.append('--dry-run')
if exclude:
command.append('--exclude={pattern}'.format(pattern=exclude))
if ignore_rules:
command.append('-x')
if clean_ignored:
command.append('-X')
if paths:
try:
paths = paths.split(' ')
except AttributeError:
pass
command.extend(paths)
return subprocess.check_output(command)