#! /usr/bin/env python
import argparse
import sys
import configparser


def main() -> int:
    # Handle program arguments
    ap = argparse.ArgumentParser(
        description="Nicely lists the options stored in a Deadline .options file"
    )
    ap.add_argument("options_file", type=str, help="The .options file to read")
    ap.add_argument(
        "--show-types", action="store_true", help="Show the type of each option"
    )
    ap.add_argument(
        "--show-defaults",
        action="store_true",
        help="Show the default value of each option",
    )
    args = ap.parse_args()

    # Read the file
    with open(args.options_file, "r") as f:
        config_string = f.read()

    # Parse the file
    config = configparser.ConfigParser()
    config.read_string(config_string)

    # List each option
    for section in config.sections():
        print(f"{section}{'*' if bool(config[section].get('Required', False)) else ''}: {config[section].get('Description', 'No description')}")
        if args.show_types:
            print(f"  Type: {config[section].get('Type', 'No type')}")
        if args.show_defaults and "Default" in config[section]:
            print(f"  Default: {config[section]['Default']}")
            

    return 0


if __name__ == "__main__":
    sys.exit(main())