summaryrefslogtreecommitdiff
path: root/src/marlin.core/functional/IGitCredential.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/marlin.core/functional/IGitCredential.cs')
-rw-r--r--src/marlin.core/functional/IGitCredential.cs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/marlin.core/functional/IGitCredential.cs b/src/marlin.core/functional/IGitCredential.cs
new file mode 100644
index 0000000..cf96804
--- /dev/null
+++ b/src/marlin.core/functional/IGitCredential.cs
@@ -0,0 +1,18 @@
+namespace marlin.core.functional;
+
+using System.Diagnostics;
+
+/// <summary>
+/// Supplies whatever git needs to authenticate a single invocation — an HTTP header,
+/// an SSH key, etc. Credentials are applied per-process via environment variables only;
+/// nothing is written to git config, argv, or any credential store.
+/// </summary>
+public interface IGitCredential
+{
+ /// <summary>
+ /// Configures <paramref name="psi"/> so the git process it starts can authenticate.
+ /// Returns a disposable that tears down anything ephemeral (e.g. a temp key file)
+ /// once that process has exited.
+ /// </summary>
+ Task<IAsyncDisposable> ApplyAsync(ProcessStartInfo psi);
+}