summaryrefslogtreecommitdiff
path: root/scripts/builder/frontendBuilder.py
Unidiff
Diffstat (limited to 'scripts/builder/frontendBuilder.py') (more/less context) (show whitespace changes)
-rw-r--r--scripts/builder/frontendBuilder.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/scripts/builder/frontendBuilder.py b/scripts/builder/frontendBuilder.py
index 1f0f92f..fc603c4 100644
--- a/scripts/builder/frontendBuilder.py
+++ b/scripts/builder/frontendBuilder.py
@@ -6,16 +6,18 @@ import cssmin
6import jsmin 6import jsmin
7import codecs 7import codecs
8import shutil 8import shutil
9import StringIO 9import StringIO
10import urllib 10import urllib
11 11
12import main 12import main
13 13
14#===============================================================================
15
14class FrontendBuilder(object): 16class FrontendBuilder(object):
15 17
16 def __init__ (self, frontend, settings, repositoryVersion): 18 def __init__ (self, frontend, settings, repositoryVersion):
17 if '.' in frontend: 19 if '.' in frontend:
18 moduleComponents = frontend.split('.') 20 moduleComponents = frontend.split('.')
19 self.module = moduleComponents[0] 21 self.module = moduleComponents[0]
20 self.submodule = moduleComponents[1] 22 self.submodule = moduleComponents[1]
21 else: 23 else:
@@ -23,19 +25,32 @@ class FrontendBuilder(object):
23 self.submodule = frontend 25 self.submodule = frontend
24 26
25 self.settings = settings 27 self.settings = settings
26 self.projectDir = main.projectBaseDir() 28 self.projectDir = main.projectBaseDir()
27 # self.repository = repository.repositoryWithPath(self.projectDir) 29 # self.repository = repository.repositoryWithPath(self.projectDir)
28 self.repositoryVersion = repositoryVersion 30 self.repositoryVersion = repositoryVersion
29 self.processedFiles = {} 31 self.processedFiles = {}
30 32
33 #---------------------------------------------------------------------------
34
35 def name (self):
36 raise NotImplementedError()
37
38
39 def copyStaticResources (self, targetFolder):
40 raise NotImplementedError()
41
42 #---------------------------------------------------------------------------
31 43
32 def log (self, message): 44 def log (self, message):
33 print "frontend [" + self.module + "]: " + message 45 module = self.module
46 if (self.module != self.submodule):
47 module = module + "." + self.submodule
48 print "frontend [" + module + "]: " + message
34 49
35 50
36 def absolutePathForSources (self): 51 def absolutePathForSources (self):
37 return os.path.join(self.projectDir, 'frontend', self.module) 52 return os.path.join(self.projectDir, 'frontend', self.module)
38 53
39 54
40 def absolutePathForSourceFile (self, basePath, file): 55 def absolutePathForSourceFile (self, basePath, file):
41 return os.path.join(self.absolutePathForSources(), basePath, file) 56 return os.path.join(self.absolutePathForSources(), basePath, file)
@@ -53,26 +68,40 @@ class FrontendBuilder(object):
53 pass 68 pass
54 else: 69 else:
55 result.append(file) 70 result.append(file)
56 71
57 return result 72 return result
58 73
59 74
60 def copyResources (self, sourceFolder, destinationFolder, fileType): 75 def copyResources (self, sourceFolder, destinationFolder, fileType):
76 if fileType in self.settings:
61 for file in self.filterFiles(self.settings[fileType]): 77 for file in self.filterFiles(self.settings[fileType]):
62 src = self.absolutePathForSourceFile(fileType, file) 78 src = self.absolutePathForSourceFile(fileType, file)
63 dst = self.absolutePathForTargetFile(destinationFolder, fileType, file) 79 dst = self.absolutePathForTargetFile(destinationFolder, fileType, file)
64 main.createFolder(os.path.dirname(dst)) 80 main.createFolder(os.path.dirname(dst))
65 shutil.copy2(src, dst) 81 shutil.copy2(src, dst)
82 else:
83 srcFolder = os.path.join(self.absolutePathForSources(), fileType)
84 dstFolder = os.path.join(destinationFolder, self.module, fileType)
85 if not(os.path.exists(dstFolder)):
86 shutil.copytree(srcFolder, dstFolder)
87
88 # try:
89 # shutil.copytree(srcFolder, dstFolder)
90 # except:
91 # pass
92
66 93
67 94
68 def copyResourcesToFolder (self, targetFolder): 95 def copyResourcesToFolder (self, targetFolder):
69 self.copyResources(self.projectDir, targetFolder, 'css') 96 self.copyResources(self.projectDir, targetFolder, 'css')
70 self.copyResources(self.projectDir, targetFolder, 'js') 97 self.copyResources(self.projectDir, targetFolder, 'js')
98 self.copyResources(self.projectDir, targetFolder, 'images')
99 self.copyStaticResources(targetFolder)
71 100
72 101
73 def loadFilesContent (self, basePath, files): 102 def loadFilesContent (self, basePath, files):
74 result = "" 103 result = ""
75 104
76 for file in self.filterFiles(files): 105 for file in self.filterFiles(files):
77 try: 106 try:
78 fileHandler = codecs.open(self.absolutePathForSourceFile(basePath, file), 'r', 'utf-8') 107 fileHandler = codecs.open(self.absolutePathForSourceFile(basePath, file), 'r', 'utf-8')
@@ -366,16 +395,17 @@ class FrontendBuilder(object):
366 395
367 elif assemblyMode == 'DEVELOPMENT': 396 elif assemblyMode == 'DEVELOPMENT':
368 copyright = "" 397 copyright = ""
369 css =self.cssTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'css')), self.filterFiles(self.settings['css'])) 398 css =self.cssTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'css')), self.filterFiles(self.settings['css']))
370 js =self.scriptTagForContent(self.bookmarklet()) + \ 399 js =self.scriptTagForContent(self.bookmarklet()) + \
371 '\n' + \ 400 '\n' + \
372 self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js'])) 401 self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js']))
373 jsLoadMode = 'LINKED' 402 jsLoadMode = 'LINKED'
403 versionType = 'development'
374 404
375 else: 405 else:
376 raise NotImplementedError() 406 raise NotImplementedError()
377 407
378 return self.assembleVersion( 408 return self.assembleVersion(
379 pageTitle = pageTitle, 409 pageTitle = pageTitle,
380 copyright = copyright, 410 copyright = copyright,
381 css = css, 411 css = css,