chiark / gitweb /
Update firmwares to 13.12 to fix the acceleration planner bug. Add dialog on new...
[cura.git] / Cura / util / version.py
1 from __future__ import absolute_import
2 __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
3
4 import os
5 import sys
6 import urllib2
7 import platform
8 import subprocess
9 try:
10         from xml.etree import cElementTree as ElementTree
11 except:
12         from xml.etree import ElementTree
13
14 from Cura.util import resources
15
16 def getVersion(getGitVersion = True):
17         gitPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../.."))
18         if hasattr(sys, 'frozen'):
19                 versionFile = os.path.normpath(os.path.join(resources.resourceBasePath, "version"))
20         else:
21                 versionFile = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../version"))
22
23         if getGitVersion:
24                 try:
25                         gitProcess = subprocess.Popen(args = "git show -s --pretty=format:%H", shell = True, cwd = gitPath, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
26                         (stdoutdata, stderrdata) = gitProcess.communicate()
27
28                         if gitProcess.returncode == 0:
29                                 return stdoutdata
30                 except:
31                         pass
32
33         gitHeadFile = gitPath + "/.git/refs/heads/SteamEngine"
34         if os.path.isfile(gitHeadFile):
35                 if not getGitVersion:
36                         return "dev"
37                 f = open(gitHeadFile, "r")
38                 version = f.readline()
39                 f.close()
40                 return version.strip()
41         if os.path.exists(versionFile):
42                 f = open(versionFile, "r")
43                 version = f.readline()
44                 f.close()
45                 return version.strip()
46         versionFile = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../version"))
47         if os.path.exists(versionFile):
48                 f = open(versionFile, "r")
49                 version = f.readline()
50                 f.close()
51                 return version.strip()
52         return "?"
53
54 def isDevVersion():
55         gitPath = os.path.abspath(os.path.join(os.path.split(os.path.abspath(__file__))[0], "../../.git"))
56         return os.path.exists(gitPath)
57
58 def checkForNewerVersion():
59         if isDevVersion():
60                 return None
61         try:
62                 updateBaseURL = 'http://software.ultimaker.com'
63                 localVersion = map(int, getVersion(False).split('.'))
64                 while len(localVersion) < 3:
65                         localVersion += [1]
66                 latestFile = urllib2.urlopen("%s/latest.xml" % (updateBaseURL))
67                 latestXml = latestFile.read()
68                 latestFile.close()
69                 xmlTree = ElementTree.fromstring(latestXml)
70                 for release in xmlTree.iter('release'):
71                         os = str(release.attrib['os'])
72                         version = [int(release.attrib['major']), int(release.attrib['minor']), int(release.attrib['revision'])]
73                         filename = release.find("filename").text
74                         if platform.system() == os:
75                                 if version > localVersion:
76                                         return "%s/current/%s" % (updateBaseURL, filename)
77         except:
78                 #print sys.exc_info()
79                 return None
80         return None
81
82 if __name__ == '__main__':
83         print(getVersion())