diff --git a/sqlmesh/dbt/builtin.py b/sqlmesh/dbt/builtin.py index c4fe0540b7..eada61d944 100644 --- a/sqlmesh/dbt/builtin.py +++ b/sqlmesh/dbt/builtin.py @@ -502,8 +502,14 @@ def create_builtin_globals( else: builtin_globals["model"] = AttributeDict(model.copy()) + builtin_globals["flags"] = ( + Flags(which="run") if engine_adapter is not None else Flags(which="parse") + ) + builtin_globals["invocation_args_dict"] = { + k.lower(): v for k, v in builtin_globals["flags"].__dict__.items() + } + if engine_adapter is not None: - builtin_globals["flags"] = Flags(which="run") adapter: BaseAdapter = RuntimeAdapter( engine_adapter, jinja_macros, @@ -521,7 +527,6 @@ def create_builtin_globals( project_dialect=project_dialect, ) else: - builtin_globals["flags"] = Flags(which="parse") adapter = ParsetimeAdapter( jinja_macros, jinja_globals={**builtin_globals, **jinja_globals}, diff --git a/tests/dbt/test_transformation.py b/tests/dbt/test_transformation.py index b5de61031b..2802b4cb79 100644 --- a/tests/dbt/test_transformation.py +++ b/tests/dbt/test_transformation.py @@ -1435,6 +1435,14 @@ def test_flags(sushi_test_project: Project): assert context.render("{{ flags.WHICH }}") == "parse" +def test_invocation_args_dict(sushi_test_project: Project): + context = sushi_test_project.context + + assert context.render("{{ invocation_args_dict['full_refresh'] }}") == "None" + assert context.render("{{ invocation_args_dict['store_failures'] }}") == "None" + assert context.render("{{ invocation_args_dict['which'] }}") == "parse" + + @pytest.mark.xdist_group("dbt_manifest") def test_relation(sushi_test_project: Project): context = sushi_test_project.context