#!/usr/bin/env python
'''
Octo-DNS Multiplexer
'''

from octodns.cmds.args import ArgumentParser
from octodns.manager import Manager


def main():
    parser = ArgumentParser(description=__doc__.split('\n')[1])

    parser.add_argument(
        '--config-file',
        required=True,
        help='The Manager configuration file to use',
    )
    parser.add_argument(
        '--doit',
        action='store_true',
        default=False,
        help='Whether to take action or just show what would change',
    )
    parser.add_argument(
        '--force',
        action='store_true',
        default=False,
        help='Acknowledge that significant changes are being '
        'made and do them',
    )

    parser.add_argument(
        'zone',
        nargs='*',
        default=[],
        help='Limit sync to the specified zone(s)',
    )

    parser.add_argument(
        '--source',
        default=[],
        action='append',
        help='Limit sync to zones with the specified '
        'source(s) (all sources will be synchronized for the '
        'selected zones)',
    )
    parser.add_argument(
        '--target',
        default=[],
        action='append',
        help='Limit sync to the specified target(s)',
    )

    args = parser.parse_args()

    manager = Manager(args.config_file)
    manager.sync(
        eligible_zones=args.zone,
        eligible_sources=args.source,
        eligible_targets=args.target,
        dry_run=not args.doit,
        force=args.force,
    )


if __name__ == '__main__':
    main()
