diff --git a/.github/workflows/test-csharp.yml b/.github/workflows/test-csharp.yml
index cd725f6..c669fe9 100644
--- a/.github/workflows/test-csharp.yml
+++ b/.github/workflows/test-csharp.yml
@@ -1,6 +1,7 @@
name: bindings/csharp
on:
+ workflow_dispatch:
push:
branches: [ "main" ]
pull_request:
@@ -9,6 +10,9 @@ on:
# Run at 8:00 AM every day
- cron: "0 8 * * *"
+env:
+ VersionSuffix: ${{ github.event_name == 'workflow_dispatch' && 'manualtrigger' || null }}
+
jobs:
build-ffi:
name: 'Build Regorus FFI: (${{ matrix.runtime.target }})'
diff --git a/bindings/csharp/README.md b/bindings/csharp/README.md
new file mode 100644
index 0000000..615ce8f
--- /dev/null
+++ b/bindings/csharp/README.md
@@ -0,0 +1,32 @@
+# Regorus CSharp
+
+**Regorus** is
+
+ - *Rego*-*Rus(t)* - A fast, light-weight [Rego](https://www.openpolicyagent.org/docs/latest/policy-language/)
+ interpreter written in Rust.
+ - *Rigorous* - A rigorous enforcer of well-defined Rego semantics.
+
+See main [Regorus page](https://github.com/microsoft/regorus) for more details about the project.
+
+# Building
+
+## Github Actions
+
+The simplest way to build a Nuget for Regorus' C# bindings is to use Github Actions. The action to do so is named `bindings/csharp` and is defined in `.github/workflows/test-csharp.yml`.
+
+There are two ways to trigger a Nuget build.
+1. Runs are triggered automatically whenever a push or pull request is made to the `main` branch.
+2. A run can be triggered manually by navigating to the action in the Github UI and clicking `Run workflow`. This option allows you to generate a Nuget for any branch, which is useful when testing the integration of in-progress changes to Regorus with other projects. Nuget files that are generated via this flow will have a `manualtrigger` suffix appended to their version number, making it easy to distinguish them from Nugets generated using the `main` branch.
+
+
+Once the workflow run completes, the generated Nuget can be downloaded by following these steps:
+1. Open the run.
+2. Click on `Build Regorus nuget` on the left.
+3. Expand the `Upload Regorus nuget` step.
+4. Click the `Artifact download URL` link at the bottom.
+5. Save and extract the downloaded zip file to find the `.nupkg` file.
+
+
+## Local
+
+TODO
diff --git a/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj b/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj
index 8cd9812..a124fcb 100644
--- a/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj
+++ b/bindings/csharp/Regorus.Tests/Regorus.Tests.csproj
@@ -7,6 +7,11 @@
true
true
+
+
+
+ -$(VersionSuffix)
+
@@ -17,6 +22,6 @@
-
+
\ No newline at end of file
diff --git a/bindings/csharp/docs/images/readme/downloadnuget.png b/bindings/csharp/docs/images/readme/downloadnuget.png
new file mode 100644
index 0000000..5c5cad2
Binary files /dev/null and b/bindings/csharp/docs/images/readme/downloadnuget.png differ
diff --git a/bindings/csharp/docs/images/readme/manuallytriggeringrun.png b/bindings/csharp/docs/images/readme/manuallytriggeringrun.png
new file mode 100644
index 0000000..9cacc27
Binary files /dev/null and b/bindings/csharp/docs/images/readme/manuallytriggeringrun.png differ