chiark / gitweb /
Add proper copyright statements.
[cura.git] / Cura / util / version.py
1 __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
2 from __future__ import absolute_import
3
4 import os
5 import sys
6 import urllib2
7 import platform
8 try:
9         from xml.etree import cElementTree as ElementTree
10 except:
11         from xml.etree import ElementTree
12
13 from Cura.util import resources
14
15 def getVersion(getGitVersion = True):
16         gitPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../.git"))
17         if hasattr(sys, 'frozen'):
18                 versionFile = os.path.normpath(os.path.join(resources.resourceBasePath, "version"))
19         else:
20                 versionFile = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../version"))
21         if os.path.exists(gitPath):
22                 if not getGitVersion:
23                         return "dev"
24                 f = open(gitPath + "/refs/heads/master", "r")
25                 version = f.readline()
26                 f.close()
27                 return version.strip()
28         if os.path.exists(versionFile):
29                 f = open(versionFile, "r")
30                 version = f.readline()
31                 f.close()
32                 return version.strip()
33         versionFile = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../version"))
34         if os.path.exists(versionFile):
35                 f = open(versionFile, "r")
36                 version = f.readline()
37                 f.close()
38                 return version.strip()
39         return "?"
40
41 def isDevVersion():
42         gitPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../.git"))
43         return os.path.exists(gitPath)
44
45 def checkForNewerVersion():
46         if isDevVersion():
47                 return None
48         try:
49                 updateBaseURL = 'http://software.ultimaker.com'
50                 localVersion = map(int, getVersion(False).split('.'))
51                 while len(localVersion) < 3:
52                         localVersion += [1]
53                 latestFile = urllib2.urlopen("%s/latest.xml" % (updateBaseURL))
54                 latestXml = latestFile.read()
55                 latestFile.close()
56                 xmlTree = ElementTree.fromstring(latestXml)
57                 for release in xmlTree.iter('release'):
58                         os = str(release.attrib['os'])
59                         version = [int(release.attrib['major']), int(release.attrib['minor']), int(release.attrib['revision'])]
60                         filename = release.find("filename").text
61                         if platform.system() == os:
62                                 if version > localVersion:
63                                         return "%s/current/%s" % (updateBaseURL, filename)
64         except:
65                 print sys.exc_info()
66                 return None
67         return None
68
69 if __name__ == '__main__':
70         print(getVersion())