'dbname': dbname,
'dropDb': dropDb,
'fullname': fullname,
- 'dataDir': self.Wp.getPath(name, 'data')
+ 'dataDir': self.Wp.getPath(name, 'data'),
+ 'wwwroot': self.Wp.getUrl(name)
}
try:
M.install(**kwargs)
import os
import shutil
-import imp
import subprocess
from .. import git
from ..command import Command
instances = self.Wp.resolveMultiple(self.Wp.list())
- wwwroot = '%s://%s/' % (self.C.get('scheme'), self.C.get('host'))
- if self.C.get('path') != '' and self.C.get('path') != None:
- wwwroot = wwwroot + self.C.get('path') + '/'
for M in instances:
if not M.isInstalled():
continue
else:
actual = M.get('wwwroot')
- expected = wwwroot + M.get('identifier')
+ expected = self.Wp.getUrl(M.get('identifier'))
if actual != expected:
print ' %s: Found %s, not %s' % (M.get('identifier'), actual, expected)
if args.fix:
kwargs = {
'engine': engine,
'fullname': fullname,
- 'dataDir': dataDir
+ 'dataDir': dataDir,
+ 'wwwroot': self.Wp.getUrl(name)
}
M.install(**kwargs)
info[k] = v
return info
- def install(self, dbname=None, engine=None, dataDir=None, fullname=None, dropDb=False):
+ def install(self, dbname=None, engine=None, dataDir=None, fullname=None, dropDb=False, wwwroot=None):
"""Launch the install script of an Instance"""
if self.isInstalled():
raise InstallException('Instance already installed!')
+ if not wwwroot:
+ raise InstallException('Cannot install without a value for wwwroot')
if dataDir == None or not os.path.isdir(dataDir):
raise InstallException('Cannot install instance without knowing where the data directory is')
if dbname == None:
db.createdb(dbname)
db.selectdb(dbname)
- # Defining wwwroot.
- wwwroot = '%s://%s/' % (C.get('scheme'), C.get('host'))
- if C.get('path') != '' and C.get('path') != None:
- wwwroot = wwwroot + C.get('path') + '/'
- wwwroot = wwwroot + self.identifier
-
logging.info('Installing %s...' % self.identifier)
cli = 'admin/cli/install.php'
params = (wwwroot, dataDir, engine, dbname, C.get('db.%s.user' % engine), C.get('db.%s.passwd' % engine), C.get('db.%s.host' % engine), fullname, self.identifier, C.get('login'), C.get('passwd'))
def getCoverageDir(self):
"""Get the Coverage directory, and create it if required"""
- path = os.path.join(self.Wp.getPath(self.M.get('identifier'), 'extra'), 'coverage')
- if not os.path.exists(path):
- mkdir(path, 0777)
- return path
+ return self.Wp.getExtraDir(self.M.get('identifier'), 'coverage')
def getCoverageUrl(self):
"""Return the code coverage URL"""
- # TODO Constructing the URL should be done elsewhere...
- wwwroot = '%s://%s/' % (C.get('scheme'), C.get('host'))
- if C.get('path') != '' and C.get('path') != None:
- wwwroot = wwwroot + C.get('path') + '/'
- wwwroot = wwwroot + C.get('mdkDir') + '/' + self.M.get('identifier') + '/coverage'
- return wwwroot
+ return self.Wp.getUrl(self.M.get('identifier'), extra='coverage')
def init(self, force=False, prefix=None):
"""Initialise the PHPUnit environment"""
else:
return os.path.join(self.cache, 'moodle.git')
+ def getExtraDir(self, name, subdir=None):
+ """Return the path to the extra directory of an instance
+
+ This also creates the directory if does not exist.
+ """
+ path = self.getPath(name, 'extra')
+ if subdir:
+ path = os.path.join(path, subdir)
+ if not os.path.exists(path):
+ mkdir(path, 0777)
+ return path
+
def getMdkWebDir(self):
"""Return (and create) the special MDK web directory."""
mdkExtra = os.path.join(self.www, self.mdkDir)
else:
return base
+ def getUrl(self, name, extra=None):
+ """Return the URL to an instance, or to its extra directory if extra is passed"""
+ base = '%s://%s' % (C.get('scheme'), C.get('host'))
+
+ if C.get('path') != '' and C.get('path') != None:
+ base = '%s/%s' % (base, C.get('path'))
+
+ wwwroot = None
+ if not extra:
+ wwwroot = '%s/%s' % (base, name)
+ else:
+ wwwroot = '%s/%s/%s/%s' % (base, self.mdkDir, name, extra)
+
+ return wwwroot
+
def isMoodle(self, name):
"""Checks whether a Moodle instance exist under this name"""
d = os.path.join(self.path, name)