You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ee6583a
Browse filesBrowse the repository at this point in the historyBrowse files
Add OwnSharp.Cli: the single ownsharp check command (alpha gate A, #202)
Implements the packaging decision recorded in issue #202: one dotnet
global tool (`OwnSharp.Cli`, command `ownsharp`) that wraps the
existing extractor -> core pipeline into one install, exactly
mirroring what scripts/own-check.sh already does by hand.
- The Roslyn extractor (OwnSharp.Extractor) is pulled in via
ProjectReference, unmodified; `check` invokes its bundled dll as a
child process (`dotnet exec`), the same subprocess shape
own-check.sh already uses.
- The Python core (ownlang/) is vendored as loose *.py content,
unmodified, and unpacked to ~/.ownsharp/core/<version>/ on first
run -- never into the analyzed repo. It runs on the machine's own
Python (OWN_PYTHON env var, else `py -3`/`python3`, >=3.11), with a
fast, actionable, one-line failure (winget/apt/brew per OS) and no
auto-download if none is found.
- CLI flags mirror own-check.sh 1:1 (--format, --severity,
--fail-on-finding, --emit-facts, --legacy, --stats,
--body-throw-edges); the exit-code contract (0/1/>=2, plus 3 for
"no Python") is unchanged from the scripts.
No behaviour changes to the extractor or core -- packaging only, per
the issue's guardrail. own-check.sh/.ps1 and action.yml are untouched.
CI: a new ownsharp-cli-smoke job (matrix: ubuntu-latest +
windows-latest) proves pack -> dotnet tool install --global ->
ownsharp check finds a real leak on a clean runner, gated on a
regression-ceiling timer, plus a separate assertion that the
no-Python path fails fast with the actionable message.
Docs: frontend/roslyn/OwnSharp.Cli/README.md (the tool itself),
updates to alpha-readiness.md gate A, P-013's Scope, and the root
README's local-quickstart paragraph -- all noting honestly that the
package isn't published to nuget.org yet (build-and-install from
source until then).
Copy file name to clipboardExpand all lines: docs/notes/alpha-readiness.md
+12-9Lines changed: 12 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ The bar for "showable": a person can reproduce the wow in ~3 minutes
36
36
37
37
|| Item | Status (2026-06-27) | Gap to close |
38
38
|---|------|--------------------|--------------|
39
-
|**A**|`dotnet tool` one-command CLI | ◑ **partial**— the *extractor* is `PackAsTool` (`ownsharp-extract`, P-013); the core is Python. The delightful `ownsharp check MyApp.sln` single tool isn't packaged. | Wrap extractor+core into one `dotnet tool` (or a self-contained CLI) that takes a `.sln`/dir and prints findings. |
39
+
|**A**|`dotnet tool` one-command CLI | ◑ **mostly built**(issue #202) — `OwnSharp.Cli` wraps extractor+core into one `dotnet tool install` → `ownsharp check <path\|.sln>`, proven install→check→findings on a clean ubuntu/windows runner in CI (`ownsharp-cli-smoke`). See [`frontend/roslyn/OwnSharp.Cli/README.md`](../../frontend/roslyn/OwnSharp.Cli/README.md). | Not published to nuget.org yet — today it's build-and-install-from-source only. Publishing (+ a real version scheme beyond `0.1.0`) is the remaining step. |
40
40
|**B**| GitHub Action | ✅ **built** — `action.yml`: `path`/`severity`/`format` (`github` / `msbuild` / `human` / `sarif`), purple shield branding. Matches the "stupidly simple YAML" bar. | Publish to Marketplace; pin the 6-line usage in the README. |
|**D**| 5 core diagnostics | ✅ **built, well past** — OWN001/002/003, OWN014, DI001–005, POOL001–005, WPF001–005 (catalog). The comment's `SUB001/SUB002/TMR001/DISP001/DI001` all exist *semantically*; the `SUB/TMR/DISP` catalog rename is the deferred consolidation item, not new work. | (naming only) land the catalog rename with the OwnIR-v1/profile-label work. |
@@ -54,17 +54,19 @@ suppression → "why not Sonar/CodeQL"), every step of that path now exists.
54
54
55
55
## Honest verdict
56
56
57
-
**The engine is past alpha on *capability* (D/E strong, B/C built). F/G and the
58
-
front door have since closed too — the remaining packaging gap is narrower:**
57
+
**The engine is past alpha on *capability* (D/E strong, B/C built). F/G, the
58
+
front door, and now A have all closed too — what's left is publishing, not
59
+
building:**
59
60
60
-
1. a single `ownsharp check MyApp.sln` tool (**A**) — still open;
61
+
1.~~a single `ownsharp check MyApp.sln` tool (**A**)~~ — **built**, not yet published to nuget.org;
0 commit comments