from itertools import groupby
import jinja2
from honcho.export.base import BaseExport
from honcho.export.base import File
from honcho.export.base import dashrepl
[docs]class Export(BaseExport):
[docs] def get_template_loader(self):
return jinja2.PackageLoader(__name__, 'templates/upstart')
[docs] def render(self, processes, context):
master_tpl = self.get_template('master.conf')
process_master_tpl = self.get_template('process_master.conf')
process_tpl = self.get_template('process.conf')
groups = groupby(processes, lambda p: p.name.split('.')[0])
master = "{0}.conf".format(context['app'])
yield File(master, master_tpl.render(context))
for name, procs in groups:
group_name = "{0}-{1}".format(context['app'], name)
ctx = context.copy()
ctx.update({'group_name': group_name})
process_master = "{0}.conf".format(group_name)
yield File(process_master, process_master_tpl.render(ctx))
for p in procs:
ctx = context.copy()
ctx.update({'group_name': group_name,
'process': p})
process = "{0}-{1}.conf".format(context['app'],
dashrepl(p.name))
yield File(process, process_tpl.render(ctx))