mirror of
https://github.com/evilhero/mylar
synced 2025-01-03 13:34:33 +00:00
FIX: Changed where version checking would run in startup sequence - is now after the web interface loads so that it will not loop forever in some instances trying to check git but an instance of Mylar is already running, FIX: Added more verbose error logging when checking versions fails
This commit is contained in:
parent
0fdb551365
commit
6a2b12313e
3 changed files with 66 additions and 57 deletions
4
Mylar.py
4
Mylar.py
|
@ -307,7 +307,9 @@ def main():
|
||||||
# Try to start the server.
|
# Try to start the server.
|
||||||
webstart.initialize(web_config)
|
webstart.initialize(web_config)
|
||||||
|
|
||||||
#logger.info('Starting Mylar on port: %i' % http_port)
|
#check for version here after web server initialized so it doesn't try to repeatidly hit github
|
||||||
|
#for version info if it's already running
|
||||||
|
versioncheck.versionload()
|
||||||
|
|
||||||
if mylar.CONFIG.LAUNCH_BROWSER and not args.nolaunch:
|
if mylar.CONFIG.LAUNCH_BROWSER and not args.nolaunch:
|
||||||
mylar.launch_browser(mylar.CONFIG.HTTP_HOST, http_port, mylar.CONFIG.HTTP_ROOT)
|
mylar.launch_browser(mylar.CONFIG.HTTP_HOST, http_port, mylar.CONFIG.HTTP_ROOT)
|
||||||
|
|
|
@ -171,23 +171,6 @@ def initialize(config_file):
|
||||||
if _INITIALIZED:
|
if _INITIALIZED:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
# Also sets INSTALL_TYPE variable to 'win', 'git' or 'source'
|
|
||||||
CURRENT_VERSION, CONFIG.GIT_BRANCH = versioncheck.getVersion()
|
|
||||||
|
|
||||||
#versioncheck.getVersion()
|
|
||||||
#config_write()
|
|
||||||
if CURRENT_VERSION is not None:
|
|
||||||
hash = CURRENT_VERSION[:7]
|
|
||||||
else:
|
|
||||||
hash = "unknown"
|
|
||||||
|
|
||||||
if CONFIG.GIT_BRANCH == 'master':
|
|
||||||
vers = 'M'
|
|
||||||
elif CONFIG.GIT_BRANCH == 'development':
|
|
||||||
vers = 'D'
|
|
||||||
else:
|
|
||||||
vers = 'NONE'
|
|
||||||
|
|
||||||
# Initialize the database
|
# Initialize the database
|
||||||
logger.info('Checking to see if the database has all tables....')
|
logger.info('Checking to see if the database has all tables....')
|
||||||
try:
|
try:
|
||||||
|
@ -220,22 +203,6 @@ def initialize(config_file):
|
||||||
logger.fdebug('ConcurrentLogHandler package not installed. Using builtin log handler for Rotational logs (default)')
|
logger.fdebug('ConcurrentLogHandler package not installed. Using builtin log handler for Rotational logs (default)')
|
||||||
logger.fdebug('[Windows Users] If you are experiencing log file locking and want this auto-enabled, you need to install Python Extensions for Windows ( http://sourceforge.net/projects/pywin32/ )')
|
logger.fdebug('[Windows Users] If you are experiencing log file locking and want this auto-enabled, you need to install Python Extensions for Windows ( http://sourceforge.net/projects/pywin32/ )')
|
||||||
|
|
||||||
logger.info('Config GIT Branch: %s' % CONFIG.GIT_BRANCH)
|
|
||||||
|
|
||||||
# Check for new versions (autoupdate)
|
|
||||||
if CONFIG.CHECK_GITHUB_ON_STARTUP:
|
|
||||||
try:
|
|
||||||
LATEST_VERSION = versioncheck.checkGithub()
|
|
||||||
except:
|
|
||||||
LATEST_VERSION = CURRENT_VERSION
|
|
||||||
else:
|
|
||||||
LATEST_VERSION = CURRENT_VERSION
|
|
||||||
#
|
|
||||||
if CONFIG.AUTO_UPDATE:
|
|
||||||
if CURRENT_VERSION != LATEST_VERSION and INSTALL_TYPE != 'win' and COMMITS_BEHIND > 0:
|
|
||||||
logger.info('Auto-updating has been enabled. Attempting to auto-update.')
|
|
||||||
# SIGNAL = 'update'
|
|
||||||
|
|
||||||
#check for syno_fix here
|
#check for syno_fix here
|
||||||
if CONFIG.SYNO_FIX:
|
if CONFIG.SYNO_FIX:
|
||||||
parsepath = os.path.join(DATA_DIR, 'bs4', 'builder', '_lxml.py')
|
parsepath = os.path.join(DATA_DIR, 'bs4', 'builder', '_lxml.py')
|
||||||
|
@ -251,7 +218,6 @@ def initialize(config_file):
|
||||||
else:
|
else:
|
||||||
logger.info('Synology Parsing Fix already implemented. No changes required at this time.')
|
logger.info('Synology Parsing Fix already implemented. No changes required at this time.')
|
||||||
|
|
||||||
USER_AGENT = 'Mylar/' +str(hash) +'(' +vers +') +http://www.github.com/evilhero/mylar/'
|
|
||||||
|
|
||||||
CV_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'}
|
CV_HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'}
|
||||||
|
|
||||||
|
|
|
@ -44,12 +44,15 @@ def runGit(args):
|
||||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=mylar.PROG_DIR)
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True, cwd=mylar.PROG_DIR)
|
||||||
output, err = p.communicate()
|
output, err = p.communicate()
|
||||||
#logger.debug('Git output: %s' % output)
|
#logger.debug('Git output: %s' % output)
|
||||||
except OSError as e:
|
except Exception as e:
|
||||||
logger.fdebug('Command %s didn\'t work [%s]' % (cmd, e))
|
logger.error('Command %s didn\'t work [%s]' % (cmd, e))
|
||||||
continue
|
continue
|
||||||
|
else:
|
||||||
|
if all([err is not None, err != '']):
|
||||||
|
logger.error('Encountered error: %s' % err)
|
||||||
|
|
||||||
if 'not found' in output or "not recognized as an internal or external command" in output:
|
if 'not found' in output or "not recognized as an internal or external command" in output:
|
||||||
logger.fdebug('Unable to find git with command ' + cmd)
|
logger.error('[%s] Unable to find git with command: %s' % (output, cmd))
|
||||||
output = None
|
output = None
|
||||||
elif 'fatal:' in output or err:
|
elif 'fatal:' in output or err:
|
||||||
logger.error('Error: %s' % err)
|
logger.error('Error: %s' % err)
|
||||||
|
@ -96,20 +99,24 @@ def getVersion():
|
||||||
else:
|
else:
|
||||||
branch = None
|
branch = None
|
||||||
|
|
||||||
branch_name, err = runGit('branch --contains ' + cur_commit_hash) #rev-parse --abbrev-ref HEAD')
|
branch_name, err = runGit('branch --contains %s' % cur_commit_hash)
|
||||||
|
if not branch_name:
|
||||||
|
logger.warn('Could not retrieve branch name [%s] from git. Defaulting to Master.' % branch)
|
||||||
|
branch = 'master'
|
||||||
|
else:
|
||||||
for line in branch_name.split('\n'):
|
for line in branch_name.split('\n'):
|
||||||
if '*' in line:
|
if '*' in line:
|
||||||
branch = re.sub('[\*\n]','',line).strip()
|
branch = re.sub('[\*\n]','',line).strip()
|
||||||
break
|
break
|
||||||
|
|
||||||
if not branch and mylar.CONFIG.GIT_BRANCH:
|
if not branch and mylar.CONFIG.GIT_BRANCH:
|
||||||
logger.warn('Unable to retrieve branch name [' + branch + '] from git. Setting branch to configuration value of : ' + mylar.CONFIG.GIT_BRANCH)
|
logger.warn('Unable to retrieve branch name [%s] from git. Setting branch to configuration value of : %s' % (branch, mylar.CONFIG.GIT_BRANCH))
|
||||||
branch = mylar.CONFIG.GIT_BRANCH
|
branch = mylar.CONFIG.GIT_BRANCH
|
||||||
if not branch:
|
if not branch:
|
||||||
logger.warn('Could not retrieve branch name [' + branch + '] form git. Defaulting to Master.')
|
logger.warn('Could not retrieve branch name [%s] from git. Defaulting to Master.' % branch)
|
||||||
branch = 'master'
|
branch = 'master'
|
||||||
else:
|
else:
|
||||||
logger.info('Branch detected & set to : ' + branch)
|
logger.info('Branch detected & set to : %s' % branch)
|
||||||
|
|
||||||
return cur_commit_hash, branch
|
return cur_commit_hash, branch
|
||||||
|
|
||||||
|
@ -154,11 +161,12 @@ def getVersion():
|
||||||
|
|
||||||
logger.warn('Unable to determine which commit is currently being run. Defaulting to Master branch.')
|
logger.warn('Unable to determine which commit is currently being run. Defaulting to Master branch.')
|
||||||
|
|
||||||
def checkGithub():
|
def checkGithub(current_version=None):
|
||||||
|
if current_version is None:
|
||||||
|
current_version = mylar.CURRENT_VERSION
|
||||||
|
|
||||||
# Get the latest commit available from github
|
# Get the latest commit available from github
|
||||||
url = 'https://api.github.com/repos/%s/mylar/commits/%s' % (mylar.CONFIG.GIT_USER, mylar.CONFIG.GIT_BRANCH)
|
url = 'https://api.github.com/repos/%s/mylar/commits/%s' % (mylar.CONFIG.GIT_USER, mylar.CONFIG.GIT_BRANCH)
|
||||||
logger.info ('Retrieving latest version information from github')
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, verify=True)
|
response = requests.get(url, verify=True)
|
||||||
git = response.json()
|
git = response.json()
|
||||||
|
@ -169,9 +177,9 @@ def checkGithub():
|
||||||
return mylar.CURRENT_VERSION
|
return mylar.CURRENT_VERSION
|
||||||
|
|
||||||
# See how many commits behind we are
|
# See how many commits behind we are
|
||||||
if mylar.CURRENT_VERSION:
|
if current_version is not None:
|
||||||
logger.fdebug('Comparing currently installed version [' + mylar.CURRENT_VERSION + '] with latest github version [' + mylar.LATEST_VERSION +']')
|
logger.fdebug('Comparing currently installed version [%s] with latest github version [%s]' % (current_version, mylar.LATEST_VERSION))
|
||||||
url = 'https://api.github.com/repos/%s/mylar/compare/%s...%s' % (mylar.CONFIG.GIT_USER, mylar.CURRENT_VERSION, mylar.LATEST_VERSION)
|
url = 'https://api.github.com/repos/%s/mylar/compare/%s...%s' % (mylar.CONFIG.GIT_USER, current_version, mylar.LATEST_VERSION)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(url, verify=True)
|
response = requests.get(url, verify=True)
|
||||||
|
@ -276,6 +284,39 @@ def update():
|
||||||
try:
|
try:
|
||||||
with open(version_path, 'w') as f:
|
with open(version_path, 'w') as f:
|
||||||
f.write(str(mylar.LATEST_VERSION))
|
f.write(str(mylar.LATEST_VERSION))
|
||||||
except IOError, e:
|
except IOError as e:
|
||||||
logger.error("Unable to write current version to version.txt, update not complete: " +ex(e))
|
logger.error("Unable to write current version to version.txt, update not complete: %s" % ex(e))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def versionload():
|
||||||
|
|
||||||
|
mylar.CURRENT_VERSION, mylar.CONFIG.GIT_BRANCH = getVersion()
|
||||||
|
|
||||||
|
if mylar.CURRENT_VERSION is not None:
|
||||||
|
hash = mylar.CURRENT_VERSION[:7]
|
||||||
|
else:
|
||||||
|
hash = "unknown"
|
||||||
|
|
||||||
|
if mylar.CONFIG.GIT_BRANCH == 'master':
|
||||||
|
vers = 'M'
|
||||||
|
elif mylar.CONFIG.GIT_BRANCH == 'development':
|
||||||
|
vers = 'D'
|
||||||
|
else:
|
||||||
|
vers = 'NONE'
|
||||||
|
|
||||||
|
mylar.USER_AGENT = 'Mylar/' +str(hash) +'(' +vers +') +http://www.github.com/evilhero/mylar/'
|
||||||
|
|
||||||
|
logger.info('Version information: %s [%s]' % (mylar.CONFIG.GIT_BRANCH, mylar.CURRENT_VERSION))
|
||||||
|
|
||||||
|
if mylar.CONFIG.CHECK_GITHUB_ON_STARTUP:
|
||||||
|
try:
|
||||||
|
mylar.LATEST_VERSION = checkGithub() #(CURRENT_VERSION)
|
||||||
|
except:
|
||||||
|
mylar.LATEST_VERSION = mylar.CURRENT_VERSION
|
||||||
|
else:
|
||||||
|
mylar.LATEST_VERSION = mylar.CURRENT_VERSION
|
||||||
|
|
||||||
|
if mylar.CONFIG.AUTO_UPDATE:
|
||||||
|
if mylar.CURRENT_VERSION != mylar.LATEST_VERSION and mylar.INSTALL_TYPE != 'win' and mylar.COMMITS_BEHIND > 0:
|
||||||
|
logger.info('Auto-updating has been enabled. Attempting to auto-update.')
|
||||||
|
#SIGNAL = 'update'
|
||||||
|
|
Loading…
Reference in a new issue