HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib/python3.10/site-packages/honcho/export/runit.py
import os
import jinja2

from honcho.export.base import BaseExport
from honcho.export.base import File
from honcho.export.base import dashrepl


class Export(BaseExport):
    """
    Exporter for runit_, the cross-platform Unix init system.

    .. _runit: http://smarden.org/runit/
    """
    def get_template_loader(self):
        return jinja2.PackageLoader(__name__, 'templates/runit')

    def render(self, processes, context):
        run_tpl = self.get_template('run')
        log_tpl = self.get_template('log/run')

        for p in processes:
            ctx = context.copy()
            ctx.update({'process': p})

            name = '{0}-{1}'.format(ctx['app'], dashrepl(p.name))

            # Create an envdir
            for k, v in p.env.items():
                yield File(os.path.join(name, 'env', k), v)

            # Startup file
            yield File(os.path.join(name, 'run'),
                       run_tpl.render(ctx),
                       executable=True)

            # Logger
            yield File(os.path.join(name, 'log', 'run'),
                       log_tpl.render(ctx),
                       executable=True)