|
6 | 6 |
|
7 | 7 | import pydantic
|
8 | 8 | import rich
|
9 |
| -from rich.prompt import Confirm |
| 9 | +from rich.prompt import Confirm, Prompt |
10 | 10 |
|
11 | 11 | from . import connect_to_table, diff_tables, Algorithm
|
12 | 12 | from .cloud import DatafoldAPI, TCloudApiDataDiff, TCloudApiOrgMeta, get_or_create_data_source
|
13 | 13 | from .dbt_parser import DbtParser, PROJECT_FILE
|
14 | 14 | from .tracking import (
|
| 15 | + bool_ask_for_email, |
| 16 | + create_email_signup_event_json, |
15 | 17 | set_entrypoint_name,
|
16 | 18 | set_dbt_user_id,
|
17 | 19 | set_dbt_version,
|
@@ -63,9 +65,7 @@ def dbt_diff(
|
63 | 65 | config_prod_schema = datadiff_variables.get("prod_schema")
|
64 | 66 | config_prod_custom_schema = datadiff_variables.get("prod_custom_schema")
|
65 | 67 | datasource_id = datadiff_variables.get("datasource_id")
|
66 |
| - set_dbt_user_id(dbt_parser.dbt_user_id) |
67 |
| - set_dbt_version(dbt_parser.dbt_version) |
68 |
| - set_dbt_project_id(dbt_parser.dbt_project_id) |
| 68 | + _initialize_events(dbt_parser.dbt_user_id, dbt_parser.dbt_version, dbt_parser.dbt_project_id) |
69 | 69 |
|
70 | 70 | if datadiff_variables.get("custom_schemas") is not None:
|
71 | 71 | logger.warning(
|
@@ -389,3 +389,23 @@ def _cloud_diff(diff_vars: TDiffVars, datasource_id: int, api: DatafoldAPI, org_
|
389 | 389 |
|
390 | 390 | def _diff_output_base(dev_path: str, prod_path: str) -> str:
|
391 | 391 | return f"\n[green]{prod_path} <> {dev_path}[/] \n"
|
| 392 | + |
| 393 | + |
| 394 | +def _initialize_events(dbt_user_id: Optional[str], dbt_version: Optional[str], dbt_project_id: Optional[str]) -> None: |
| 395 | + set_dbt_user_id(dbt_user_id) |
| 396 | + set_dbt_version(dbt_version) |
| 397 | + set_dbt_project_id(dbt_project_id) |
| 398 | + _email_signup() |
| 399 | + |
| 400 | + |
| 401 | +def _email_signup() -> None: |
| 402 | + if bool_ask_for_email(): |
| 403 | + email_input = Prompt.ask( |
| 404 | + "\nWould you like to be notified when a new data-diff version is available?\n\nEnter email or leave blank to opt out (we'll only ask once).\n", |
| 405 | + default="", |
| 406 | + show_default=False, |
| 407 | + ) |
| 408 | + email = email_input.strip() |
| 409 | + if email: |
| 410 | + event_json = create_email_signup_event_json(email) |
| 411 | + run_as_daemon(send_event_json, event_json) |
0 commit comments