from bundlewrap.metadata import metadata_to_json

repo.libs.tools.require_bundle(node, 'nodejs')

directories = {
    '/opt/element-web': {}
}

git_deploy = {
    '/opt/element-web': {
        'rev': node.metadata['element-web']['version'],
        'repo': 'https://github.com/vector-im/element-web.git',
        'triggers': {
            'action:element-web_yarn',
        },
    },
}

files = {
    '/opt/element-web/webapp/config.json': {
        'content': metadata_to_json(node.metadata['element-web']['config']),
        'needs': {
            'action:element-web_yarn',
        },
    },
}

actions = {
    'element-web_yarn': {
        'command': ' && '.join([
            'cd /opt/element-web',
            'npm install yarn',
            'node_modules/yarn/bin/yarn install --pure-lockfile --ignore-scripts',
            'node_modules/yarn/bin/yarn build',
        ]),
        'needs': {
            'pkg_apt:nodejs',
        },
        'triggered': True,
    },
}
