actions = { 'mautrix-telegram_create_virtualenv': { 'command': '/usr/bin/python3 -m virtualenv -p python3 /opt/mautrix-telegram/venv/', 'unless': 'test -d /opt/mautrix-telegram/venv/', 'needs': { 'directory:/opt/mautrix-telegram', # provided by bundle:users }, }, 'mautrix-telegram_install_bridge': { # TODO find out how we can check if *this package* requires an update 'command': '/opt/mautrix-telegram/venv/bin/pip install --upgrade mautrix-telegram[all]', 'needs': { 'action:mautrix-telegram_create_virtualenv', }, 'triggers': { 'action:mautrix-telegram_generate_registration', 'action:mautrix-telegram_upgrade_database', }, }, 'mautrix-telegram_generate_registration': { 'command': '/opt/mautrix-telegram/venv/bin/python3 -m mautrix_telegram -c /opt/mautrix-telegram/config.yaml -r /opt/mautrix-telegram/registration.yaml -g', 'needs': { 'file:/opt/mautrix-telegram/config.yaml', }, 'triggers': { 'svc_systemd:mautrix-telegram:restart', }, 'triggered': True, }, 'mautrix-telegram_init_alembic': { 'command': '/opt/mautrix-telegram/venv/bin/alembic -c /opt/mautrix-telegram/alembic.ini -x /opt/mautrix-telegram/config.yaml init /opt/mautrix-telegram/alembic', 'unless': 'test -d /opt/mautrix-telegram/alembic', 'needs': { 'file:/opt/mautrix-telegram/alembic.ini', }, }, 'mautrix-telegram_upgrade_database': { 'command': '/opt/mautrix-telegram/venv/bin/alembic -c /opt/mautrix-telegram/alembic.ini -x /opt/mautrix-telegram/config.yaml upgrade head', 'needs': { # Actually, the dependency is 'mautrix-telegram has run # atleast once, but we can't check that. 'action:mautrix-telegram_generate_registration', 'action:mautrix-telegram_init_alembic', 'postgres_db:mautrix-telegram', 'postgres_role:mautrix-telegram', }, 'triggered': True, }, } svc_systemd = { 'mautrix-telegram': { 'needs': { 'action:mautrix-telegram_generate_registration', 'action:mautrix-telegram_upgrade_database', 'file:/etc/systemd/system/mautrix-telegram.service', 'postgres_db:mautrix-telegram', 'postgres_role:mautrix-telegram', }, }, } files = { '/opt/mautrix-telegram/config.yaml': { 'content_type': 'mako', 'triggers': { 'svc_systemd:mautrix-telegram:restart', }, }, '/etc/systemd/system/mautrix-telegram.service': { 'triggers': { 'svc_systemd:mautrix-telegram:restart', }, }, '/opt/mautrix-telegram/alembic.ini': {}, } if node.has_bundle('matrix-synapse'): actions['mautrix-telegram_generate_registration']['triggers'].add('svc_systemd:matrix-synapse:restart')