axmol/tools/console/plugins/plugin_update.py

62 lines
1.7 KiB
Python
Raw Normal View History

# ----------------------------------------------------------------------------
# cocos2d "update" plugin
#
# Author: Luis Parravicini
#
# License: MIT
# ----------------------------------------------------------------------------
'''
"update" plugin for cocos2d command line tool
'''
__docformat__ = 'restructuredtext'
import re
import os
import cocos2d
import httplib
class CCPluginUpdate(cocos2d.CCPlugin):
@staticmethod
def plugin_name():
return "update"
@staticmethod
def brief_description():
return "checks if there's an update available"
def _check_versions(self):
latest_version = self._get_latest_version()
current_version = '2.1.0'
#FIXME check version numbers with verlib? https://wiki.python.org/moin/Distutils/VersionComparison
def _get_latest_version(self):
cocos2d.Logging.info("obtaining latest version number")
conn = httplib.HTTPConnection('cocos2d-x.org', timeout=10)
try:
conn.request('GET', '/download')
res = conn.getresponse()
if res.status != httplib.OK:
raise cocos2d.CCPluginError("Unexpected response status (%d)" % res.status)
data = res.read()
#FIXME: quick and dirty (and error prone) way to extract the latest version
#from the html page
match = re.search('href="http://cdn.cocos2d-x.org/cocos2d-x-(.*?).zip"', data)
if match is None:
raise cocos2d.CCPluginError("Couldn't extract latest version from site")
return match.group(1)
finally:
conn.close()
def run(self, argv, dependencies):
self.parse_args(argv)
self._check_versions()