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.
Files changed (122) hide show
  1. {kctl_react-0.6.3 → kctl_react-0.7.0}/PKG-INFO +1 -1
  2. {kctl_react-0.6.3 → kctl_react-0.7.0}/pyproject.toml +1 -1
  3. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/__init__.py +1 -1
  4. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/cli.py +5 -0
  5. kctl_react-0.7.0/tests/test_standard.py +88 -0
  6. {kctl_react-0.6.3 → kctl_react-0.7.0}/.gitignore +0 -0
  7. {kctl_react-0.6.3 → kctl_react-0.7.0}/README.md +0 -0
  8. {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/.gitignore +0 -0
  9. {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/README.md +0 -0
  10. {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/fixtures/auth.ts +0 -0
  11. {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/package.json +0 -0
  12. {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/playwright.config.ts +0 -0
  13. {kctl_react-0.6.3 → kctl_react-0.7.0}/e2e/tests/smoke/connectivity.spec.ts +0 -0
  14. {kctl_react-0.6.3 → kctl_react-0.7.0}/skills/react-dev/SKILL.md +0 -0
  15. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/__main__.py +0 -0
  16. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/__init__.py +0 -0
  17. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/a11y.py +0 -0
  18. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/affected.py +0 -0
  19. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/apps.py +0 -0
  20. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/build.py +0 -0
  21. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/bundle_cmd.py +0 -0
  22. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/cap.py +0 -0
  23. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/clean.py +0 -0
  24. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/codegen.py +0 -0
  25. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/compliance.py +0 -0
  26. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/config_cmd.py +0 -0
  27. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/dashboard.py +0 -0
  28. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/deploy.py +0 -0
  29. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/deps.py +0 -0
  30. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/dev.py +0 -0
  31. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/docker_cmd.py +0 -0
  32. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/doctor.py +0 -0
  33. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/e2e.py +0 -0
  34. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/env.py +0 -0
  35. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/i18n.py +0 -0
  36. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/lint.py +0 -0
  37. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/maintenance.py +0 -0
  38. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/monitor_cmd.py +0 -0
  39. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/observe.py +0 -0
  40. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/packages.py +0 -0
  41. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/perf.py +0 -0
  42. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/pipeline.py +0 -0
  43. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/pwa.py +0 -0
  44. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/scaffold.py +0 -0
  45. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/security.py +0 -0
  46. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/skill_cmd.py +0 -0
  47. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/state.py +0 -0
  48. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/test_cmd.py +0 -0
  49. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/commands/ui_audit.py +0 -0
  50. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/__init__.py +0 -0
  51. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/analyzers.py +0 -0
  52. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/callbacks.py +0 -0
  53. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/__init__.py +0 -0
  54. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/__init__.py +0 -0
  55. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/__init__.py +0 -0
  56. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/endpoints.py +0 -0
  57. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/envelope.py +0 -0
  58. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/naming.py +0 -0
  59. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/params.py +0 -0
  60. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/requests.py +0 -0
  61. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/checks/types.py +0 -0
  62. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/hooks.py +0 -0
  63. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/matcher.py +0 -0
  64. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_check/schema.py +0 -0
  65. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/__init__.py +0 -0
  66. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/__init__.py +0 -0
  67. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/auth.py +0 -0
  68. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/reachable.py +0 -0
  69. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/response.py +0 -0
  70. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/checks/timing.py +0 -0
  71. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/client.py +0 -0
  72. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/api_health/sampler.py +0 -0
  73. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/__init__.py +0 -0
  74. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/api.py +0 -0
  75. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/codegen.py +0 -0
  76. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/darkmode.py +0 -0
  77. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/errors.py +0 -0
  78. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/features.py +0 -0
  79. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/i18n_check.py +0 -0
  80. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/imports.py +0 -0
  81. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/navigation.py +0 -0
  82. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/practices.py +0 -0
  83. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/providers.py +0 -0
  84. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/pwa.py +0 -0
  85. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/responsive.py +0 -0
  86. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/scripts.py +0 -0
  87. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/shadcn.py +0 -0
  88. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/structure.py +0 -0
  89. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/testing.py +0 -0
  90. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/theme.py +0 -0
  91. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/ui_standard.py +0 -0
  92. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/checks/vite.py +0 -0
  93. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/engine.py +0 -0
  94. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/exceptions_map.py +0 -0
  95. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/__init__.py +0 -0
  96. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/codegen_fix.py +0 -0
  97. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/i18n_fix.py +0 -0
  98. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/imports_fix.py +0 -0
  99. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/structure_fix.py +0 -0
  100. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/fixes/theme_fix.py +0 -0
  101. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/compliance/models.py +0 -0
  102. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/config.py +0 -0
  103. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/discovery.py +0 -0
  104. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/exceptions.py +0 -0
  105. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/git.py +0 -0
  106. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/history.py +0 -0
  107. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/output.py +0 -0
  108. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/plugins.py +0 -0
  109. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/core/runner.py +0 -0
  110. {kctl_react-0.6.3 → kctl_react-0.7.0}/src/kctl_react/py.typed +0 -0
  111. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/conftest.py +0 -0
  112. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_analyzers.py +0 -0
  113. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_api_check.py +0 -0
  114. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_api_health.py +0 -0
  115. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_cap.py +0 -0
  116. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_commands.py +0 -0
  117. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_compliance.py +0 -0
  118. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_config.py +0 -0
  119. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_exceptions.py +0 -0
  120. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_output.py +0 -0
  121. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_pipeline.py +0 -0
  122. {kctl_react-0.6.3 → kctl_react-0.7.0}/tests/test_runner.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kctl-react
3
- Version: 0.6.3
3
+ Version: 0.7.0
4
4
  Summary: Kodemeio React CLI — manage the kodemeio-react monorepo
5
5
  Requires-Python: >=3.12
6
6
  Requires-Dist: httpx>=0.28.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "kctl-react"
7
- version = "0.6.3"
7
+ version = "0.7.0"
8
8
  description = "Kodemeio React CLI — manage the kodemeio-react monorepo"
9
9
  requires-python = ">=3.12"
10
10
  dependencies = [
@@ -1,3 +1,3 @@
1
1
  """kctl-react: Kodemeio React Monorepo CLI."""
2
2
 
3
- __version__ = "0.6.3"
3
+ __version__ = "0.7.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