import argparse
import importlib.metadata
import logging
from pathlib import Path
from annular.coupling import run
from annular.install_tulipa import install_tulipa
from annular.utils import silence_noisy_loggers
[docs]
version_string = importlib.metadata.version("annular")
[docs]
def cli_main() -> None:
"""CLI function for running an annular simulation using config files."""
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--version", action="version", version=f"%(prog)s {version_string}")
subparsers = parser.add_subparsers(dest="command")
# Run command
run_parser = subparsers.add_parser("run")
run_parser.add_argument(
"config_files",
nargs="+",
type=Path,
help="Configuration files to run simulations for.",
)
run_parser.add_argument(
"--verbose",
"-v",
action="count",
default=0,
help="Controls the level of verbosity in the logging output: -v for INFO, -vv for DEBUG",
)
run_parser.add_argument("-o", "--output", type=Path, help="Output directory", default=Path("./results/"))
# Install Tulipa command
install_parser = subparsers.add_parser("install-tulipa", help="Install TulipaEnergyModel.jl dependencies")
install_parser.add_argument(
"-w",
"--workspace",
type=Path,
help="Workspace directory for Julia environment (default: current directory)",
default=Path("./"),
)
install_parser.add_argument(
"--verbose",
"-v",
action="count",
default=0,
help="Controls the level of verbosity in the logging output: -v for INFO, -vv for DEBUG",
)
args = parser.parse_args()
log_level = 10 * (3 - args.verbose) # logging.WARNING = 30, logging.INFO = 20, logging.DEBUG = 10
logging.basicConfig(level=log_level)
silence_noisy_loggers()
if args.command == "run":
for config_file in args.config_files:
run(config_file, args.output)
elif args.command == "install-tulipa":
install_tulipa(workspace=args.workspace)