1
0
mirror of http://git.whoc.org.uk/git/password-manager.git synced 2025-10-28 18:07:35 +01:00

Updated builder script

This commit is contained in:
Clipperz
2013-01-08 16:12:19 +01:00
parent 596e94dca4
commit 25bd3085c5
10 changed files with 293 additions and 32 deletions

View File

@@ -9,7 +9,6 @@ import main
#===================================================================
class BackendBuilder(object):
def __init__ (self, projectTargetDir, frontends, versions, settings):
@@ -50,10 +49,12 @@ class BackendBuilder(object):
def developmentTargetFolder (self):
return os.path.join(self.projectTargetDir, 'development', self.relativePath())
return os.path.join(self.projectTargetDir, 'development')
def targetFolder (self):
return os.path.join(self.projectTargetDir, self.relativePath())
# --------------------------------------------------------------------------
@@ -103,7 +104,7 @@ class BackendBuilder(object):
index = self.configureIndexContent(frontend.assemble(assemblyMode='DEBUG', versionType='DEBUG'))
self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index_debug' + submoduleExtension + '.html'), index)
if 'install' in self.versions:
index = self.configureIndexContent(frontend.assemble())
self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index' + submoduleExtension + '.html'), index)
@@ -112,20 +113,22 @@ class BackendBuilder(object):
self.createPackage()
if 'development' in self.versions:
for frontend in self.frontends:
if (frontend.module == frontend.submodule):
submoduleExtension = ''
else:
submoduleExtension = '.' + frontend.submodule
print "FRONTEND module: " + frontend.module
print "FRONTEND submodule: " + frontend.submodule
main.createFolder(os.path.join(self.developmentTargetFolder(), frontend.module))
index = self.configureIndexContent(frontend.assemble(assemblyMode='DEVELOPMENT', versionType='DEBUG'), self.settings['development.settings']['url'])
self.writeToFolder(self.developmentTargetFolder(), os.path.join(frontend.module, 'index' + submoduleExtension + '.html'), index)
# if 'development' in self.versions:
# for frontend in self.frontends:
# if (frontend.module == frontend.submodule):
# submoduleExtension = ''
# else:
# submoduleExtension = '.' + frontend.submodule
#
# print "FRONTEND module: " + frontend.module
# print "FRONTEND submodule: " + frontend.submodule
#
## main.createFolder(os.path.join(self.developmentTargetFolder(), frontend.module))
# main.createFolder(self.developmentTargetFolder())
#
# index = self.configureIndexContent(frontend.assemble(assemblyMode='DEVELOPMENT', versionType='DEBUG'), self.settings['development.settings']['url'])
## self.writeToFolder(self.developmentTargetFolder(), os.path.join(frontend.module, 'index_development' + submoduleExtension + '.html'), index)
# self.writeToFolder(self.developmentTargetFolder(), os.path.join(frontend.module + submoduleExtension + '.html'), index)
#===================================================================

View File

@@ -0,0 +1,56 @@
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import shutil
import subprocess
import main
from backendBuilder import BackendBuilder
class DevBuilder(BackendBuilder):
def name(self):
return "Dev builder"
def relativePath(self):
return 'dev'
# def frontEndTempFolder (self):
# return os.path.join(self.tempFolder(), 'src', 'main', 'webapp')
# def targetFolder (self):
# return self.projectTargetDir
def compileCode (self):
pass
def createPackage (self):
src = self.tempFolder()
dst = self.targetFolder()
shutil.copytree(src, dst)
def run (self):
print self.name() + " - RUN (dev)"
for frontend in self.frontends:
if (frontend.module == frontend.submodule):
submoduleExtension = ''
else:
submoduleExtension = '.' + frontend.submodule
main.createFolder(os.path.join(self.frontEndTempFolder(), frontend.module))
index = self.configureIndexContent(frontend.assemble(assemblyMode='DEBUG', versionType='DEBUG'))
self.writeToFolder(self.frontEndTempFolder(), os.path.join(frontend.module, 'index' + submoduleExtension + '.html'), index)
self.createPackage()

View File

@@ -11,6 +11,8 @@ import urllib
import main
#===============================================================================
class FrontendBuilder(object):
def __init__ (self, frontend, settings, repositoryVersion):
@@ -27,10 +29,23 @@ class FrontendBuilder(object):
# self.repository = repository.repositoryWithPath(self.projectDir)
self.repositoryVersion = repositoryVersion
self.processedFiles = {}
#---------------------------------------------------------------------------
def name (self):
raise NotImplementedError()
def copyStaticResources (self, targetFolder):
raise NotImplementedError()
#---------------------------------------------------------------------------
def log (self, message):
print "frontend [" + self.module + "]: " + message
module = self.module
if (self.module != self.submodule):
module = module + "." + self.submodule
print "frontend [" + module + "]: " + message
def absolutePathForSources (self):
@@ -58,16 +73,30 @@ class FrontendBuilder(object):
def copyResources (self, sourceFolder, destinationFolder, fileType):
for file in self.filterFiles(self.settings[fileType]):
src = self.absolutePathForSourceFile(fileType, file)
dst = self.absolutePathForTargetFile(destinationFolder, fileType, file)
main.createFolder(os.path.dirname(dst))
shutil.copy2(src, dst)
if fileType in self.settings:
for file in self.filterFiles(self.settings[fileType]):
src = self.absolutePathForSourceFile(fileType, file)
dst = self.absolutePathForTargetFile(destinationFolder, fileType, file)
main.createFolder(os.path.dirname(dst))
shutil.copy2(src, dst)
else:
srcFolder = os.path.join(self.absolutePathForSources(), fileType)
dstFolder = os.path.join(destinationFolder, self.module, fileType)
if not(os.path.exists(dstFolder)):
shutil.copytree(srcFolder, dstFolder)
# try:
# shutil.copytree(srcFolder, dstFolder)
# except:
# pass
def copyResourcesToFolder (self, targetFolder):
self.copyResources(self.projectDir, targetFolder, 'css')
self.copyResources(self.projectDir, targetFolder, 'js')
self.copyResources(self.projectDir, targetFolder, 'images')
self.copyStaticResources(targetFolder)
def loadFilesContent (self, basePath, files):
@@ -371,6 +400,7 @@ class FrontendBuilder(object):
'\n' + \
self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js']))
jsLoadMode = 'LINKED'
versionType = 'development'
else:
raise NotImplementedError()

