Make codegen filename arguments explicit
Signed-off-by: Dan Yeaw <dan@yeaw.me>
This commit is contained in:
4
Makefile
4
Makefile
@ -21,9 +21,9 @@ translate: ## Translate and update .po and .mo files (requires PyBabel)
|
||||
model: gaphor/core/modeling/coremodel.py gaphor/UML/uml.py ## Generate Python model files from Gaphor models (requires Black, MyPy)
|
||||
|
||||
gaphor/core/modeling/coremodel.py: models/Core.gaphor models/Core.override gaphor/codegen/autocoder.py gaphor/codegen/override.py gaphor/codegen/writer.py
|
||||
gaphor/codegen/codegen.py Core && black $@ && mypy gaphor/core/modeling
|
||||
gaphor/codegen/codegen.py Core.gaphor gaphor/core/modeling/coremodel.py Core.override && black $@ && mypy gaphor/core/modeling && isort gaphor/core/modeling/coremodel.py
|
||||
|
||||
gaphor/UML/uml.py: models/UML.gaphor models/UML.override gaphor/codegen/autocoder.py gaphor/codegen/override.py gaphor/codegen/writer.py
|
||||
gaphor/codegen/codegen.py UML && black $@ && mypy gaphor/UML
|
||||
gaphor/codegen/codegen.py UML.gaphor uml.py UML.override && black $@ && mypy gaphor/UML && isort gaphor/UML/UML.gaphor
|
||||
|
||||
.PHONY: help dist test docs icons translate model
|
||||
|
@ -1,16 +1,14 @@
|
||||
# This file is generated by build_uml.py. DO NOT EDIT!
|
||||
# This file is generated by codegen.py. DO NOT EDIT!
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import uuid
|
||||
from typing import Callable, List, Optional
|
||||
from typing import Callable, Optional
|
||||
|
||||
# 23: override Diagram
|
||||
# 20: override PackageableElement
|
||||
# 17: override NamedElement
|
||||
# 14: override Element
|
||||
from gaphor.core.modeling import Diagram, Element, NamedElement, PackageableElement
|
||||
from gaphor.core.modeling.collection import collection
|
||||
from gaphor.core.modeling.properties import (
|
||||
association,
|
||||
attribute,
|
||||
|
@ -14,42 +14,44 @@ from gaphor.codegen import autocoder
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("model_name", type=str, help="gaphor model name stem")
|
||||
parser.add_argument("--no-overrides", action="store_true", help="no overrides file")
|
||||
parser.add_argument(
|
||||
"--model_dir",
|
||||
"modelfile",
|
||||
type=Path,
|
||||
default=Path(__file__).absolute().parent.parent.parent / "models",
|
||||
help="optional, path to the model directory, defaults to the models " "package",
|
||||
help="gaphor model filename, default location is the "
|
||||
"models package if full filename not given.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--output_dir",
|
||||
"outfile",
|
||||
type=Path,
|
||||
help="optional, path to the output direction, defaults to the "
|
||||
"model_name package",
|
||||
help="python data model filename, default location is "
|
||||
"the model name package if full filename not "
|
||||
"given.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"overrides",
|
||||
type=Path,
|
||||
help="override filename, default location is the "
|
||||
"models package if full filename not given.",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
model: str = args.model_name
|
||||
model_file: Path = args.model_dir / f"{model}.gaphor"
|
||||
|
||||
if args.no_overrides:
|
||||
overrides = None
|
||||
else:
|
||||
overrides = args.model_dir / f"{args.model_name}.override"
|
||||
|
||||
if args.output_dir:
|
||||
outfile = args.output_dir / f"{model.lower()}.py"
|
||||
elif model == "Core":
|
||||
outfile = Path(__file__).absolute().parent.parent / "core/modeling/coremodel.py"
|
||||
else:
|
||||
outfile = (
|
||||
Path(__file__).absolute().parent.parent / model / f"{model.lower()}.py"
|
||||
modelfile: Path = args.modelfile
|
||||
outfile: Path = args.outfile
|
||||
if str(modelfile) == modelfile.name:
|
||||
modelfile = (
|
||||
Path(__file__).absolute().parent.parent.parent / "models" / modelfile
|
||||
)
|
||||
if str(outfile) == outfile.name:
|
||||
outfile = Path(__file__).absolute().parent.parent / modelfile.stem / outfile
|
||||
overrides: Path = args.overrides
|
||||
if str(overrides) == overrides.name:
|
||||
overrides = (
|
||||
Path(__file__).absolute().parent.parent.parent / "models" / overrides
|
||||
)
|
||||
|
||||
print(f"Generating {outfile.name} from {model}.gaphor...")
|
||||
print(f"Generating {args.outfile} from {args.modelfile}...")
|
||||
print(" (warnings can be ignored)")
|
||||
|
||||
autocoder.generate(model_file, outfile, overrides)
|
||||
autocoder.generate(modelfile, outfile, overrides)
|
||||
byte_compile([str(outfile)])
|
||||
|
||||
|
||||
|
@ -2,18 +2,12 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import uuid
|
||||
from typing import TYPE_CHECKING, Callable, List, Optional
|
||||
from typing import TYPE_CHECKING, List
|
||||
|
||||
from gaphor.core.modeling.collection import collection
|
||||
from gaphor.core.modeling.element import Element
|
||||
from gaphor.core.modeling.properties import (
|
||||
association,
|
||||
attribute,
|
||||
derived,
|
||||
derivedunion,
|
||||
enumeration,
|
||||
redefine,
|
||||
relation_many,
|
||||
relation_one,
|
||||
)
|
||||
|
Reference in New Issue
Block a user