diff --git a/jac/jaclang/compiler/__init__.py b/jac/jaclang/compiler/__init__.py index 092f1e48a..8b1bfb8e7 100644 --- a/jac/jaclang/compiler/__init__.py +++ b/jac/jaclang/compiler/__init__.py @@ -6,7 +6,7 @@ import shutil import sys -from jaclang.utils.helpers import auto_generate_refs +from jaclang.utils.helpers import auto_generate_refs, check_version from jaclang.vendor.lark.tools import standalone @@ -37,6 +37,8 @@ def generate_static_parser(force: bool = False) -> None: try: from jaclang.compiler.generated import jac_parser as jac_lark + + generate_static_parser(force=check_version()) except ModuleNotFoundError: generate_static_parser(force=True) from jaclang.compiler.generated import jac_parser as jac_lark diff --git a/jac/jaclang/utils/helpers.py b/jac/jaclang/utils/helpers.py index a79a6f83c..496b215d6 100644 --- a/jac/jaclang/utils/helpers.py +++ b/jac/jaclang/utils/helpers.py @@ -260,6 +260,21 @@ def pretty_print_source_location( return pretty_dump[:-1] # Get rid of the last newline (of the last line). +def check_version() -> bool: + """Check if the installed version of JacLang is outdated.""" + import tomllib + + file_path = os.path.join(os.getcwd(), "..", "..", "Jaseci/jac/pyproject.toml") + file_path = os.path.normpath(file_path) + with open(file_path, "rb") as file: + data = tomllib.load(file) + latest_version = data["tool"]["poetry"]["version"] + from importlib.metadata import version + + installed_version = version("jaclang") + return latest_version != installed_version + + class Jdb(pdb.Pdb): """Jac debugger."""