Mercurial > piecrust2
diff foodtruck/sites.py @ 598:3cec8634209a
admin: Ability to configure SCM stuff per site.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 22 Jan 2016 11:01:00 -0800 |
parents | e2c91ba44d6c |
children | effbc78b5528 |
line wrap: on
line diff
--- a/foodtruck/sites.py Wed Jan 20 21:39:18 2016 -0800 +++ b/foodtruck/sites.py Fri Jan 22 11:01:00 2016 -0800 @@ -1,5 +1,6 @@ import os import os.path +import copy import shlex import logging import threading @@ -35,12 +36,27 @@ @property def scm(self): if self._scm is None: - scm_type = self.config.get('scm/type') - if scm_type == 'hg': + cfg = None + scm_cfg = self.config.get('sites/%s/scm' % self.name) + global_scm_cfg = self.config.get('scm') + if scm_cfg: + if global_scm_cfg: + cfg = copy.deepcopy(global_scm_cfg) + merge_dicts(cfg, scm_cfg) + else: + cfg = copy.deepcopy(scm_cfg) + elif global_scm_cfg: + cfg = copy.deepcopy(global_scm_cfg) + + if not cfg or not 'type' in cfg: + raise Exception("No SCM available for site: %s" % self.name) + + if cfg['type'] == 'hg': from .scm.mercurial import MercurialSourceControl - self._scm = MercurialSourceControl(self.root_dir) + self._scm = MercurialSourceControl(self.root_dir, cfg) else: raise NotImplementedError() + return self._scm @property