diff --git a/Tautulli.py b/Tautulli.py
index 7abde39d..aa899189 100755
--- a/Tautulli.py
+++ b/Tautulli.py
@@ -177,7 +177,7 @@ def main():
if args.datadir:
plexpy.DATA_DIR = args.datadir
elif plexpy.FROZEN:
- plexpy.DATA_DIR = appdirs.user_data_dir("Tautulli", "Tautulli")
+ plexpy.DATA_DIR = appdirs.user_data_dir("Tautulli", False)
else:
plexpy.DATA_DIR = plexpy.PROG_DIR
@@ -268,8 +268,11 @@ def main():
plexpy.shutdown(restart=True, checkout=True)
elif plexpy.SIGNAL == 'reset':
plexpy.shutdown(restart=True, reset=True)
- else:
+ elif plexpy.SIGNAL == 'update':
plexpy.shutdown(restart=True, update=True)
+ else:
+ logger.error('Unknown signal. Shutting down...')
+ plexpy.shutdown()
plexpy.SIGNAL = None
diff --git a/data/interfaces/default/base.html b/data/interfaces/default/base.html
index 1642af09..63f42ffc 100644
--- a/data/interfaces/default/base.html
+++ b/data/interfaces/default/base.html
@@ -330,8 +330,10 @@ ${next.modalIncludes()}
msg = 'A newer version of Tautulli is available!
' +
'You are '+ result.commits_behind + ' commit' + (result.commits_behind > 1 ? 's' : '') + ' behind.
';
}
- if (result.docker) {
+ if (result.install_type === 'docker') {
msg += 'Update your Docker container or Dismiss';
+ } else if (result.install_type === 'windows' || result.install_type === 'macos') {
+ msg += 'Download and install the latest version or Dismiss'
} else {
msg += 'Update or Dismiss';
}
diff --git a/plexpy/__init__.py b/plexpy/__init__.py
index 330df4c4..447a8e38 100644
--- a/plexpy/__init__.py
+++ b/plexpy/__init__.py
@@ -277,10 +277,10 @@ def initialize(config_file):
# Get the currently installed version. Returns None, 'win32' or the git
# hash.
- CURRENT_VERSION, CONFIG.GIT_REMOTE, CONFIG.GIT_BRANCH = versioncheck.getVersion()
+ CURRENT_VERSION, CONFIG.GIT_REMOTE, CONFIG.GIT_BRANCH = versioncheck.get_version()
# Write current version to a file, so we know which version did work.
- # This allowes one to restore to that version. The idea is that if we
+ # This allows one to restore to that version. The idea is that if we
# arrive here, most parts of Tautulli seem to work.
if CURRENT_VERSION:
try:
@@ -2210,9 +2210,6 @@ def shutdown(restart=False, update=False, checkout=False, reset=False):
CONFIG.write()
- if not restart and not update and not checkout:
- logger.info("Tautulli is shutting down...")
-
if update:
logger.info("Tautulli is updating...")
try:
@@ -2255,25 +2252,23 @@ def shutdown(restart=False, update=False, checkout=False, reset=False):
# Separate out logger so we can shutdown logger after
if NOFORK:
- logger.info('Running as service, not forking. Exiting...')
- elif os.name == 'nt':
- logger.info('Restarting Tautulli with %s', args)
+ logger.info("Running as service, not forking. Exiting...")
else:
- logger.info('Restarting Tautulli with %s', args)
-
- logger.shutdown()
+ logger.info("Restarting Tautulli with %s", args)
# os.execv fails with spaced names on Windows
# https://bugs.python.org/issue19066
if NOFORK:
pass
- elif os.name == 'nt':
+ elif common.PLATFORM == 'Windows':
subprocess.Popen(args, cwd=os.getcwd())
else:
os.execv(exe, args)
else:
- logger.shutdown()
+ logger.info("Tautulli is shutting down...")
+
+ logger.shutdown()
os._exit(0)
@@ -2331,7 +2326,7 @@ def check_folder_writable(folder, fallback, name):
os.makedirs(folder)
except OSError as e:
logger.error("Could not create %s dir '%s': %s" % (name, folder, e))
- if folder != fallback:
+ if fallback and folder != fallback:
logger.warn("Falling back to %s dir '%s'" % (name, fallback))
return check_folder_writable(None, fallback, name)
else:
@@ -2339,7 +2334,7 @@ def check_folder_writable(folder, fallback, name):
if not os.access(folder, os.W_OK):
logger.error("Cannot write to %s dir '%s'" % (name, folder))
- if folder != fallback:
+ if fallback and folder != fallback:
logger.warn("Falling back to %s dir '%s'" % (name, fallback))
return check_folder_writable(None, fallback, name)
else:
diff --git a/plexpy/versioncheck.py b/plexpy/versioncheck.py
index 17b6c2c4..c5e3c94a 100644
--- a/plexpy/versioncheck.py
+++ b/plexpy/versioncheck.py
@@ -72,33 +72,37 @@ def runGit(args):
elif output:
break
- return (output, err)
+ return output, err
-def getVersion():
+def get_version():
- if common.BRANCH.startswith('win32build'):
- plexpy.INSTALL_TYPE = 'win'
+ if plexpy.FROZEN and common.PLATFORM == 'Windows':
+ plexpy.INSTALL_TYPE = 'windows'
+ current_version, current_branch = get_version_from_file()
+ return current_version, 'origin', current_branch
- # Don't have a way to update exe yet, but don't want to set VERSION to None
- return 'Windows Install', 'origin', 'master'
+ elif plexpy.FROZEN and common.PLATFORM == 'Darwin':
+ plexpy.INSTALL_TYPE = 'macos'
+ current_version, current_branch = get_version_from_file()
+ return current_version, 'origin', current_branch
elif os.path.isdir(os.path.join(plexpy.PROG_DIR, '.git')):
-
plexpy.INSTALL_TYPE = 'git'
output, err = runGit('rev-parse HEAD')
if not output:
logger.error('Could not find latest installed version.')
cur_commit_hash = None
-
- cur_commit_hash = str(output)
+ else:
+ cur_commit_hash = str(output)
if not re.match('^[a-z0-9]+$', cur_commit_hash):
logger.error('Output does not look like a hash, not using it.')
cur_commit_hash = None
if plexpy.CONFIG.DO_NOT_OVERRIDE_GIT_BRANCH and plexpy.CONFIG.GIT_BRANCH:
+ remote_name = None
branch_name = plexpy.CONFIG.GIT_BRANCH
else:
@@ -126,37 +130,39 @@ def getVersion():
return cur_commit_hash, remote_name, branch_name
else:
-
plexpy.INSTALL_TYPE = 'docker' if plexpy.DOCKER else 'source'
-
- version_file = os.path.join(plexpy.PROG_DIR, 'version.txt')
- branch_file = os.path.join(plexpy.PROG_DIR, 'branch.txt')
-
- if os.path.isfile(version_file):
- with open(version_file, 'r') as f:
- current_version = f.read().strip(' \n\r')
- else:
- current_version = None
-
- if os.path.isfile(branch_file):
- with open(branch_file, 'r') as f:
- current_branch = f.read().strip(' \n\r')
- else:
- current_branch = common.BRANCH
-
+ current_version, current_branch = get_version_from_file()
return current_version, 'origin', current_branch
+def get_version_from_file():
+ version_file = os.path.join(plexpy.PROG_DIR, 'version.txt')
+ branch_file = os.path.join(plexpy.PROG_DIR, 'branch.txt')
+
+ if os.path.isfile(version_file):
+ with open(version_file, 'r') as f:
+ current_version = f.read().strip(' \n\r')
+ else:
+ current_version = None
+
+ if os.path.isfile(branch_file):
+ with open(branch_file, 'r') as f:
+ current_branch = f.read().strip(' \n\r')
+ else:
+ current_branch = common.BRANCH
+
+ return current_version, current_branch
+
+
def check_update(scheduler=False, notify=False):
check_github(scheduler=scheduler, notify=notify)
if not plexpy.CURRENT_VERSION:
plexpy.UPDATE_AVAILABLE = None
- elif plexpy.COMMITS_BEHIND > 0 and plexpy.common.BRANCH in ('master', 'beta') and \
+ elif plexpy.COMMITS_BEHIND > 0 and (plexpy.common.BRANCH in ('master', 'beta') or plexpy.FROZEN) and \
plexpy.common.RELEASE != plexpy.LATEST_RELEASE:
plexpy.UPDATE_AVAILABLE = 'release'
- elif plexpy.COMMITS_BEHIND > 0 and plexpy.CURRENT_VERSION != plexpy.LATEST_VERSION and \
- plexpy.INSTALL_TYPE != 'win':
+ elif plexpy.COMMITS_BEHIND > 0 and plexpy.CURRENT_VERSION != plexpy.LATEST_VERSION and not plexpy.FROZEN:
plexpy.UPDATE_AVAILABLE = 'commit'
else:
plexpy.UPDATE_AVAILABLE = False
@@ -259,8 +265,11 @@ def check_github(scheduler=False, notify=False):
def update():
- if plexpy.INSTALL_TYPE == 'win':
- logger.info('Windows .exe updating not supported yet.')
+ if not plexpy.UPDATE_AVAILABLE:
+ return
+
+ if plexpy.INSTALL_TYPE in ('docker', 'windows', 'macos'):
+ return
elif plexpy.INSTALL_TYPE == 'git':
output, err = runGit('pull --ff-only {} {}'.format(plexpy.CONFIG.GIT_REMOTE,
@@ -276,14 +285,11 @@ def update():
elif line.endswith(('Aborting', 'Aborting.')):
logger.error('Unable to update from git: ' + line)
- elif plexpy.INSTALL_TYPE == 'docker':
- return
-
- else:
+ elif plexpy.INSTALL_TYPE == 'source':
tar_download_url = 'https://github.com/{}/{}/tarball/{}'.format(plexpy.CONFIG.GIT_USER,
plexpy.CONFIG.GIT_REPO,
plexpy.CONFIG.GIT_BRANCH)
- update_dir = os.path.join(plexpy.PROG_DIR, 'update')
+ update_dir = os.path.join(plexpy.DATA_DIR, 'update')
version_path = os.path.join(plexpy.PROG_DIR, 'version.txt')
logger.info('Downloading update from: ' + tar_download_url)
@@ -294,7 +300,7 @@ def update():
return
download_name = plexpy.CONFIG.GIT_BRANCH + '-github'
- tar_download_path = os.path.join(plexpy.PROG_DIR, download_name)
+ tar_download_path = os.path.join(plexpy.DATA_DIR, download_name)
# Save tar to disk
with open(tar_download_path, 'wb') as f:
diff --git a/plexpy/webserve.py b/plexpy/webserve.py
index f6de0c2f..bc2331d9 100644
--- a/plexpy/webserve.py
+++ b/plexpy/webserve.py
@@ -4007,8 +4007,8 @@ class WebInterface(object):
'message': 'Tautulli is up to date.'
}
- if plexpy.DOCKER:
- update['docker'] = plexpy.DOCKER
+ if plexpy.DOCKER or plexpy.FROZEN:
+ update['install_type'] = plexpy.INSTALL_TYPE
return update