summaryrefslogtreecommitdiff
authorGiulio Cesare Solaroli <giulio.cesare@clipperz.com>2012-03-17 15:10:02 (UTC)
committer Giulio Cesare Solaroli <giulio.cesare@clipperz.com>2012-03-17 15:10:02 (UTC)
commitbf7d8191a3a6dbd092a88911098a3e7f6cf30cf7 (patch) (unidiff)
tree5eee397439e3af31c8fe7f96a22ea11c234bd4a8
parente61e994abb9738d98447b203b9908793da6f560a (diff)
downloadclipperz-bf7d8191a3a6dbd092a88911098a3e7f6cf30cf7.zip
clipperz-bf7d8191a3a6dbd092a88911098a3e7f6cf30cf7.tar.gz
clipperz-bf7d8191a3a6dbd092a88911098a3e7f6cf30cf7.tar.bz2
Improved build scripts
Improved the detection of the correct repository class to use. Signed-off-by: Giulio Cesare Solaroli <giulio.cesare@clipperz.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/builder/repository.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/scripts/builder/repository.py b/scripts/builder/repository.py
index f8528c2..0045de7 100644
--- a/scripts/builder/repository.py
+++ b/scripts/builder/repository.py
@@ -1,77 +1,81 @@
1#!/usr/bin/env python 1#!/usr/bin/env python
2# -*- coding: UTF-8 -*- 2# -*- coding: UTF-8 -*-
3 3
4 4
5def repositoryWithPath (path): 5def repositoryWithPath (path):
6 try: 6 try:
7 from git import Repo
8
9 repo = Repo(path)
10 result = GitRepository(repo, path)
11 except ImportError:
12 print "Failed to import git, please install http://gitorious.org/git-python"
13 #except:
14 from mercurial import ui, hg 7 from mercurial import ui, hg
15 8
16 repo = hg.repository(ui.ui(), path) 9 repo = hg.repository(ui.ui(), path)
17 result = HgRepository(repo, path) 10 result = HgRepository(repo, path)
11 except:
12 try:
13 from git import Repo
14
15 repo = Repo(path)
16 result = GitRepository(repo, path)
17 except ImportError, exception:
18 print "Failed to import git, please install http://gitorious.org/git-python"
19 raise exception
20
18 21
19 return result 22 return result
20 23
21 24
22#=================================================================== 25#===================================================================
23 26
24 27
25class Repository(object): 28class Repository(object):
26 29
27 def __init__ (self, repository, path): 30 def __init__ (self, repository, path):
28 self.repository = repository 31 self.repository = repository
29 self.path = path 32 self.path = path
30 33
31 34
32 def revision (self): 35 def revision (self):
33 raise NotImplementedError() 36 raise NotImplementedError()
34 37
35 38
36 def areTherePendingChanges (self): 39 def areTherePendingChanges (self):
37 raise NotImplementedError() 40 raise NotImplementedError()
38 41
39 42
40 def version (self): 43 def version (self):
41 result = self.revision() 44 result = self.revision()
42 if self.areTherePendingChanges(): 45 if self.areTherePendingChanges():
43 result = '>>> ' + result + ' <<<' 46 result = '>>> ' + result + ' <<<'
44 47
45 # print "VERSION: " + result 48 # print "VERSION: " + result
46 return result 49 return result
47 50
48 51
49#=================================================================== 52#===================================================================
50 53
51 54
52class GitRepository(Repository): 55class GitRepository(Repository):
56 #http://gitorious.org/git-python
53 57
54 def revision (self): 58 def revision (self):
55 return self.repository.head.commit.hexsha 59 return self.repository.head.commit.hexsha
56 60
57 61
58 def areTherePendingChanges (self): 62 def areTherePendingChanges (self):
59 return self.repository.is_dirty() 63 return self.repository.is_dirty()
60 64
61 65
62#=================================================================== 66#===================================================================
63 67
64 68
65class HgRepository(Repository): 69class HgRepository(Repository):
66 #http://mercurial.selenic.com/wiki/MercurialApi 70 #http://mercurial.selenic.com/wiki/MercurialApi
67 71
68 def revision (self): 72 def revision (self):
69 return 'hg:' + str(self.repository['tip']) 73 return 'hg:' + str(self.repository['tip'])
70 74
71 75
72 def areTherePendingChanges (self): 76 def areTherePendingChanges (self):
73 # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :( 77 # TODO: FIXME: repository.status() does not report 'unknown(?)' files. :(
74 return not all(map(lambda fileList: len(fileList) == 0, self.repository.status())) 78 return not all(map(lambda fileList: len(fileList) == 0, self.repository.status()))
75 79
76 80
77#=================================================================== 81#===================================================================