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/MfGames.Nitride.IO/Paths/LinkDirectChildren.cs
D. Moonfire 2892ec3445
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
feat!: added cancellation token support to pipelines and operations
2023-01-17 19:24:09 -06:00

58 lines
1.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using System.Threading;
using FluentValidation;
using MfGames.Gallium;
using MfGames.Nitride.Entities;
using MfGames.Nitride.Generators;
using Serilog;
using Zio;
namespace MfGames.Nitride.IO.Paths;
[WithProperties]
public partial class LinkDirectChildren : CreateOrUpdateIndex
{
/// <inheritdoc />
public LinkDirectChildren(
ILogger logger,
IValidator<CreateOrUpdateIndex> validator)
: base(logger, validator)
{
this.UpdateIndex = this.InternalUpdateIndex;
this.GetIndexKey = e => e.Get<UPath>()
.GetDirectoryIndexPath();
}
/// <inheritdoc />
public override IEnumerable<Entity> Run(
IEnumerable<Entity> input,
CancellationToken cancellationToken = default)
{
if (this.Scanner != null!)
{
return base.Run(input);
}
this.Scanner = new DirectChildPathScanner(new EntityScannerValidator());
input = this.Scanner.Run(input)
.ToList();
return base.Run(input);
}
private Entity InternalUpdateIndex(
Entity entity,
string _,
IEnumerable<Entity> list)
{
return entity.Add(new DirectChildEntityList(list));
}
}