Skip to content

Commit

Permalink
dbt init Interactive profile creation (#3625)
Browse files Browse the repository at this point in the history
* Initial

* Further dev

* Make mypy happy

* Further dev

* Existing tests passing

* Functioning integration test

* Passing integration test

* Integration tests

* Add changelog entry

* Add integration test for init outside of project

* Fall back to target_options.yml when invalid profile_template.yml is provided

* Use built-in yaml with exception of in init

* Remove oyaml and fix tests

* Update dbt_project.yml in test comparison

* Create the profiles directory if it doesn't exist

* Use safe_load

* Update integration test

Co-authored-by: Jeremy Cohen <[email protected]>
  • Loading branch information
NiallRees and jtcohen6 authored Oct 20, 2021
1 parent 21a7b71 commit 11436fe
Show file tree
Hide file tree
Showing 12 changed files with 683 additions and 83 deletions.
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,12 @@
- Enable `on-run-start` and `on-run-end` hooks for `dbt test`. Add `flags.WHICH` to execution context, representing current task ([#3463](https:/dbt-labs/dbt-core/issues/3463), [#4004](https:/dbt-labs/dbt-core/pull/4004))

### Features

- Normalize global CLI arguments/flags ([#2990](https:/dbt-labs/dbt/issues/2990), [#3839](https:/dbt-labs/dbt/pull/3839))
- Turns on the static parser by default and adds the flag `--no-static-parser` to disable it. ([#3377](https:/dbt-labs/dbt/issues/3377), [#3939](https:/dbt-labs/dbt/pull/3939))
- Generic test FQNs have changed to include the relative path, resource, and column (if applicable) where they are defined. This makes it easier to configure them from the `tests` block in `dbt_project.yml` ([#3259](https:/dbt-labs/dbt/pull/3259), [#3880](https:/dbt-labs/dbt/pull/3880)
- Turn on partial parsing by default ([#3867](https:/dbt-labs/dbt/issues/3867), [#3989](https:/dbt-labs/dbt/issues/3989))
- Add `result:<status>` selectors to automatically rerun failed tests and erroneous models. This makes it easier to rerun failed dbt jobs with a simple selector flag instead of restarting from the beginning or manually running the dbt models in scope. ([#3859](https:/dbt-labs/dbt/issues/3891), [#4017](https:/dbt-labs/dbt/pull/4017))
- `dbt init` is now interactive, generating profiles.yml when run inside existing project ([#3625](https:/dbt-labs/dbt/pull/3625))

### Under the hood
- Fix intermittent errors in partial parsing tests ([#4060](https:/dbt-labs/dbt-core/issues/4060), [#4068](https:/dbt-labs/dbt-core/pull/4068))
Expand All @@ -16,6 +20,7 @@
Contributors:
- [@sungchun12](https:/sungchun12) ([#4017](https:/dbt-labs/dbt/pull/4017))
- [@matt-winkler](https:/matt-winkler) ([#4017](https:/dbt-labs/dbt/pull/4017))
- [@NiallRees](https:/NiallRees) ([#3625](https:/dbt-labs/dbt/pull/3625))

## dbt-core 1.0.0b1 (October 11, 2021)

Expand Down
1 change: 0 additions & 1 deletion core/dbt/clients/yaml_helper.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import dbt.exceptions
from typing import Any, Dict, Optional
import yaml
import yaml.scanner

# the C version is faster, but it doesn't always exist
try:
Expand Down
8 changes: 4 additions & 4 deletions core/dbt/include/starter_project/dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
# Name your project! Project names should contain only lowercase characters
# and underscores. A good package name should reflect your organization's
# name or the intended use of these models
name: 'my_new_project'
name: '{project_name}'
version: '1.0.0'
config-version: 2

# This setting configures which "profile" dbt uses for this project.
profile: 'default'
profile: '{profile_name}'

# These configurations specify where dbt should look for different types of files.
# The `model-paths` config, for example, states that models in this project can be
Expand All @@ -30,9 +30,9 @@ clean-targets: # directories to be removed by `dbt clean`

# In this example config, we tell dbt to build all models in the example/ directory
# as tables. These settings can be overridden in the individual model files
# using the `{{ config(...) }}` macro.
# using the `{{{{ config(...) }}}}` macro.
models:
my_new_project:
{project_name}:
# Config indicated by + and applies to all files under models/example/
example:
+materialized: view
15 changes: 0 additions & 15 deletions core/dbt/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,6 @@ def run_from_args(parsed):

with track_run(task):
results = task.run()

return task, results


Expand Down Expand Up @@ -344,20 +343,6 @@ def _build_init_subparser(subparsers, base_subparser):
Initialize a new DBT project.
'''
)
sub.add_argument(
'project_name',
type=str,
help='''
Name of the new project
''',
)
sub.add_argument(
'--adapter',
type=str,
help='''
Write sample profiles.yml for which adapter
''',
)
sub.set_defaults(cls=init_task.InitTask, which='init', rpc_method=None)
return sub

Expand Down
Loading

0 comments on commit 11436fe

Please sign in to comment.