#!/usr/bin/env python3
{{ batchdirectives }}

"""
template to create a case post run script for I/O post processing.

This should only ever be called by case.submit when on batch system.
This script only exists as a way of providing batch directives.
Use case.submit from the command line to run your case.

DO NOT RUN THIS SCRIPT MANUALLY
"""

import os, sys
os.chdir( '{{ caseroot }}')

_LIBDIR = os.path.join("{{ cimeroot }}", "scripts", "Tools")
sys.path.append(_LIBDIR)

from standard_script_setup          import *

from CIME.case import Case
from CIME.config import Config

logger = logging.getLogger(__name__)

import argparse

###############################################################################
def parse_command_line(args, description):
###############################################################################
    parser = argparse.ArgumentParser(
        usage="""\n{0} [--verbose]
OR
{0} --help

\033[1mEXAMPLES:\033[0m
    \033[1;32m# case.post_run_io SMS\033[0m
    > {0}
""".format(os.path.basename(args[0])),
        description=description,
        formatter_class=argparse.ArgumentDefaultsHelpFormatter
    )

    CIME.utils.setup_standard_logging_options(parser)

    parser.add_argument("--caseroot",
                        help="Case directory to build")

    args = CIME.utils.parse_args_and_handle_standard_logging_options(args, parser)

    if args.caseroot is not None:
        os.chdir(args.caseroot)

    return args.caseroot

###############################################################################
def _main_func(description):
###############################################################################
    sys.argv.extend([] if "ARGS_FOR_SCRIPT" not in os.environ else os.environ["ARGS_FOR_SCRIPT"].split())

    ret = 0
    caseroot = parse_command_line(sys.argv, description)
    # Load the case_post_run_io.py script and run I/O post processing steps
    with Case(caseroot, read_only=False) as case:
        srcroot = case.get_value("SRCROOT")

        customize_path = os.path.join(srcroot, "cime_config", "customize")

        config = Config.load(customize_path)

        ret = config.case_post_run_io(case)

    sys.exit(ret)

if __name__ == "__main__":
    _main_func(__doc__)
