Files
2026-04-21 17:46:53 +02:00

89 lines
2.5 KiB
Python

"""
Main entry point for the MARTe Autodoc project"
Author: Martino Ferrari
Email: martinogiordano.ferrari@iter.org
"""
import logging
import os
import sys
from argparse import ArgumentParser
import autodoc
from configdb import ConfigDB
__version__ = "0.0.0"
def __args__():
"""Parse arguments."""
parser = ArgumentParser(
prog="autodoc",
description="MARTe configuration auto documentation tool",
)
parser.add_argument("filename", help="Configuration file to document", type=str)
parser.add_argument(
"--type",
choices=["json", "marte"],
default="marte",
help="Configuration file type (default: `marte`)",
)
parser.add_argument(
"--loglevel",
choices=["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"],
default="ERROR",
help="Logging level (default: `ERROR`)",
)
parser.add_argument("--build", help="build output flag", default=True)
parser.add_argument("--version", action="version", version=__version__)
parser.add_argument(
"-d", "--destination", help="Destination folder", type=str, default="."
)
parser.add_argument("-o", "--output", help="Output name", type=str, default="")
return parser.parse_args()
def main():
"""Main function."""
args = __args__()
logging.basicConfig(level=args.loglevel)
logging.info(f"AutoDoc v{__version__}")
if not os.path.exists(args.filename):
logging.error(f"Specified file `{args.filename}` does not exists")
sys.exit(1)
config = {}
if args.type == "marte":
from MARTe.StandardParser import ParseException, StandardParser
parser = StandardParser()
try:
config = parser.parse_file(args.filename)
except ParseException as e:
logging.error(
f"Impossible to parse file `{args.filename}` at position ({e.line},{e.col}): {e.msg}`"
)
sys.exit(1)
except Exception:
logging.error(f"Sometihng went wrong with file `{args.filename}`")
sys.exit(1)
else:
import json
with open(args.filename, "r") as file:
config = json.load(file)
if not config:
logging.error(f"Impossible to load configuration `{args.filename}`")
sys.exit(1)
if args.output:
filename = args.output
else:
filename = os.path.splitext(os.path.basename(args.filename))[0]
# autodoc.document(filename, args, config)
cfgdb = ConfigDB()
if __name__ == "__main__":
main()