def test_10_bootstrap(self): site = "site-A" TT.bootstrap(site, self.workdir, site_template="rhui", site_ctxdir=os.path.join(TOPDIR, "conf"), tpaths=[os.path.join(TOPDIR, "templates")]) sitedir = os.path.join(self.workdir, site) self.assertTrue(os.path.exists(sitedir)) self.assertTrue(bool(U.sglob(os.path.join(sitedir, "*.yml")))) for x in ("Makefile", ): self.assertTrue(os.path.exists(os.path.join(self.workdir, x)))
def bootstrap(site, workdir, site_template=G.M_SITE_DEFAULT, site_ctxdir=G.M_CONF_TOPDIR, tpaths=[]): """ Bootstrap the site by arranging default configuration files. :param site: Site name, ex. "default". :param workdir: Working dir to save results. :param site_template: Site template name, ex. "default". :param site_ctxdir: Top dir to hold sites' template configuration files :param tpaths: Templates path list """ ctx = dict(site=site, workdir=workdir, site_template=site_template) ctx_outdir = os.path.join(workdir, site) if not os.path.exists(ctx_outdir): logging.info("Creating site ctx dir: " + ctx_outdir) os.makedirs(ctx_outdir) for conf in U.sglob(os.path.join(site_ctxdir, site_template, "*.yml")): os.symlink(os.path.abspath(conf), os.path.join(ctx_outdir, os.path.basename(conf))) for tmpldir in (os.path.join(d, "bootstrap", site_template) for d in tpaths): if not tmpldir.endswith(os.path.sep): tmpldir += os.path.sep for dirpath, dirnames, filenames in os.walk(tmpldir): reldir = dirpath.replace(tmpldir, '') logging.debug("tmpldir={}, reldir={}, " "dirpath={}".format(tmpldir, reldir, dirpath)) for fn in filenames: (fn_base, ext) = os.path.splitext(fn) if ext == ".j2": logging.debug("Jinja2 template found: " + fn) ofn = os.path.join(workdir, reldir, fn_base) else: ofn = os.path.join(workdir, reldir, fn) miniascape.template.render_to(fn, ctx, ofn, [dirpath] + tpaths)
def bootstrap(site, workdir, site_template=G.M_SITE_DEFAULT, site_ctxdir=G.M_CONF_TOPDIR, tpaths=[]): """ Bootstrap the site by arranging default configuration files. :param site: Site name, ex. "default". :param workdir: Working dir to save results. :param site_template: Site template name, ex. "default". :param site_ctxdir: Top dir to hold sites' template configuration files :param tpaths: Templates path list """ ctx = dict(site=site, workdir=workdir, site_template=site_template) ctx_outdir = os.path.join(workdir, site) if not os.path.exists(ctx_outdir): logging.info("Creating site ctx dir: " + ctx_outdir) os.makedirs(ctx_outdir) for conf in U.sglob(os.path.join(site_ctxdir, site_template, "*.yml")): os.symlink(os.path.abspath(conf), os.path.join(ctx_outdir, os.path.basename(conf))) for tmpldir in (os.path.join(d, "bootstrap", site_template) for d in tpaths): if not tmpldir.endswith(os.path.sep): tmpldir += os.path.sep for dirpath, dirnames, filenames in os.walk(tmpldir): reldir = dirpath.replace(tmpldir, '') logging.debug("tmpldir={}, reldir={}, " "dirpath={}".format(tmpldir, reldir, dirpath)) for fn in filenames: (fn_base, ext) = os.path.splitext(fn) if ext == ".j2": logging.debug("Jinja2 template found: " + fn) T.renderto([dirpath] + tpaths, ctx, fn, os.path.join(workdir, reldir, fn_base)) else: T.renderto([dirpath] + tpaths, {}, fn, os.path.join(workdir, reldir, fn))