1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-14 16:27:13 +03:00

Add version check.

This commit is contained in:
Jonathan Harris 2015-12-30 17:04:25 +00:00
parent 777d5b96e5
commit cdf732c62f

25
EDMC.py
View File

@ -4,8 +4,10 @@
#
import argparse
import requests
import sys
from time import time, sleep
from xml.etree import ElementTree
import l10n
l10n.Translations().install_dummy()
@ -19,7 +21,7 @@ import shipyard
import eddb
import stats
import prefs
from config import appcmdname, appversion, config
from config import appcmdname, appversion, update_feed, config
EDDB = eddb.EDDB()
@ -27,6 +29,11 @@ EDDB = eddb.EDDB()
SERVER_RETRY = 5 # retry pause for Companion servers [s]
EXIT_SUCCESS, EXIT_SERVER, EXIT_CREDENTIALS, EXIT_VERIFICATION, EXIT_NOT_DOCKED, EXIT_SYS_ERR = range(6)
# quick and dirty version comparison assuming "strict" numeric only version numbers
def versioncmp(versionstring):
return map(int, versionstring.split('.'))
try:
# arg parsing
parser = argparse.ArgumentParser(prog=appcmdname, description='Prints the current system and station (if docked) to stdout and optionally writes player status, ship locations, ship loadout and/or station data to file. Requires prior setup through the accompanying GUI app.')
@ -39,8 +46,22 @@ try:
parser.add_argument('-s', metavar='FILE', help='write station shipyard data to FILE in CSV format')
parser.add_argument('-t', metavar='FILE', help='write player status to FILE in CSV format')
args = parser.parse_args()
if args.version:
print '%.2f' % (float(''.join(appversion.split('.')[:3])) / 100) # just first three digits
latest = ''
try:
# Copied from update.py - probably should refactor
r = requests.get(update_feed, timeout = 10)
feed = ElementTree.fromstring(r.text)
items = dict([(item.find('enclosure').attrib.get('{http://www.andymatuschak.org/xml-namespaces/sparkle}version'),
item.find('title').text) for item in feed.findall('channel/item')])
lastversion = sorted(items, key=versioncmp)[-1]
if versioncmp(lastversion) > versioncmp(appversion):
latest = ' (%s is available)' % items[lastversion]
except:
pass # Quietly suppress timeouts etc.
print '%.2f%s' % (float(''.join(appversion.split('.')[:3])) / 100, latest) # just first three digits
sys.exit(EXIT_SUCCESS)
session = companion.Session()