#!/usr/bin/env python3

import os
import sys
from argparse import ArgumentParser
from configparser import ConfigParser


def main(output_path, input_paths):
    config = ConfigParser()
    for input_path in input_paths:
        for overriding_section in sections_of(input_path):
            config.remove_section(overriding_section)
        config.read(input_path)
    with open_output(output_path) as out_file:
        config.write(out_file)


def sections_of(input_path):
    next_overriding_config = ConfigParser()
    next_overriding_config.read(input_path)
    return next_overriding_config.sections()


def open_output(path):
    if path is None:
        return sys.stdout
    path_ = os.path.expanduser(path)
    return open(path_, 'w')


if __name__ == '__main__':
    parser = ArgumentParser()
    parser.add_argument('-o', '--output', nargs='?', default=None)
    parser.add_argument('-i', '--input', nargs='+')
    args = parser.parse_args()
    main(args.output, args.input)
