#!/usr/bin/env python3

import argparse
from eryntools.dotfiles.system_parameters import CommandParameter, SystemParameters


class HomebrewPrefix(CommandParameter):
    def __init__(self):
        super().__init__(['brew', '--prefix'])


class XcodeSelectPrintPath(CommandParameter):
    def __init__(self):
        super().__init__(['xcode-select', '-p'])


def main(argv):
    parser = argparse.ArgumentParser(prog=argv[0])
    parser.add_argument('-f', '--file', type=argparse.FileType('r'))
    parser.add_argument('-o', '--output', type=argparse.FileType('w'), default=sys.stdout)
    arguments = parser.parse_args(argv[1:])

    output_parameters = SystemParameters()

    if arguments.file:
        output_parameters.load_from_file(arguments.file)

    parameters = {
        'homebrew_prefix': HomebrewPrefix(),
        'xcode_path': XcodeSelectPrintPath(),
    }

    for name, parameter in parameters.items():
        setattr(output_parameters, name, parameter)

    output_parameters.write_to_file(arguments.output)


if __name__ == "__main__":
    import sys
    sys.exit(main(sys.argv) or 0)
