Skip to content

Feat/dotnet install#220

Open
Manuel-Technologies wants to merge 2 commits intocalchiwo:mainfrom
Manuel-Technologies:feat/dotnet-install
Open

Feat/dotnet install#220
Manuel-Technologies wants to merge 2 commits intocalchiwo:mainfrom
Manuel-Technologies:feat/dotnet-install

Conversation

@Manuel-Technologies
Copy link
Copy Markdown

PR: Add .NET Global Tool Distribution Support

Summary

This PR adds .NET global tool support for ExplainThisRepo so users can install and run the CLI with dotnet tool install -g ExplainThisRepo.

The contribution keeps the existing architecture intact:

  • Python remains the source of truth for core logic
  • Native binaries remain the executable payload
  • .NET acts as a thin launcher and distribution path

Why

ExplainThisRepo already supports:

  • pip for the Python package
  • npm for a prebuilt binary distribution
  • standalone downloadable binaries

This PR adds a first-class installation path for .NET users without moving business logic into C#.

That means:

  • easier adoption for developers already using the .NET toolchain
  • a familiar global install workflow for C# and .NET users
  • no duplication of repository-analysis logic outside the Python core

What Changed

1. Added a C# launcher

The launcher in dotnet_version/Program.cs:

  • detects the current OS and architecture
  • resolves the bundled native binary path
  • forwards all CLI arguments unchanged
  • returns the wrapped process exit code

2. Added Make targets for .NET packaging

The Makefile now includes:

  • build-dotnet
  • pack-dotnet

It also cleans generated .NET build artifacts during make clean.

3. Updated installation documentation

The README.md now documents .NET Tool installation as an official install option.

Design Notes

This PR intentionally does not move application logic into .NET.

The C# layer is only a launcher. It mirrors the role already played by the Node distribution path:

  • no repository analysis
  • no prompt construction
  • no LLM provider logic
  • no config ownership

This keeps the project aligned with the contribution guidelines and current architecture.

How To Test

Local verification

Build the .NET package:

make build-dotnet
make pack-dotnet

Run the launcher after packaging and verify it forwards arguments correctly:

explainthisrepo --help
explainthisrepo --doctor
explainthisrepo facebook/react

Expected behavior

  • the command resolves the platform-specific bundled binary
  • arguments pass through unchanged
  • exit codes match the native executable
  • unsupported platforms fail with a clear error

Reviewer Notes

  • This change is additive and distribution-focused.
  • The Python core remains the product implementation.
  • The main merge conflict encountered while updating this branch was in Makefile, where upstream cleanup/build changes were combined with the new .NET targets.

Files of Interest

  • dotnet_version/Program.cs
  • dotnet_version/ExplainThisRepo.csproj
  • Makefile
  • README.md
  • .github/workflows/release-binaries.yml
  • .gitignore

Suggested PR Body

## Summary
- add .NET global tool distribution support via a thin C# launcher
- add Make targets for .NET build and pack flows
- document .NET installation in the README

## Why
- provide a native install path for .NET users
- keep Python as the core implementation while expanding distribution options

## How to test
- run `make build-dotnet`
- run `make pack-dotnet`
- verify the installed command forwards args and returns the wrapped binary exit code

## Notes
- this PR keeps all business logic in Python
- the .NET layer is launcher-only

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 19, 2026

@Manuel-Technologies is attempting to deploy a commit to the calebwodi Team on Vercel.

A member of the Team first needs to authorize it.

@calchiwo calchiwo self-requested a review April 20, 2026 00:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant