author | Giulio Cesare Solaroli <giulio.cesare@solaroli.it> | 2011-10-03 16:04:12 (UTC) |
---|---|---|
committer | Giulio Cesare Solaroli <giulio.cesare@solaroli.it> | 2011-10-03 16:04:12 (UTC) |
commit | 541bb378ddece2eab135a8066a16994e94436dea (patch) (unidiff) | |
tree | ff160ea3e26f7fe07fcfd401387c5a0232ca715e /scripts/builder/backendBuilder.py | |
parent | 1bf431fd3d45cbdf4afa3e12afefe5d24f4d3bc7 (diff) | |
parent | ecad5e895831337216544e81f1a467e0c68c4a6a (diff) | |
download | clipperz-541bb378ddece2eab135a8066a16994e94436dea.zip clipperz-541bb378ddece2eab135a8066a16994e94436dea.tar.gz clipperz-541bb378ddece2eab135a8066a16994e94436dea.tar.bz2 |
Merge pull request #1 from gcsolaroli/master
First version of the restructured repository
Diffstat (limited to 'scripts/builder/backendBuilder.py') (more/less context) (ignore whitespace changes)
-rw-r--r-- | scripts/builder/backendBuilder.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/scripts/builder/backendBuilder.py b/scripts/builder/backendBuilder.py new file mode 100644 index 0000000..f5dc7b2 --- a/dev/null +++ b/scripts/builder/backendBuilder.py | |||
@@ -0,0 +1,89 @@ | |||
1 | #!/usr/bin/python | ||
2 | # -*- coding: UTF-8 -*- | ||
3 | |||
4 | import sys, os, json | ||
5 | import shutil | ||
6 | import main | ||
7 | import hashlib | ||
8 | |||
9 | class BackendBuilder: | ||
10 | |||
11 | def __init__ (self, projectTargetDir, frontends, versions, settings): | ||
12 | self.projectTargetDir = projectTargetDir | ||
13 | self.frontends = frontends | ||
14 | self.versions = versions | ||
15 | self.settings = settings | ||
16 | |||
17 | def name (self): | ||
18 | raise NotImplementedError() | ||
19 | |||
20 | def relativePath (self): | ||
21 | raise NotImplementedError() | ||
22 | |||
23 | def compileCode (self): | ||
24 | pass | ||
25 | |||
26 | def copyCompiledCodeToTargetDir (self): | ||
27 | src = self.sourceFolder() | ||
28 | dst = self.targetFolder() | ||
29 | main.createFolder(os.path.dirname(dst)) | ||
30 | shutil.copytree(src, dst) | ||
31 | |||
32 | def sourceFolder (self): | ||
33 | return main.projectBaseDir() + '/backend/' + self.relativePath() + '/src' | ||
34 | |||
35 | |||
36 | def targetFolder (self): | ||
37 | return self.projectTargetDir + self.relativePath() | ||
38 | |||
39 | def createTargetFolder (self): | ||
40 | main.createFolder(self.targetFolder()) | ||
41 | |||
42 | |||
43 | #def copyFrontendResources (self, frontend): | ||
44 | # print "copying resources for frontend: " + frontend | ||
45 | # print "SETTINGS: " + str(self.settings) | ||
46 | |||
47 | |||
48 | def writeToTargetFolder (self, filename, content): | ||
49 | file = open(self.targetFolder() + '/' + filename, 'w') | ||
50 | file.write(content.encode('utf-8')) | ||
51 | file.close() | ||
52 | |||
53 | |||
54 | def configureIndexContent (self, indexContent): | ||
55 | result = indexContent | ||
56 | result = result.replace( '@request.path@', self.settings['request.path'] ) | ||
57 | result = result.replace( '@should.pay.toll@', self.settings['should.pay.toll'] ) | ||
58 | |||
59 | return result | ||
60 | |||
61 | |||
62 | def logChecksums (self, content, message): | ||
63 | md5Digest = hashlib.md5(content.encode('utf-8')).hexdigest() | ||
64 | shaDigest = hashlib.sha1(content.encode('utf-8')).hexdigest() | ||
65 | sha256Digest= hashlib.sha256(content.encode('utf-8')).hexdigest() | ||
66 | print message + ": " + md5Digest + " (md5)" | ||
67 | print message + ": " + shaDigest + " (sha1)" | ||
68 | print message + ": " + sha256Digest + " (sha256)" | ||
69 | |||
70 | |||
71 | |||
72 | def run (self): | ||
73 | print self.name() + " - RUN" | ||
74 | |||
75 | self.compileCode() | ||
76 | self.copyCompiledCodeToTargetDir() | ||
77 | |||
78 | for frontend in self.frontends: | ||
79 | frontendPath = frontend.module + '/' | ||
80 | if 'debug' in self.versions: | ||
81 | frontend.copyResourcesToTargetFolder(self.targetFolder()) | ||
82 | #self.writeToTargetFolder(frontendPath + 'index_debug.html', self.configureIndexContent(frontend.assembleDebugVersion())) | ||
83 | self.writeToTargetFolder(frontendPath + 'index_debug.html', self.configureIndexContent(frontend.assemble(assemblyMode='DEBUG', versionType='DEBUG'))) | ||
84 | |||
85 | if 'install' in self.versions: | ||
86 | index = self.configureIndexContent(frontend.assemble()) | ||
87 | self.writeToTargetFolder(frontendPath + 'index.html', index) | ||
88 | self.logChecksums(index, "[" + self.name() + " - " + frontend.module + "] index.html checksum") | ||
89 | |||