assert node.has_bundle('nodejs') directories = { '/var/log/mx-puppet-discord': { 'owner': 'mx-puppet-discord', }, } files = { '/opt/mx-puppet-discord/config.yaml': { 'owner': 'mx-puppet-discord', 'content_type': 'mako', 'needs': { 'git_deploy:/opt/mx-puppet-discord', 'action:mx-puppet-discord_chown', }, 'triggers': { 'svc_systemd:mx-puppet-discord:restart', }, }, '/opt/mx-puppet-discord/registration.yaml': { 'owner': 'mx-puppet-discord', 'content_type': 'mako', 'needs': { 'git_deploy:/opt/mx-puppet-discord', 'action:mx-puppet-discord_chown', }, 'triggers': { 'svc_systemd:mx-puppet-discord:restart', }, }, '/etc/systemd/system/mx-puppet-discord.service': { 'source': 'service', 'triggers': { 'action:systemd-reload', }, } } git_deploy = { '/opt/mx-puppet-discord': { 'repo': 'https://github.com/matrix-discord/mx-puppet-discord.git', 'rev': 'master', 'triggers': { 'action:mx-puppet-discord_chown', 'action:mx-puppet-discord_npm_install', 'action:mx-puppet-discord_npm_build', }, }, } actions = { 'mx-puppet-discord_chown': { 'command': 'chown -R mx-puppet-discord:mx-puppet-discord /opt/mx-puppet-discord/*', 'needed_by': { 'action:mx-puppet-discord_npm_install', }, 'triggered': True, }, 'mx-puppet-discord_npm_install': { 'command': 'cd /opt/mx-puppet-discord && sudo -u mx-puppet-discord npm install', 'needs': { 'pkg_apt:nodejs', 'user:mx-puppet-discord', }, 'triggered': True, }, 'mx-puppet-discord_npm_build': { 'command': 'cd /opt/mx-puppet-discord && sudo -u mx-puppet-discord npm run-script build', 'needs': { 'action:mx-puppet-discord_npm_install', }, 'triggered': True, }, } svc_systemd = { 'mx-puppet-discord': { 'needs': { 'action:mx-puppet-discord_npm_build', 'file:/etc/systemd/system/mx-puppet-discord.service', 'file:/opt/mx-puppet-discord/config.yaml', 'file:/opt/mx-puppet-discord/registration.yaml', }, }, } if node.has_bundle('matrix-synapse'): files['/opt/mx-puppet-discord/registration.yaml']['triggers'].add('svc_systemd:matrix-synapse:restart')