from bundlewrap.exceptions import BundleError

if not node.os == 'arch':
    raise BundleError(f'{node.name}: bundle:pacman requires arch linux')

files = {
    '/etc/pacman.conf': {
        'content_type': 'mako',
    },
    '/etc/upgrade-and-reboot.conf': {
        'content_type': 'mako',
    },
    '/etc/security/faillock.conf': {},
    '/usr/local/sbin/upgrade-and-reboot': {
        'mode': '0700',
    },
    '/usr/local/sbin/do-unattended-upgrades': {
        'content_type': 'mako',
        'mode': '0700',
        'context': {
            'restart_triggers': node.metadata.get('pacman/restart_triggers', {}),
        }
    },
    '/usr/local/share/icinga/plugins/check_unattended_upgrades': {
        'mode': '0755',
    },
}

svc_systemd['paccache.timer'] = {
    'needs': {
        'pkg_pacman:pacman-contrib',
    },
}

pkg_pacman = {
    'at': {},
    'autoconf': {},
    'automake': {},
    'binutils': {},
    'bison': {},
    'bzip2': {},
    'curl': {},
    'dialog': {},
    'diffutils': {},
    'dnsutils': {},
    'fakeroot': {},
    'file': {},
    'findutils': {},
    'flex': {},
    'fwupd': {},
    'gawk': {},
    'gcc': {},
    'gettext': {},
    'git': {},
    'gnu-netcat': {},
    'grep': {},
    'groff': {},
    'gzip': {},
    'htop': {},
    'jq': {},
    'ldns': {},
    'less': {},
    'libtool': {},
    'logrotate': {},
    'lsof': {},
    'm4': {},
    'mailutils': {},
    'make': {},
    'man-db': {},
    'man-pages': {},
    'moreutils': {},
    'mtr': {},
    'ncdu': {},
    'nmap': {},
    'pacman-contrib': {},
    'patch': {},
    'pkgconf': {},
    'python': {},
    'python-setuptools': {
        'needed_by': {
            'pkg_pip:',
        },
    },
    'python-pip': {
        'needed_by': {
            'pkg_pip:',
        },
    },
    'python-virtualenv': {},
    'rsync': {},
    'run-parts': {},
    'sed': {},
    'tar': {},
    'texinfo': {},
    'tmux': {},
    'tree': {},
    'unzip': {},
    'vim': {},
    'wget': {},
    'which': {},
    'whois': {},
    'zip': {},
}

if node.metadata.get('pacman/linux-lts', False):
    pkg_pacman['linux-lts'] = {}
    pkg_pacman['acpi_call-lts'] = {}
else:
    pkg_pacman['linux'] = {}
    pkg_pacman['acpi_call'] = {}

for pkg, config in node.metadata.get('pacman/packages', {}).items():
    pkg_pacman[pkg] = config