using System; using System.Collections.Generic; namespace ExtensiblePortfolioSite.SDK.Git { internal static class GitManager { private static readonly SortedDictionary 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]; } }