Make codegen filename arguments explicit

Signed-off-by: Dan Yeaw <dan@yeaw.me>
This commit is contained in:
Dan Yeaw
2020-04-11 14:38:03 -04:00
parent aa27e74f0d
commit 4ed1d71d00
4 changed files with 32 additions and 38 deletions

View File

@ -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

View File

@ -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,

View File

@ -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)])

View File

@ -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,
)