summaryrefslogtreecommitdiff
path: root/scripts/builder/frontendBuilder.py
Side-by-side diff
Diffstat (limited to 'scripts/builder/frontendBuilder.py') (more/less context) (ignore whitespace changes)
-rw-r--r--scripts/builder/frontendBuilder.py141
1 files changed, 66 insertions, 75 deletions
diff --git a/scripts/builder/frontendBuilder.py b/scripts/builder/frontendBuilder.py
index 55054ee..dae837b 100644
--- a/scripts/builder/frontendBuilder.py
+++ b/scripts/builder/frontendBuilder.py
@@ -11,13 +11,7 @@ import urllib
-#from mercurial import ui, hg
-#from mercurial.node import hex
-from dulwich.repo import Repo
-
import main
+class FrontendBuilder(object):
-
-class FrontendBuilder:
-
- def __init__ (self, frontend, settings):
+ def __init__ (self, frontend, settings, repositoryVersion):
if '.' in frontend:
@@ -32,2 +26,4 @@ class FrontendBuilder:
self.projectDir = main.projectBaseDir()
+ # self.repository = repository.repositoryWithPath(self.projectDir)
+ self.repositoryVersion = repositoryVersion
self.processedFiles = {}
@@ -35,36 +31,2 @@ class FrontendBuilder:
- def mercurialRepositoryVersion (self):
- repo = hg.repository(ui.ui(), self.projectDir)
- context = repo['tip']
- result = str(context)
-
- return result
-
-
- def gitRepositoryVersion (self):
- repo = Repo(self.projectDir)
- #if repo.is_dirty():
- # print "WARNING: build run with dirty repository"
- result = repo.refs['HEAD']
-
- return result
-
-
-
- def repositoryVersion (self):
- cacheKey = 'repositoryVersion'
- if not self.processedFiles.has_key(cacheKey):
- #result = self.mercurialRepositoryVersion()
- result = self.gitRepositoryVersion()
- self.processedFiles[cacheKey] = result
- else:
- result = self.processedFiles[cacheKey]
-
- return result
-
-
- #def relativePath (self):
- # return self.module
- #
-
def log (self, message):
@@ -73,4 +35,8 @@ class FrontendBuilder:
- def absolutePathForSourceFile (self, folder, basePath, file):
- return folder + '/frontend/' + self.module + '/' + basePath + '/' + file
+ def absolutePathForSources (self):
+ return os.path.join(self.projectDir, 'frontend', self.module)
+
+
+ def absolutePathForSourceFile (self, basePath, file):
+ return os.path.join(self.absolutePathForSources(), basePath, file)
@@ -78,3 +44,4 @@ class FrontendBuilder:
def absolutePathForTargetFile (self, folder, basePath, file):
- return folder + '/' + self.module + '/' + basePath + '/' + file
+ return os.path.join(folder, self.module, basePath, file)
+
@@ -94,3 +61,3 @@ class FrontendBuilder:
for file in self.filterFiles(self.settings[fileType]):
- src = self.absolutePathForSourceFile(sourceFolder, fileType, file)
+ src = self.absolutePathForSourceFile(fileType, file)
dst = self.absolutePathForTargetFile(destinationFolder, fileType, file)
@@ -100,3 +67,3 @@ class FrontendBuilder:
- def copyResourcesToTargetFolder (self, targetFolder):
+ def copyResourcesToFolder (self, targetFolder):
self.copyResources(self.projectDir, targetFolder, 'css')
@@ -110,3 +77,3 @@ class FrontendBuilder:
try:
- fileHandler = codecs.open(self.absolutePathForSourceFile(self.projectDir, basePath, file), 'r', 'utf-8')
+ fileHandler = codecs.open(self.absolutePathForSourceFile(basePath, file), 'r', 'utf-8')
except:
@@ -183,4 +150,4 @@ class FrontendBuilder:
- def compressJS_jsmin (self, js):
- self.log("compressing JS code")
+ def compressJS_jsmin (self, js, description):
+ self.log("compressing " + description + " code")
original = StringIO.StringIO(js)
@@ -198,3 +165,3 @@ class FrontendBuilder:
- def compressJS_closureCompiler (self, js):
+ def compressJS_closureCompiler (self, js, description):
# Googles Closure compiler
@@ -207,5 +174,5 @@ class FrontendBuilder:
- def compressJS (self, js):
- return self.compressJS_jsmin(js)
- #return self.compressJS_closureCompiler(js)
+ def compressJS (self, js, description):
+ return self.compressJS_jsmin(js, description)
+ #return self.compressJS_closureCompiler(js, description)
@@ -214,3 +181,3 @@ class FrontendBuilder:
- def packBookmarklet (self, bookmakeletCode):
+ def packBookmarklet (self, bookmakeletCode, version):
replacers = [
@@ -229,3 +196,3 @@ class FrontendBuilder:
]
- result = self.compressJS(bookmakeletCode)
+ result = self.compressJS(bookmakeletCode, version + " bookmarklet")
@@ -302,3 +269,3 @@ class FrontendBuilder:
if not self.processedFiles.has_key(cacheKey):
- result = 'bookmarklet="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet.js'])) + '";bookmarklet_ie="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet_IE.js'])) + '";'
+ result = 'bookmarklet="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet.js']), "regular") + '";bookmarklet_ie="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet_IE.js']), "IE") + '";'
self.processedFiles[cacheKey] = result
@@ -310,3 +277,3 @@ class FrontendBuilder:
- def replaceTemplatePlaceholders (self, assemblyMode, pageTitle, copyright, css, code, version, versionType):
+ def replaceTemplatePlaceholders (self, pageTitle, copyright, css, code, jsLoadMode, version, versionType):
result = self.template()
@@ -319,3 +286,3 @@ class FrontendBuilder:
result = result.replace('@application.version.type@', versionType, 1)
- result = result.replace('@js_' + assemblyMode + '@', code, 1)
+ result = result.replace('@js_' + jsLoadMode + '@', code, 1)
@@ -345,3 +312,3 @@ class FrontendBuilder:
#<link rel="stylesheet" type="text/css" href="./css/reset-min.css" />
- return '\n'.join(map(lambda file: '<link rel="stylesheet" type="text/css" href="./' + basePath + '/' + file + '" />', files))
+ return '\n'.join(map(lambda file: '<link rel="stylesheet" type="text/css" href="' + basePath + '/' + file + '" />', files))
@@ -354,3 +321,3 @@ class FrontendBuilder:
#<script type='text/javascript' src='./js/src/bookmarklet.js'></script>
- return '\n'.join(map(lambda file: '<script type="text/javascript" src="./' + basePath + '/' + file + '"></script>', files))
+ return '\n'.join(map(lambda file: '<script type="text/javascript" src="' + basePath + '/' + file + '"></script>', files))
@@ -361,6 +328,6 @@ class FrontendBuilder:
- def assembleVersion (self, assemblyMode, pageTitle, copyright, css, js, version, versionType):
+ def assembleVersion (self, pageTitle, copyright, css, js, jsLoadMode, version, versionType):
cacheKey = version + "-" + versionType
if not self.processedFiles.has_key(cacheKey):
- result = self.replaceTemplatePlaceholders(assemblyMode, pageTitle, copyright, css, js, version, versionType)
+ result = self.replaceTemplatePlaceholders(pageTitle, copyright, css, js, jsLoadMode, version, versionType)
self.processedFiles[cacheKey] = result
@@ -374,20 +341,44 @@ class FrontendBuilder:
def assemble (self, assemblyMode='INSTALL', versionType='LIVE'):
- pageTitle = "Clipperz - " + self.module
- if versionType != 'LIVE':
- pageTitle += " [" + versionType + " - " + assemblyMode +"]"
-
+
+ if versionType == 'LIVE':
+ pageTitle = "Clipperz - " + self.module
+ else:
+ pageTitle = "Clipperz - " + self.module + " [" + versionType + " - " + assemblyMode +"]"
+
if assemblyMode == 'INSTALL':
- css = self.cssTagForContent(self.compressCSS(self.loadFilesContent('css', self.settings['css'])))
- js = self.scriptTagForContent(self.bookmarklet() + '\n' + self.compressJS(self.loadFilesContent('js', self.settings['js'])))
+ copyright = self.assembleCopyrightHeader()
+ css = self.cssTagForContent(self.compressCSS(self.loadFilesContent('css', self.settings['css'])))
+ js = self.scriptTagForContent(
+ self.bookmarklet() +
+ '\n' +
+ self.compressJS(self.loadFilesContent('js', self.settings['js']), "application")
+ )
+ jsLoadMode = 'EMBEDDED'
+
+ elif assemblyMode == 'DEBUG':
+ copyright = self.assembleCopyrightHeader()
+ css = self.cssTagsForFiles('./css', self.filterFiles(self.settings['css']))
+ js = self.scriptTagForContent(self.bookmarklet()) + \
+ '\n' + \
+ self.scriptTagsForFiles('./js', self.filterFiles(self.settings['js']))
+ jsLoadMode = 'LINKED'
+
+ elif assemblyMode == 'DEVELOPMENT':
+ copyright = ""
+ css = self.cssTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'css')), self.filterFiles(self.settings['css']))
+ js = self.scriptTagForContent(self.bookmarklet()) + \
+ '\n' + \
+ self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js']))
+ jsLoadMode = 'LINKED'
+
else:
- css = self.cssTagsForFiles('css', self.filterFiles(self.settings['css']))
- js = self.scriptTagForContent(self.bookmarklet()) + '\n' + self.scriptTagsForFiles('js', self.filterFiles(self.settings['js']))
-
+ raise NotImplementedError()
+
return self.assembleVersion(
- assemblyMode = assemblyMode,
pageTitle = pageTitle,
- copyright = self.assembleCopyrightHeader(),
+ copyright = copyright,
css = css,
js = js,
- version = self.repositoryVersion(),
+ jsLoadMode = jsLoadMode,
+ version = self.repositoryVersion,
versionType = versionType