#!/usr/bin/env python3

from argparse import ArgumentParser
import sys

from pbench.cli.agent.commands.log import add_metalog_option


def main(prog, parsed):
    """main - main program entry point to add an option to, or update an option
    in, a section of a given metadata.log file.

    To create a section name "run", with an option named, "iterations", having
    a value of "1-iter, 2-iter, 3-iter", you would do the following:

      $ echo "1-iter 2-iter 3-iter" \
        | pbench-add-metalog-option ./metadata.log run iterations

    Exits with 0 on success, 1 on failure.
    """
    try:
        value = ", ".join(sys.stdin.read().split())
        add_metalog_option(parsed.metadata_log, parsed.section, parsed.option, value)
    except FileNotFoundError:
        print(f"{prog}: {parsed.metadata_log}, file not found", file=sys.stderr)
        return 1
    except Exception as exc:
        print(
            f"{prog}: ERROR - unexpected error encountered adding option"
            f" {parsed.option} to section {parsed.section}, {exc}",
            file=sys.stderr,
        )
        return 1
    return 0


_NAME_ = "pbench-add-metalog-option"

if __name__ == "__main__":
    parser = ArgumentParser(
        f"Usage: {_NAME_} <metadata log file> <section> <option>; option value"
        " read from stdin"
    )
    parser.add_argument(
        "metadata_log",
        help="The full path and name of the target metadata.log file to modify",
    )
    parser.add_argument(
        "section",
        help="The name of the section containing the option",
    )
    parser.add_argument(
        "option",
        help="The name of the option to be added or modified",
    )
    parsed = parser.parse_args()
    status = main(sys.argv[0], parsed)
    sys.exit(status)