View File

@@ -0,0 +1,14 @@
from frontendBuilder import FrontendBuilder
import shutil
class BetaBuilder(FrontendBuilder):
def name(self):
return "/beta builder"
def copyStaticResources (self, targetFolder):
for file in self.filterFiles(self.settings['staticResources']):
src = self.absolutePathForSourceFile('staticResources', file)
dst = self.absolutePathForTargetFile(targetFolder, '', file)
shutil.copy2(src, dst)

View File

@@ -0,0 +1,26 @@
from frontendBuilder import FrontendBuilder
import shutil
class GammaBuilder(FrontendBuilder):
def name(self):
return "/gamma builder"
def copyStaticResources (self, targetFolder):
resourcesToCopy = [
{'folder': 'html', 'source': 'exit_template.html', 'target': 'exit.html'},
{'folder': 'css', 'source': 'static.css', 'target': 'static.css'}
]
for resource in resourcesToCopy:
src = self.absolutePathForSourceFile(resource['folder'], resource['source'])
dst = self.absolutePathForTargetFile(targetFolder, '', resource['target'])
shutil.copy2(src, dst)
# src = self.absolutePathForSourceFile('html', 'exit_template.html')
# dst = self.absolutePathForTargetFile(targetFolder, '', 'exit.html')
# shutil.copy2(src, dst)
# src = self.absolutePathForSourceFile('css', 'static.css')
# dst = self.absolutePathForTargetFile(targetFolder, '', 'static.css')
# shutil.copy2(src, dst)

View File

@@ -0,0 +1,9 @@
from frontendBuilder import FrontendBuilder
class Gamma_MobileBuilder(FrontendBuilder):
def name(self):
return "/gamma.mobile builder"
def copyStaticResources (self, targetFolder):
pass

View File

@@ -10,7 +10,7 @@ import codecs
import itertools
from collections import deque
import frontendBuilder
#import frontendBuilder
import repository
pp = pprint.PrettyPrinter(indent=4, depth=4)
@@ -75,7 +75,7 @@ def assembleBackend (backend, frontends, versions):
builderModuleName = backend + 'Builder'
builderClassName = backend.capitalize() + 'Builder'
#print ("BUILD BACKENDS - module: " + builderModuleName + " , class: " + builderClassName)
builderModule = __import__(builderModuleName)
builderClass = getattr(builderModule, builderClassName)
@@ -88,10 +88,22 @@ def build (settings, repository):
frontends = []
if repository.areTherePendingChanges():
print "\nWARNING: repository has pending changes\n"
if 'install' in settings['versions']:
raise Exception("repository has pending changes, can't 'install'")
else:
print "\nWARNING: repository has pending changes\n"
for frontend in settings['frontends']:
frontends.append(frontendBuilder.FrontendBuilder(frontend, loadSettings('frontend', frontend), repository.version()))
normalizedFrontendName = frontend.replace(".", "_")
builderModuleName = normalizedFrontendName + 'Builder'
builderClassName = normalizedFrontendName.title() + 'Builder'
#print ("BUILD FRONTEND - module: " + builderModuleName + " , class: " + builderClassName)
builderModule = __import__(builderModuleName)
builderClass = getattr(builderModule, builderClassName)
builder = builderClass(frontend, loadSettings('frontend', frontend), repository.version())
#builder = frontendBuilder.FrontendBuilder(frontend, loadSettings('frontend', frontend), repository.version())
frontends.append(builder)
for backend in settings['backends']:
assembleBackend(backend, frontends, settings['versions'])
@@ -114,6 +126,7 @@ def usage (message):
# print "build clean install"
print "build install --ALL"
print "build install debug --ALL"
print "build install debug development --ALL"
# print "build clean install debug --ALL"
print "build install debug --backends php python --frontends beta gamma"
print "build install debug development --backends php python --frontends beta gamma gamma.mobile"
@@ -122,7 +135,7 @@ def usage (message):
#--------------------------------------------------------------------
def allFrontends ():
return ['beta', 'gamma', 'mobile']
return ['beta', 'gamma', 'gamma.mobile']
def allBackends ():
return ['php', 'python']
@@ -134,6 +147,7 @@ def main ():
parameters = list(itertools.islice(sys.argv, 1, None))
sys.path.append(os.path.join(scriptDir(), 'backends'))
sys.path.append(os.path.join(scriptDir(), 'frontends'))
currentRepository = repository.repositoryWithPath(projectBaseDir())
clean()
@@ -174,4 +188,4 @@ def main ():
if __name__ == "__main__":
main()
main()

View File

@@ -56,11 +56,18 @@ class GitRepository(Repository):
# http://gitorious.org/git-python
def revision (self):
return self.repository.head.commit.hexsha
try:
return self.repository.head.commit.hexsha
except:
return self.repository.commits()[0].id
def areTherePendingChanges (self):
return self.repository.is_dirty()
try:
return self.repository.is_dirty()
except TypeError, te:
return self.repository.is_dirty
#===================================================================