internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: dbt-labs/dbt-core

Issue:
[CT-921] `dbt compile` works in click



Discussion:

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -10,6 +10,7 @@
 from dbt.config.profile import Profile
 from dbt.contracts.graph.manifest import Manifest
 from dbt.task.clean import CleanTask
+from dbt.task.compile import CompileTask
 from dbt.task.deps import DepsTask
 from dbt.task.run import RunTask
 from dbt.task.test import TestTask
@@ -210,8 +211,12 @@ def docs_serve(ctx, **kwargs):
 def compile(ctx, **kwargs):
     """Generates executable SQL from source, model, test, and analysis files. Compiled SQL files are written to the
     target/ directory."""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
+    task = CompileTask(ctx.obj["flags"], config)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt debug


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-1416] [Bug] GitHub Actions: Deprecating save-state and set-output commands
### Is this a new bug in dbt-core?

- [X] I believe this is a new bug in dbt-core
- [X] I have searched the existing issues, and I could not find an existing issue for this bug

### Current Behavior

GitHub Actions: Deprecating save-state and set-output commands, these should be replaced with the proposed solution.
See https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/.


### Expected Behavior

We should not see the warnings.

### Steps To Reproduce

Run all GH checks.

### Relevant log output

_No response_

### Environment

```markdown
- OS:
- Python:
- dbt:
```


### Which database adapter are you using with dbt?

_No response_

### Additional Context

_No response_


Discussion:
Thanks @kevinneville for the issue!

@emmyoop we can use this for tracking for this repo since I don't see an issue here yet
Oh nvm @kevinneville I see your PR already!!!
https://github.com/dbt-labs/dbt-core/pull/6152

> Oh nvm @kevinneville I see your PR already!!!
> 
> https://github.com/dbt-labs/dbt-core/pull/6152
> 
> 

Sorry, not sure if I missed something in the contribution guide. My first PR, I tried to follow it the best I could.
@kevinneville oh no problem! 

In the top of the PR description, you will see the "resolve #" line. If you add the issue number there, it links the issue and the PR so its easy to see the 2 are connected. I edited your PR description to have that so the link is there now

Resolving patch:
diff --git a/.github/actions/latest-wrangler/main.py b/.github/actions/latest-wrangler/main.py
--- a/.github/actions/latest-wrangler/main.py
+++ b/.github/actions/latest-wrangler/main.py
@@ -28,11 +28,12 @@
     if package_request.status_code == 404:
         if halt_on_missing:
             sys.exit(1)
-        else:
-            # everything is the latest if the package doesn't exist
-            print(f"::set-output name=latest::{True}")
-            print(f"::set-output name=minor_latest::{True}")
-            sys.exit(0)
+        # everything is the latest if the package doesn't exist
+        github_output = os.environ.get("GITHUB_OUTPUT")
+        with open(github_output, "at", encoding="utf-8") as gh_output:
+            gh_output.write("latest=True")
+            gh_output.write("minor_latest=True")
+        sys.exit(0)
 
     # TODO: verify package meta is "correct"
     # https://github.com/dbt-labs/dbt-core/issues/4640
@@ -91,5 +92,7 @@ def is_latest(
     latest = is_latest(pre_rel, new_version, current_latest)
     minor_latest = is_latest(pre_rel, new_version, current_minor_latest)
 
-    print(f"::set-output name=latest::{latest}")
-    print(f"::set-output name=minor_latest::{minor_latest}")
+    github_output = os.environ.get("GITHUB_OUTPUT")
+    with open(github_output, "at", encoding="utf-8") as gh_output:
+        gh_output.write(f"latest={latest}")
+        gh_output.write(f"minor_latest={minor_latest}")


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-930] `dbt snapshot` works with click



Discussion:

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -14,6 +14,7 @@
 from dbt.task.deps import DepsTask
 from dbt.task.run import RunTask
 from dbt.task.test import TestTask
+from dbt.task.snapshot import SnapshotTask
 
 
 # CLI invocation
@@ -401,10 +402,16 @@ def seed(ctx, **kwargs):
 @p.threads
 @p.vars
 @requires.preflight
+@requires.profile
+@requires.project
 def snapshot(ctx, **kwargs):
     """Execute snapshots defined in your project"""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
