diff --git a/SgfDevs/Dev/FixedServerRoleAccessor.cs b/SgfDevs/Dev/FixedServerRoleAccessor.cs new file mode 100644 index 0000000..c8a8d75 --- /dev/null +++ b/SgfDevs/Dev/FixedServerRoleAccessor.cs @@ -0,0 +1,8 @@ +using Umbraco.Cms.Core.Sync; + +namespace SgfDevs.Dev; + +internal sealed class FixedServerRoleAccessor(ServerRole serverRole) : IServerRoleAccessor +{ + public ServerRole CurrentServerRole { get; } = serverRole; +} diff --git a/SgfDevs/Program.cs b/SgfDevs/Program.cs index ff9b4e0..0edc27b 100644 --- a/SgfDevs/Program.cs +++ b/SgfDevs/Program.cs @@ -17,6 +17,8 @@ using SgfDevs.HealthChecks; using SGFDevs.Dev; using Umbraco.Cms.Core.DependencyInjection; +using Umbraco.Cms.Core.Sync; +using Umbraco.Cms.Infrastructure.DependencyInjection; using Umbraco.Cms.Persistence.Sqlite; using Umbraco.Extensions; @@ -47,6 +49,17 @@ }); } +var serverRoleName = builder.Configuration["SGFDevs:ServerRole"] ?? nameof(ServerRole.Single); +if (!Enum.TryParse(serverRoleName, false, out ServerRole serverRole) || + serverRole is ServerRole.Unknown || + !Enum.IsDefined(serverRole)) +{ + throw new InvalidOperationException( + $"Unsupported SGFDevs:ServerRole value '{serverRoleName}'. " + + $"Expected {nameof(ServerRole.Single)}, {nameof(ServerRole.SchedulingPublisher)}, or {nameof(ServerRole.Subscriber)}."); +} + +umbracoBuilder.SetServerRegistrar(new FixedServerRoleAccessor(serverRole)); umbracoBuilder.Build(); builder.Services.AddHealthChecks()