kctl-react 0.6.3__tar.gz → 0.7.0__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.
- {kctl_react-0.6.3 → kctl_react-0.7.0}/PKG-INFO +1 -1
- {kctl_react-0.6.3 → kctl_react-0.7.0}/pyproject.toml +1 -1
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/__init__.py +1 -1
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/cli.py +5 -0
- kctl_react-0.7.0/tests/test_standard.py +88 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/.gitignore +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/README.md +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/.gitignore +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/README.md +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/fixtures/auth.ts +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/package.json +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/playwright.config.ts +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/tests/smoke/connectivity.spec.ts +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/skills/react-dev/SKILL.md +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/__main__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/a11y.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/affected.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/apps.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/build.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/bundle_cmd.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/cap.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/clean.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/codegen.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/compliance.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/config_cmd.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/dashboard.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/deploy.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/deps.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/dev.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/docker_cmd.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/doctor.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/e2e.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/env.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/i18n.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/lint.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/maintenance.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/monitor_cmd.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/observe.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/packages.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/perf.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/pipeline.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/pwa.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/scaffold.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/security.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/skill_cmd.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/state.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/test_cmd.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/ui_audit.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/analyzers.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/callbacks.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/endpoints.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/envelope.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/naming.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/params.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/requests.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/types.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/hooks.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/matcher.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/schema.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/auth.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/reachable.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/response.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/timing.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/client.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/sampler.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/api.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/codegen.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/darkmode.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/errors.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/features.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/i18n_check.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/imports.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/navigation.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/practices.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/providers.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/pwa.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/responsive.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/scripts.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/shadcn.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/structure.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/testing.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/theme.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/ui_standard.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/vite.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/engine.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/exceptions_map.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/__init__.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/codegen_fix.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/i18n_fix.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/imports_fix.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/structure_fix.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/theme_fix.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/models.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/config.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/discovery.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/exceptions.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/git.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/history.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/output.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/plugins.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/runner.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/py.typed +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/conftest.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_analyzers.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_api_check.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_api_health.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_cap.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_commands.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_compliance.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_config.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_exceptions.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_output.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_pipeline.py +0 -0
- {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_runner.py +0 -0
|
@@ -7,6 +7,7 @@ from typing import Annotated
|
|
|
7
7
|
|
|
8
8
|
import typer
|
|
9
9
|
from kctl_lib import KctlError, handle_cli_error
|
|
10
|
+
from kctl_lib import cli_entrypoint, register_introspection_commands
|
|
10
11
|
|
|
11
12
|
from kctl_react import __version__
|
|
12
13
|
from kctl_react.commands.a11y import app as a11y_app
|
|
@@ -189,6 +190,10 @@ def completions(
|
|
|
189
190
|
typer.echo(script)
|
|
190
191
|
|
|
191
192
|
|
|
193
|
+
# Wrap app so KctlError subclasses surface as clean user-facing messages.
|
|
194
|
+
app = cli_entrypoint(app)
|
|
195
|
+
register_introspection_commands(app)
|
|
196
|
+
|
|
192
197
|
def _run() -> None:
|
|
193
198
|
"""Entry point with error handling."""
|
|
194
199
|
try:
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"""Standard CLI smoke/config/completions tests for kctl-react."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
from typer.testing import CliRunner
|
|
7
|
+
|
|
8
|
+
from kctl_react.cli import app
|
|
9
|
+
|
|
10
|
+
runner = CliRunner()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@pytest.fixture(autouse=True)
|
|
14
|
+
def _isolate(tmp_path, monkeypatch):
|
|
15
|
+
config_dir = tmp_path / "config"
|
|
16
|
+
config_dir.mkdir()
|
|
17
|
+
config_file = config_dir / "config.yaml"
|
|
18
|
+
monkeypatch.setattr("kctl_lib.config.CONFIG_DIR", config_dir, raising=False)
|
|
19
|
+
monkeypatch.setattr("kctl_lib.config.CONFIG_FILE", config_file, raising=False)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class TestVersion:
|
|
23
|
+
def test_version_long(self) -> None:
|
|
24
|
+
result = runner.invoke(app, ["--version"])
|
|
25
|
+
assert result.exit_code == 0
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class TestHelp:
|
|
29
|
+
def test_top_level_help(self) -> None:
|
|
30
|
+
result = runner.invoke(app, ["--help"])
|
|
31
|
+
assert result.exit_code == 0
|
|
32
|
+
assert "Usage:" in result.output
|
|
33
|
+
|
|
34
|
+
@pytest.mark.parametrize(
|
|
35
|
+
"group",
|
|
36
|
+
[
|
|
37
|
+
"affected",
|
|
38
|
+
"apps",
|
|
39
|
+
"build",
|
|
40
|
+
"bundle",
|
|
41
|
+
"cap",
|
|
42
|
+
"clean",
|
|
43
|
+
"codegen",
|
|
44
|
+
"compliance",
|
|
45
|
+
"config",
|
|
46
|
+
"dashboard",
|
|
47
|
+
"deploy",
|
|
48
|
+
"deps",
|
|
49
|
+
"dev",
|
|
50
|
+
"docker",
|
|
51
|
+
"doctor",
|
|
52
|
+
"env",
|
|
53
|
+
"info",
|
|
54
|
+
"lint",
|
|
55
|
+
"maintenance",
|
|
56
|
+
"monitor",
|
|
57
|
+
"observe",
|
|
58
|
+
"packages",
|
|
59
|
+
"perf",
|
|
60
|
+
"pipeline",
|
|
61
|
+
"pwa",
|
|
62
|
+
"scaffold",
|
|
63
|
+
"security",
|
|
64
|
+
"state",
|
|
65
|
+
"test",
|
|
66
|
+
"ui",
|
|
67
|
+
],
|
|
68
|
+
)
|
|
69
|
+
def test_group_help(self, group: str) -> None:
|
|
70
|
+
result = runner.invoke(app, [group, "--help"])
|
|
71
|
+
assert result.exit_code == 0, result.output
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class TestConfigSubcommands:
|
|
75
|
+
def test_config_help(self) -> None:
|
|
76
|
+
result = runner.invoke(app, ["config", "--help"])
|
|
77
|
+
assert result.exit_code == 0
|
|
78
|
+
|
|
79
|
+
def test_config_show(self) -> None:
|
|
80
|
+
result = runner.invoke(app, ["config", "show"])
|
|
81
|
+
assert result.exit_code in (0, 1, 2)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
class TestCompletions:
|
|
85
|
+
@pytest.mark.parametrize("shell", ["bash", "zsh", "fish"])
|
|
86
|
+
def test_completions(self, shell: str) -> None:
|
|
87
|
+
result = runner.invoke(app, ["completions", shell])
|
|
88
|
+
assert result.exit_code == 0, result.output
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/__init__.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/endpoints.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/envelope.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/naming.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/params.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/requests.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/__init__.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/auth.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/reachable.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/response.py
RENAMED
|
File without changes
|
{kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/timing.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|