+    task = SnapshotTask(ctx.obj["flags"], config)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt source


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-1746] Flags.MP_CONTEXT is not JSON serializable
One of the many exceptions raised during integration test runs on the feature/click-cli branch is: 

`TypeError: Object of type SpawnContext is not JSON serializable`

There are a [couple options](https://github.com/dbt-labs/dbt-core/pull/6504#issuecomment-1371002518) to mitigate the issue:
1. Remove MP_CONTEXT from flags (where would be the best place to put it instead?)
2. Avoid serializing MP_CONTEXT


Discussion:
@ChenyuLInx Can you make sure that this has been fixed?  Per BLG we really think this doesn't belong in flags and should re-locate it-- will open a ticket for that work.

Resolving patch:
diff --git a/core/dbt/utils.py b/core/dbt/utils.py
--- a/core/dbt/utils.py
+++ b/core/dbt/utils.py
@@ -642,7 +642,10 @@ def args_to_dict(args):
     dict_args = {}
     # remove args keys that clutter up the dictionary
     for key in var_args:
-        if key == "cls":
+        if key.lower() in var_args and key == key.upper():
+            # skip all capped keys being introduced by Flags in dbt.cli.flags
+            continue
+        if key in ["cls", "mp_context"]:
             continue
         if var_args[key] is None:
             continue


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-931] `dbt source freshness` works with click



Discussion:

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -15,7 +15,9 @@
 from dbt.task.run import RunTask
 from dbt.task.test import TestTask
 from dbt.task.snapshot import SnapshotTask
+from dbt.task.seed import SeedTask
 from dbt.task.list import ListTask
+from dbt.task.freshness import FreshnessTask
 
 
 # CLI invocation
@@ -301,6 +303,7 @@ def list(ctx, **kwargs):
     return results, success
 
 
+# Alias "list" to "ls"
 ls = copy(cli.commands["list"])
 ls.hidden = True
 cli.add_command(ls, "ls")
@@ -393,10 +396,16 @@ def run_operation(ctx, **kwargs):
 @p.vars
 @p.version_check
 @requires.preflight
+@requires.profile
+@requires.project
 def seed(ctx, **kwargs):
     """Load data from csv files into your data warehouse."""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
+    task = SeedTask(ctx.obj["flags"], config)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt snapshot
@@ -450,10 +459,22 @@ def source(ctx, **kwargs):
 @p.threads
 @p.vars
 @requires.preflight
+@requires.profile
+@requires.project
 def freshness(ctx, **kwargs):
-    """Snapshots the current freshness of the project's sources"""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    """check the current freshness of the project's sources"""
+    config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
+    task = FreshnessTask(ctx.obj["flags"], config)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
+
+
+# Alias "source freshness" to "snapshot-freshness"
+snapshot_freshness = copy(cli.commands["source"].commands["freshness"])  # type: ignore
+snapshot_freshness.hidden = True
+cli.commands["source"].add_command(snapshot_freshness, "snapshot-freshness")  # type: ignore
 
 
 # dbt test
@@ -477,6 +498,8 @@ def freshness(ctx, **kwargs):
 @p.vars
 @p.version_check
 @requires.preflight
+@requires.profile
+@requires.project
 def test(ctx, **kwargs):
     """Runs tests on data in deployed models. Run this after `dbt run`"""
     config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
diff --git a/core/dbt/cli/params.py b/core/dbt/cli/params.py
--- a/core/dbt/cli/params.py
+++ b/core/dbt/cli/params.py
@@ -312,10 +312,10 @@
     help="If set, use the given directory as the source for json files to compare with this project.",
     type=click.Path(
         dir_okay=True,
-        exists=True,
         file_okay=False,
         readable=True,
         resolve_path=True,
+        path_type=Path,
     ),
 )
 


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-917] `dbt build` works in click



Discussion:

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -19,6 +19,7 @@
 from dbt.task.list import ListTask
 from dbt.task.freshness import FreshnessTask
 from dbt.task.run_operation import RunOperationTask
+from dbt.task.build import BuildTask
 
 
 # CLI invocation
@@ -104,6 +105,7 @@ def cli(ctx, **kwargs):
 @p.profile
 @p.profiles_dir
 @p.project_dir
