tgstation-server 5.12.7
The /tg/station 13 server suite
Loading...
Searching...
No Matches
RemoteDeploymentManagerFactory.cs
Go to the documentation of this file.
1using System;
2
3using Microsoft.Extensions.Logging;
4
9
11{
14 {
19
24
29
33 readonly ILoggerFactory loggerFactory;
34
38 readonly ILogger<RemoteDeploymentManagerFactory> logger;
39
52 ILoggerFactory loggerFactory,
53 ILogger<RemoteDeploymentManagerFactory> logger)
54 {
55 this.databaseContextFactory = databaseContextFactory ?? throw new ArgumentNullException(nameof(databaseContextFactory));
56 this.gitHubServiceFactory = gitHubServiceFactory ?? throw new ArgumentNullException(nameof(gitHubServiceFactory));
57 this.gitRemoteFeaturesFactory = gitRemoteFeaturesFactory ?? throw new ArgumentNullException(nameof(gitRemoteFeaturesFactory));
58 this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
59 this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
60 }
61
63 public IRemoteDeploymentManager CreateRemoteDeploymentManager(Api.Models.Instance metadata, RemoteGitProvider remoteGitProvider)
64 {
65 ArgumentNullException.ThrowIfNull(metadata);
66
67 logger.LogTrace("Creating remote deployment manager for remote git provider {remoteGitProvider}...", remoteGitProvider);
68 return remoteGitProvider switch
69 {
70 RemoteGitProvider.GitHub => new GitHubRemoteDeploymentManager(
74 metadata),
75 RemoteGitProvider.GitLab => new GitLabRemoteDeploymentManager(
77 metadata),
78 RemoteGitProvider.Unknown => new NoOpRemoteDeploymentManager(),
79 _ => throw new InvalidOperationException($"Invalid RemoteGitProvider: {remoteGitProvider}!"),
80 };
81 }
82
84 public IRemoteDeploymentManager CreateRemoteDeploymentManager(Api.Models.Instance metadata, Models.CompileJob compileJob)
85 {
86 ArgumentNullException.ThrowIfNull(compileJob);
87
88 RemoteGitProvider remoteGitProvider;
89
90 // Pre 4.7.X
91 if (compileJob.RepositoryOrigin == null)
92 remoteGitProvider = RemoteGitProvider.Unknown;
93 else
95 new Uri(
96 compileJob.RepositoryOrigin));
97
98 return CreateRemoteDeploymentManager(metadata, remoteGitProvider);
99 }
100 }
101}
RemoteDeploymentManagerFactory(IDatabaseContextFactory databaseContextFactory, IGitHubServiceFactory gitHubServiceFactory, IGitRemoteFeaturesFactory gitRemoteFeaturesFactory, ILoggerFactory loggerFactory, ILogger< RemoteDeploymentManagerFactory > logger)
Initializes a new instance of the RemoteDeploymentManagerFactory class.
readonly ILogger< RemoteDeploymentManagerFactory > logger
The IDatabaseContextFactory for the RemoteDeploymentManagerFactory.
readonly IGitRemoteFeaturesFactory gitRemoteFeaturesFactory
The IGitRemoteFeaturesFactory for the RemoteDeploymentManagerFactory.
readonly IGitHubServiceFactory gitHubServiceFactory
The IDatabaseContextFactory for the RemoteDeploymentManagerFactory.
readonly IDatabaseContextFactory databaseContextFactory
The IDatabaseContextFactory for the RemoteDeploymentManagerFactory.
IRemoteDeploymentManager CreateRemoteDeploymentManager(Api.Models.Instance metadata, Models.CompileJob compileJob)
Create a IRemoteDeploymentManager for a given compileJob . A new IRemoteDeploymentManager.
readonly ILoggerFactory loggerFactory
The IDatabaseContextFactory for the RemoteDeploymentManagerFactory.
IRemoteDeploymentManager CreateRemoteDeploymentManager(Api.Models.Instance metadata, RemoteGitProvider remoteGitProvider)
Creates a IRemoteDeploymentManager for a given remoteGitProvider . A new IRemoteDeploymentManager bas...
RemoteGitProvider ParseRemoteGitProviderFromOrigin(Uri origin)
Gets the RemoteGitProvider for a given origin .
Factory for scoping usage of IDatabaseContexts. Meant for use by Components.
RemoteGitProvider
Indicates the remote git host.