This repository has been archived on 2023-02-02. You can view files and clone it, but cannot push or open issues or pull requests.
mfgames-nitride-cil/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs

67 lines
1.9 KiB
C#
Raw Normal View History

2021-09-07 05:15:45 +00:00
using System;
2021-09-07 05:15:45 +00:00
using Autofac;
2021-09-07 05:15:45 +00:00
using Nitride.Commands;
using Nitride.Temporal.Cli;
2021-09-07 05:15:45 +00:00
using Serilog;
using Expires = Nitride.Temporal.Cli.ExpiresPipelineCommandOption;
namespace Nitride.Temporal;
public static class NitrideTemporalBuilderExtensions
2021-09-07 05:15:45 +00:00
{
/// <summary>
/// Extends the builder to allow for configuring the temporal
/// settings for generation.
/// </summary>
public static NitrideBuilder UseTemporal(
this NitrideBuilder builder,
Action<NitrideTemporalConfiguration>? configure = null)
2021-09-07 05:15:45 +00:00
{
// Get the configuration so we can set the various options.
var config = new NitrideTemporalConfiguration();
2021-09-07 05:15:45 +00:00
configure?.Invoke(config);
2022-06-07 02:03:02 +00:00
// Add in the module registration.
builder.ConfigureContainer(
x =>
{
// Register the module.
x.RegisterModule<NitrideTemporalModule>();
2021-09-07 05:15:45 +00:00
// Add in the CLI options.
if (config.AddDateOptionToCommandLine)
{
x.RegisterType<DatePipelineCommandOption>().As<IPipelineCommandOption>();
}
2021-09-07 05:15:45 +00:00
if (config.AddExpireOptionToCommandLine && config.Expiration != null)
{
x.Register(
context =>
{
ILogger logger = context.Resolve<ILogger>();
Timekeeper clock = context.Resolve<Timekeeper>();
2021-09-07 05:15:45 +00:00
return new Expires(logger, clock, config.Expiration);
})
.As<IPipelineCommandOption>();
}
});
builder.ConfigureSite(
(_, scope) =>
{
Timekeeper timekeeper = scope.Resolve<Timekeeper>();
2021-09-07 05:15:45 +00:00
timekeeper.DateTimeZone = timekeeper.DateTimeZone;
});
return builder;
2021-09-07 05:15:45 +00:00
}
}