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

106 lines
4 KiB
C#
Raw Normal View History

2021-09-07 05:15:45 +00:00
using System;
using Autofac;
using Nitride.Commands;
using Serilog;
using Expires = Nitride.Temporal.ExpiresPipelineCommandOption;
namespace Nitride.Temporal
{
public static class NitrideTemporalBuilderExtensions
{
/// <summary>
/// Extends the builder to allow for configuring the temporal
/// settings for generation.
/// </summary>
/// <param name="builder">The host builder being configured.</param>
/// <param name="callback">The callback to configure the clock.</param>
/// <returns>The builder passed in.</returns>
public static NitrideBuilder ConfigureClock(
this NitrideBuilder builder,
Action<NitrideClock> callback)
{
return builder
.UseTemporal()
.ConfigureSite(
(_, scope) =>
{
var clock = scope.Resolve<NitrideClock>();
callback(clock);
});
}
public static NitrideBuilder UseTemporal(this NitrideBuilder builder)
{
return builder
.ConfigureContainer(
x => x.RegisterModule<NitrideTemporalModule>());
}
/// <summary>
/// Adds the "--date=XXXX-XX-XX" option into the pipeline commands.
/// </summary>
/// <param name="builder">The host builder being configured.</param>
/// <returns>The builder passed in.</returns>
public static NitrideBuilder WithClockFromOptions(
this NitrideBuilder builder)
{
return builder
.UseTemporal()
.ConfigureContainer(
x =>
{
x
.RegisterType<DatePipelineCommandOption>()
.As<IPipelineCommandOption>();
});
}
/// <summary>
/// Adds the "--expire=XXXX" option into the pipeline commands where
/// "XXX" is a format like "5y" or "500000:00:00.0". This is parsed by
/// TimeSpanParser which gives an easy format.
/// </summary>
/// <param name="builder">The host builder being configured.</param>
/// <param name="defaultValue">The default expiration, if one is provided.</param>
/// <returns>The builder passed in.</returns>
public static NitrideBuilder WithExpiresFromOptions(
this NitrideBuilder builder,
TimeSpan defaultValue)
{
return WithExpiresFromOptions(builder, defaultValue.ToString());
}
/// <summary>
/// Adds the "--expire=XXXX" option into the pipeline commands where
/// "XXX" is a format like "5y" or "500000:00:00.0". This is parsed by
/// TimeSpanParser which gives an easy format.
/// </summary>
/// <param name="builder">The host builder being configured.</param>
/// <param name="defaultValue">The default expiration, if one is provided.</param>
/// <returns>The builder passed in.</returns>
public static NitrideBuilder WithExpiresFromOptions(
this NitrideBuilder builder,
string? defaultValue = null)
{
return builder
.ConfigureContainer(
x =>
{
x
.Register(
context =>
{
var logger = context.Resolve<ILogger>();
var clock = context.Resolve<NitrideClock>();
return new Expires(
logger,
clock,
defaultValue);
})
.As<IPipelineCommandOption>();
});
}
}
}