+@p.resource_type
 @p.select
 @p.selector
 @p.show
@@ -115,10 +117,16 @@ def cli(ctx, **kwargs):
 @p.vars
 @p.version_check
 @requires.preflight
+@requires.profile
+@requires.project
 def build(ctx, **kwargs):
     """Run all Seeds, Models, Snapshots, and tests in DAG order"""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
+    task = BuildTask(ctx.obj["flags"], config)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt clean


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-919] `dbt docs generate` works in click



Discussion:

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -20,6 +20,7 @@
 from dbt.task.freshness import FreshnessTask
 from dbt.task.run_operation import RunOperationTask
 from dbt.task.build import BuildTask
+from dbt.task.generate import GenerateTask
 
 
 # CLI invocation
@@ -175,10 +176,16 @@ def docs(ctx, **kwargs):
 @p.vars
 @p.version_check
 @requires.preflight
+@requires.profile
+@requires.project
 def docs_generate(ctx, **kwargs):
     """Generate the documentation website for your project"""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    config = RuntimeConfig.from_parts(ctx.obj["project"], ctx.obj["profile"], ctx.obj["flags"])
+    task = GenerateTask(ctx.obj["flags"], config)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt docs serve


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-1881] [Feature] When possible, bypass an expensive method during graph construction
### Is this your first time submitting a feature request?

