audit-labs/audit-tools

A collection of scripts, queries, and other goodies you can use in an audit. audit automation compliance evidence scripts

Commit 816d0a519d

816d0a519deced4c6460737f5bf64974dfc5afb6

parent: 96077144af

Unsigned

cmc <hello@cleberg.net> · 2026-07-29 15:55 UTC

revert: remove Azure and Azure DevOps coming-soon placeholders

Reverts PR #18. Azure won't be supported — no way to create/test against an
Azure account — so the coming-soon menu placeholders and the Platform-field
changes they required are removed. Menu is back to GitHub / GitLab / AWS.

Layout: unified · split

tui/README.md +3 −3
@@ -4,9 +4,9 @@ A terminal UI that walks you through running an audit. It presents a platform
4menu, collects connection details and check selection, then runs the existing 4menu, collects connection details and check selection, then runs the existing
5collectors with live progress. 5collectors with live progress.
6 6
7GitHub, GitLab, and AWS are supported. Azure and Azure DevOps are stubbed in the 7GitHub, GitLab, and AWS are supported. Adding a platform is a matter of writing
8menu as *coming soon*. Adding a platform is a matter of writing a runner and a 8a runner and a `Platform` descriptor in `tui/platforms.py` — the screens are
9`Platform` descriptor in `tui/platforms.py` — the screens are platform-agnostic. 9platform-agnostic.
10 10
11| Pick a platform | Choose checks | Watch it run | 11| Pick a platform | Choose checks | Watch it run |
12|---|---|---| 12|---|---|---|
tui/platforms.py +9 −16
@@ -31,15 +31,14 @@ class Field:
31class Platform: 31class Platform:
32 key: str 32 key: str
33 label: str 33 label: str
34 # The fields below drive the audit flow. A disabled ("coming soon") 34 subject: Callable[
35 # placeholder platform needs only key/label/enabled, so they default to 35 [dict], str
36 # empty and are never used while enabled is False. 36 ] # (settings) -> audit subject shown on the run screen
37 subject: Callable[[dict], str] | None = None # (settings) -> run-screen subject 37 fields: list[Field]
38 fields: list[Field] = field(default_factory=list) 38 checks: list[Check]
39 checks: list[Check] = field(default_factory=list) 39 default_selection: list[str]
40 default_selection: list[str] = field(default_factory=list) 40 output_dir: Callable[[dict], str] # (settings) -> path
41 output_dir: Callable[[dict], str] | None = None # (settings) -> path 41 run: Callable[..., object] # (settings, output_dir, selected_keys, on_event)
42 run: Callable[..., object] | None = None # (settings, out, keys, on_event)
43 enabled: bool = True 42 enabled: bool = True
44 note: str = field(default="") 43 note: str = field(default="")
45 44
@@ -184,13 +183,7 @@ AWS = Platform(
184 run=_aws_run, 183 run=_aws_run,
185) 184)
186 185
187# Coming soon — placeholders shown as disabled entries in the menu. Azure is the 186PLATFORMS = [GITHUB, GITLAB, AWS]
188# cloud counterpart to AWS; Azure DevOps is the source-platform counterpart to
189# GitHub/GitLab.
190AZURE = Platform(key="azure", label="Azure", enabled=False)
191AZURE_DEVOPS = Platform(key="azure_devops", label="Azure DevOps", enabled=False)
192
193PLATFORMS = [GITHUB, GITLAB, AWS, AZURE, AZURE_DEVOPS]
194 187
195 188
196def prefill(f: Field) -> str: 189def prefill(f: Field) -> str:
tui/tests/test_app.py −13
@@ -165,16 +165,3 @@ def test_aws_navigation(monkeypatch):
165 assert app.screen.query_one("#menu", Button).disabled is False 165 assert app.screen.query_one("#menu", Button).disabled is False
166 166
167 _run(scenario()) 167 _run(scenario())
168
169
170def test_azure_platforms_coming_soon():
171 async def scenario():
172 app = AuditApp()
173 async with app.run_test(size=(120, 40)) as pilot:
174 await pilot.pause()
175 for key in ("azure", "azure_devops"):
176 btn = app.screen.query_one(f"#{key}", Button)
177 assert btn.disabled is True
178 assert "coming soon" in str(btn.label).lower()
179
180 _run(scenario())