#!/usr/bin/env python
import argparse
import os
from generators import __version__
from generators.generate import generate
from rdflib import Graph


def dir_path(path):
    if os.path.isdir(path):
        return path
    else:
        raise argparse.ArgumentTypeError(f"{path} is not a valid path")


def parse_args():
    parser = argparse.ArgumentParser(description="Converting rdf model to system.")

    parser.add_argument("--version", action='version', version=f'%(prog)s (version {__version__})')
    parser.add_argument("--model", required=True, metavar="INPUT", help="model file in RDF format")
    parser.add_argument("--path", required=True, metavar="OUTPUT", type=dir_path, help="output directory")
    parser.add_argument("--sandbox", required=True, metavar="OUTPUT", type=dir_path, help="sandbox directory")
    parser.add_argument("--sandbox-only", action='store_true', help="Only generate sandbox")
    parser.add_argument('--show-unused', action='store_true', help="Show unused (not generated) files")
    args = parser.parse_args()
    return args.model, args.path, args.sandbox, args.sandbox_only, args.show_unused


model, root_path, sandbox_path, sandbox_only, show_unused = parse_args()

config = {
    "ROOT_DIRECTORY": root_path,
    "SANDBOX_DIRECTORY": sandbox_path
}


graph = Graph()
graph.parse(model)


generate(graph, config, sandbox_only, show_unused)