- [X] I have read the [expectations for open source contributors](https://docs.getdbt.com/docs/contributing/oss-expectations)
- [X] I have searched the existing issues, and I could not find an existing issue for this feature
- [X] I am requesting a straightforward extension of existing dbt functionality, rather than a Big Idea better suited to a discussion

### Describe the feature

https://github.com/dbt-labs/dbt-core/issues/6073 describes how projects with 1000's of nodes can take ~15 minutes to `dbt build` even a single node.

The `_already_known` method call is a relatively expensive method call during DAG parsing. There are some cases where it is unnecessarily called, namely when `in_degree != 0` [here](https://github.com/dbt-labs/dbt-core/blob/93619a9a3761d3606d257c1274828ac4eef4f627/core/dbt/graph/queue.py#L159-L166).

Swapping the conditions of the if statement would short-circuit calling `_already_known`  while keeping the logic the same.  This is shown in https://github.com/dbt-labs/dbt-core/commit/9f9608731263b7b3b3e8dfd22a9d579cb650cd54. (We know we can safely swap the order by [commutativity of conjunction](https://en.wikipedia.org/wiki/Commutativity_of_conjunction)).

### Describe alternatives you've considered

There's at least two alternatives:
1. Default approach of changing nothing
1. More complicated refactor

This proposal seems obviously superior to the first alternative while not preventing us from taking up the second alternative at a later date. So it's an easy win.

### Who will this benefit?

This will (slightly) benefit teams with very large DAGs (thousands of nodes).

### Are you interested in contributing this feature?

There's already a PR ready for this!

### Anything else?

_No response_


Discussion:

Resolving patch:
diff --git a/core/dbt/graph/queue.py b/core/dbt/graph/queue.py
--- a/core/dbt/graph/queue.py
+++ b/core/dbt/graph/queue.py
@@ -161,7 +161,7 @@ def _find_new_additions(self) -> None:
         queue and add them.
         """
         for node, in_degree in self.graph.in_degree():
-            if not self._already_known(node) and in_degree == 0:
+            if in_degree == 0 and not self._already_known(node):
                 self.inner.put((self._scores[node], node))
                 self.queued.add(node)
 


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-924] `dbt init` works in click



Discussion:
Per BLG on 1/17/23 we should consider this for a refactor since we're using click as our main cli in 1.5+


Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -21,6 +21,7 @@
 from dbt.task.run_operation import RunOperationTask
 from dbt.task.build import BuildTask
 from dbt.task.generate import GenerateTask
+from dbt.task.init import InitTask
 
 
 # CLI invocation
@@ -307,8 +308,11 @@ def deps(ctx, **kwargs):
 @requires.preflight
 def init(ctx, **kwargs):
     """Initialize a new dbt project."""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    task = InitTask(ctx.obj["flags"], None)
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt list


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-922] `dbt debug` works in click



Discussion:
This issue has been marked as Stale because it has been open for 180 days with no activity. If you would like the issue to remain open, please comment on the issue or else it will be closed in 7 days.

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -11,6 +11,7 @@
 from dbt.task.clean import CleanTask
 from dbt.task.compile import CompileTask
 from dbt.task.deps import DepsTask
+from dbt.task.debug import DebugTask
 from dbt.task.run import RunTask
 from dbt.task.test import TestTask
 from dbt.task.snapshot import SnapshotTask
@@ -258,10 +259,19 @@ def compile(ctx, **kwargs):
 @p.vars
 @p.version_check
 @requires.preflight
+@requires.profile
+@requires.project
+@requires.runtime_config
 def debug(ctx, **kwargs):
     """Show some helpful information about dbt for debugging. Not to be confused with the --debug option which increases verbosity."""
-    click.echo(f"`{inspect.stack()[0][3]}` called\n flags: {ctx.obj['flags']}")
-    return None, True
+    task = DebugTask(
+        ctx.obj["flags"],
+        ctx.obj["runtime_config"],
+    )
+
+    results = task.run()
+    success = task.interpret_results(results)
+    return results, success
 
 
 # dbt deps
diff --git a/core/dbt/task/debug.py b/core/dbt/task/debug.py
--- a/core/dbt/task/debug.py
+++ b/core/dbt/task/debug.py
@@ -12,7 +12,6 @@
 from dbt.adapters.factory import get_adapter, register_adapter
 from dbt.config import PartialProject, Project, Profile
 from dbt.config.renderer import DbtProjectYamlRenderer, ProfileRenderer
-from dbt.config.utils import parse_cli_vars
 from dbt.clients.yaml_helper import load_yaml_text
 from dbt.links import ProfileConfigDocs
 from dbt.ui import green, red
@@ -71,11 +70,7 @@ def __init__(self, args, config):
             else:
                 self.project_dir = os.getcwd()
         self.project_path = os.path.join(self.project_dir, "dbt_project.yml")
-        # N.B. parse_cli_vars is embedded into the param when using click.
-        # replace this with:
-        # cli_vars: Dict[str, Any] = getattr(args, "vars", {})
-        # when this task is refactored for click
-        self.cli_vars = parse_cli_vars(getattr(self.args, "vars", "{}"))
+        self.cli_vars: Dict[str, Any] = args.vars
 
         # set by _load_*
         self.profile: Optional[Profile] = None
@@ -258,7 +253,9 @@ def _load_profile(self):
                     profile_name,
                     self.args.profile,
                     self.args.target,
-                    self.args.threads,
+                    # TODO: Generalize safe access to flags.THREADS:
+                    # https://github.com/dbt-labs/dbt-core/issues/6259
+                    getattr(self.args, "threads", None),
                 )
             except dbt.exceptions.DbtConfigError as exc:
                 profile_errors.append(str(exc))


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-1908] [Regression] `exposure_content` referenced incorrectly
### Is this a regression in a recent version of dbt-core?

- [X] I believe this is a regression in dbt-core functionality
- [X] I have searched the existing issues, and I could not find an existing issue for this regression

### Current Behavior

```local variable 'exposure_content' referenced before assignment ``` error due to `exposure_content` being referenced instead of `source_content`

### Expected/Previous Behavior

This is new in 1.4.0
dbt deps will not fail with error above

### Steps To Reproduce

- you're doing state comparison (--state <old_manifest>)
or
- your old project has sources defined in it (our automated test for cross-version state comparison compatibility [does not](https://github.com/dbt-labs/dbt-core/blob/main/tests/functional/artifacts/test_previous_version_state.py) include sources)

### Relevant log output

```shell
see current behavior
```


### Environment

```markdown
- OS:
- Python:
- dbt (working version): 1.3.2
- dbt (regression version): 1.4.0
```


### Which database adapter are you using with dbt?

_No response_

### Additional Context

_No response_


Discussion:

Resolving patch:
diff --git a/core/dbt/contracts/util.py b/core/dbt/contracts/util.py
--- a/core/dbt/contracts/util.py
+++ b/core/dbt/contracts/util.py
@@ -283,7 +283,7 @@ def upgrade_manifest_json(manifest: dict) -> dict:
         if "root_path" in exposure_content:
             del exposure_content["root_path"]
     for source_content in manifest.get("sources", {}).values():
-        if "root_path" in exposure_content:
+        if "root_path" in source_content:
             del source_content["root_path"]
     for macro_content in manifest.get("macros", {}).values():
         if "root_path" in macro_content:


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-1949] Turn on the new CLI in setup.py
### Is this your first time submitting a feature request?

- [X] I have read the [expectations for open source contributors](https://docs.getdbt.com/docs/contributing/oss-expectations)
- [X] I have searched the existing issues, and I could not find an existing issue for this feature
- [X] I am requesting a straightforward extension of existing dbt functionality, rather than a Big Idea better suited to a discussion

### Describe the feature

This ticket turns on the console script for the new CLI

### Describe alternatives you've considered

_No response_

### Who will this benefit?

_No response_

### Are you interested in contributing this feature?

_No response_

### Anything else?

_No response_


Discussion:

Resolving patch:
diff --git a/core/setup.py b/core/setup.py
--- a/core/setup.py
+++ b/core/setup.py
@@ -43,7 +43,7 @@
     include_package_data=True,
     test_suite="test",
     entry_points={
-        "console_scripts": ["dbt = dbt.main:main"],
+        "console_scripts": ["dbt = dbt.cli.main:cli_runner"],
     },
     install_requires=[
         "Jinja2==3.1.2",


Test patch:
Repository: dbt-labs/dbt-core

Issue:
[CT-1985] Lazily call version in click params
As part of the work in #6802 we use `click.version_option`, however the eagerly calls `dbt.version.get_version_information` which in turn calls our legacy `flags` module. This presents a problem since we want that module to only be loaded after our click group has run. This work should prevent `dbt.version.get_version_infromation` from being called before the click group as executed. Likely go back to using `version` as a `click.option` and use the `callback` arg.


Discussion:

Resolving patch:
diff --git a/core/dbt/cli/main.py b/core/dbt/cli/main.py
--- a/core/dbt/cli/main.py
+++ b/core/dbt/cli/main.py
@@ -21,7 +21,6 @@
 from dbt.task.build import BuildTask
 from dbt.task.generate import GenerateTask
 from dbt.task.init import InitTask
-from dbt.version import __version__, get_version_information
 
 
 # CLI invocation
@@ -73,7 +72,6 @@ def invoke(self, args: List[str]) -> Tuple[Optional[List], bool]:
     epilog="Specify one of these sub-commands and you can find more help from there.",
 )
 @click.pass_context
-@click.version_option(version=__version__, message=get_version_information())
 @p.anonymous_usage_stats
 @p.cache_selected_only
 @p.debug
@@ -92,6 +90,7 @@ def invoke(self, args: List[str]) -> Tuple[Optional[List], bool]:
 @p.static_parser
 @p.use_colors
 @p.use_experimental_parser
+@p.version
 @p.version_check
 @p.warn_error
 @p.warn_error_options
diff --git a/core/dbt/cli/params.py b/core/dbt/cli/params.py
--- a/core/dbt/cli/params.py
+++ b/core/dbt/cli/params.py
@@ -4,7 +4,7 @@
 from dbt.cli.options import MultiOption
 from dbt.cli.option_types import YAML, ChoiceTuple, WarnErrorOptionsType
 from dbt.cli.resolvers import default_project_dir, default_profiles_dir
-
+from dbt.version import get_version_information
 
 # TODO:  The name (reflected in flags) is a correction!
 # The original name was `SEND_ANONYMOUS_USAGE_STATS` and used an env var called "DBT_SEND_ANONYMOUS_USAGE_STATS"
@@ -378,6 +378,25 @@
 )
 
 
+# TODO: when legacy flags are deprecated use
+# click.version_option instead of a callback
+def _version_callback(ctx, _param, value):
+    if not value or ctx.resilient_parsing:
+        return
+    click.echo(get_version_information())
+    ctx.exit()
+
+
+version = click.option(
+    "--version",
+    callback=_version_callback,
+    envvar=None,
+    expose_value=False,
+    help="Show version information",
+    is_eager=True,
+    is_flag=True,
+)
+
 version_check = click.option(
     "--version-check/--no-version-check",
     envvar="DBT_VERSION_CHECK",


Test patch: