validio-cli 10.0.0__tar.gz → 10.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {validio_cli-10.0.0 → validio_cli-10.0.3}/PKG-INFO +1 -1
- {validio_cli-10.0.0 → validio_cli-10.0.3}/pyproject.toml +1 -1
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/__init__.py +30 -3
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/code.py +3 -3
- {validio_cli-10.0.0 → validio_cli-10.0.3}/README_PUBLIC.md +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/channels.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/config.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/credentials.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/dbt.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/filters.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/incidents.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/integrations.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/metrics.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/namespaces.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/notification_rules.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/resources.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/segmentations.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/segments.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/sources.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/users.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/validators.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/entities/windows.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/bin/main.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/components.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/metadata.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/namespace.py +0 -0
- {validio_cli-10.0.0 → validio_cli-10.0.3}/validio_cli/schema.py +0 -0
|
@@ -11,6 +11,7 @@ from pathlib import Path
|
|
|
11
11
|
from types import EllipsisType
|
|
12
12
|
from typing import Any, TypeVar
|
|
13
13
|
|
|
14
|
+
import click
|
|
14
15
|
import typer
|
|
15
16
|
from camel_converter import to_snake
|
|
16
17
|
from tabulate import tabulate
|
|
@@ -29,9 +30,12 @@ T = TypeVar("T", bound="OutputSettings")
|
|
|
29
30
|
DEFAULT_NAMESPACE: str = "default"
|
|
30
31
|
|
|
31
32
|
# User-Agent sent for all CLI requests. We report both the CLI version and the
|
|
32
|
-
# SDK version it builds on.
|
|
33
|
-
# tell IaC traffic apart from direct SDK usage and see which versions are in use.
|
|
33
|
+
# SDK version it builds on.
|
|
34
34
|
CLI_USER_AGENT = f"validio-cli@{cli_version()} {SDK_USER_AGENT}"
|
|
35
|
+
# Header reporting the CLI command (e.g. `channels get`)
|
|
36
|
+
CLI_COMMAND_HEADER = "x-validio-cli-command"
|
|
37
|
+
# Header flagging IaC operations (`validio code` plan/apply/import).
|
|
38
|
+
IAC_HEADER = "x-validio-iac"
|
|
35
39
|
|
|
36
40
|
|
|
37
41
|
class OutputFormat(str, Enum):
|
|
@@ -97,12 +101,35 @@ class AsyncTyper(typer.Typer):
|
|
|
97
101
|
return decorator
|
|
98
102
|
|
|
99
103
|
|
|
104
|
+
def _cli_headers(iac: bool = False) -> dict[str, str]:
|
|
105
|
+
"""Build the CLI headers for an outgoing request.
|
|
106
|
+
|
|
107
|
+
:param iac: Whether the request originates from an IaC operation.
|
|
108
|
+
"""
|
|
109
|
+
headers: dict[str, str] = {}
|
|
110
|
+
|
|
111
|
+
ctx = click.get_current_context(silent=True)
|
|
112
|
+
if ctx is not None:
|
|
113
|
+
# `command_path` is e.g. "validio channels get",
|
|
114
|
+
# drop the program name to get the command itself.
|
|
115
|
+
command = " ".join(ctx.command_path.split()[1:])
|
|
116
|
+
if command:
|
|
117
|
+
headers[CLI_COMMAND_HEADER] = command
|
|
118
|
+
|
|
119
|
+
if iac:
|
|
120
|
+
headers[IAC_HEADER] = "true"
|
|
121
|
+
|
|
122
|
+
return headers
|
|
123
|
+
|
|
124
|
+
|
|
100
125
|
def get_client(
|
|
101
126
|
config_dir: str = ConfigDir,
|
|
102
127
|
user_agent: str = CLI_USER_AGENT,
|
|
128
|
+
iac: bool = False,
|
|
103
129
|
) -> tuple[APIClient, ValidioConfig]:
|
|
104
130
|
cfg = Config(Path(config_dir)).read()
|
|
105
|
-
|
|
131
|
+
headers = _cli_headers(iac=iac)
|
|
132
|
+
return APIClient(config=cfg, user_agent=user_agent, headers=headers), cfg
|
|
106
133
|
|
|
107
134
|
|
|
108
135
|
@dataclass
|
|
@@ -188,7 +188,7 @@ async def plan(
|
|
|
188
188
|
progress: bool = show_progress_option,
|
|
189
189
|
) -> None:
|
|
190
190
|
dir_path = directory_or_default(directory)
|
|
191
|
-
client, _ = get_client(config_dir)
|
|
191
|
+
client, _ = get_client(config_dir, iac=True)
|
|
192
192
|
|
|
193
193
|
schema_reinference = create_source_schema_reinference(
|
|
194
194
|
update_schema, update_all_schemas
|
|
@@ -258,7 +258,7 @@ async def apply(
|
|
|
258
258
|
),
|
|
259
259
|
) -> None:
|
|
260
260
|
dir_path = directory_or_default(directory)
|
|
261
|
-
client, _ = get_client(config_dir)
|
|
261
|
+
client, _ = get_client(config_dir, iac=True)
|
|
262
262
|
|
|
263
263
|
schema_reinference = create_source_schema_reinference(
|
|
264
264
|
update_schema, update_all_schemas
|
|
@@ -374,7 +374,7 @@ async def _import(
|
|
|
374
374
|
)
|
|
375
375
|
|
|
376
376
|
dir_path = directory_or_default(directory)
|
|
377
|
-
client, _ = get_client(config_dir)
|
|
377
|
+
client, _ = get_client(config_dir, iac=True)
|
|
378
378
|
namespace = get_namespace(dir_path)
|
|
379
379
|
|
|
380
380
|
if import_namespace:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|