#!/usr/bin/python3
# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Configuration helper for Roundcube server.
"""

import argparse
import re

from plinth import action_utils

APACHE_CONF = '/etc/apache2/conf-available/roundcube.conf'


def parse_arguments():
    """Return parsed command line arguments as dictionary."""
    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')

    subparsers.add_parser('pre-install',
                          help='Perform Roundcube pre-install configuration')
    subparsers.add_parser('setup',
                          help='Perform Roundcube configuration setup')

    subparsers.required = True
    return parser.parse_args()


def subcommand_pre_install(_):
    """Preseed debconf values before packages are installed."""
    action_utils.debconf_set_selections([
        'roundcube-core roundcube/dbconfig-install boolean true',
        'roundcube-core roundcube/database-type string sqlite3'
    ])


def subcommand_setup(_):
    """Setup Roundcube Apache configuration."""
    with open(APACHE_CONF, 'r') as conffile:
        lines = conffile.readlines()

    with open(APACHE_CONF, 'w') as conffile:
        for line in lines:
            match = re.match(r'#\s*(Alias /roundcube.*)', line)
            if match:
                conffile.write(match.group(1) + '\n')
            else:
                conffile.write(line)

    action_utils.service_reload('apache2')


def main():
    """Parse arguments and perform all duties."""
    arguments = parse_arguments()

    subcommand = arguments.subcommand.replace('-', '_')
    subcommand_method = globals()['subcommand_' + subcommand]
    subcommand_method(arguments)


if __name__ == '__main__':
    main()
