TailBox/Application/TailBoxPipelineModels.cs
using System;
using System.Collections.Generic;
using System.Linq;
namespace Sandbox.TailBox;
internal sealed record TailBoxPipelineInput(
IReadOnlyList<TailBoxSourceText> Sources,
TailBoxConfig Config,
string ProjectRoot,
string OutputPath )
{
public static TailBoxPipelineInput Create( IEnumerable<TailBoxSourceText> sources, TailBoxConfig config, string projectRoot, string outputPath )
{
config ??= TailBoxConfig.CreateDefault();
projectRoot ??= "";
var sourceList = (sources ?? Enumerable.Empty<TailBoxSourceText>()).ToArray();
if ( string.IsNullOrWhiteSpace( outputPath ) )
outputPath = config.GetOutputFullPath( projectRoot );
return new TailBoxPipelineInput( sourceList, config, projectRoot, outputPath ?? "" );
}
}
internal sealed record TailBoxCandidateInventory(
IReadOnlyCollection<string> Classes,
IReadOnlyDictionary<string, string> SourceByClass );
internal sealed record TailBoxCompilationOutput(
IReadOnlyList<TailBoxUtilityRule> Rules,
IReadOnlyList<string> GeneratedClasses,
IReadOnlyList<string> SkippedClasses,
IReadOnlyList<TailBoxSkippedClass> Skipped,
IReadOnlyList<string> Warnings );