40 lines
1.2 KiB
C#
40 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace ExtensiblePortfolioSite.SDK.Git
|
|
{
|
|
internal static class GitManager
|
|
{
|
|
private static readonly SortedDictionary<String, GitService> Providers = new();
|
|
|
|
public static void Register(String Service, IGitProvider Provider)
|
|
{
|
|
if (Providers.TryGetValue(Service, out GitService? GitService))
|
|
{
|
|
GitService.addProvider(Provider);
|
|
return;
|
|
}
|
|
lock (Providers)
|
|
{
|
|
if (Providers.TryGetValue(Service, out GitService))
|
|
{
|
|
GitService.addProvider(Provider);
|
|
return;
|
|
}
|
|
|
|
GitService = new GitService(Service);
|
|
GitService.addProvider(Provider);
|
|
Providers.Add(Service, GitService);
|
|
}
|
|
}
|
|
|
|
public static void Unregister(String Service, IGitProvider Provider)
|
|
{
|
|
if (Providers.TryGetValue(Service, out GitService? GitService))
|
|
GitService.removeProvider(Provider);
|
|
}
|
|
|
|
public static GitService GetService(String Website) => Providers[Website];
|
|
}
|
|
}
|