Files
api-generator/Core/Process/GenerationProcess.cs
2025-10-11 13:08:09 +02:00

47 lines
1.3 KiB
C#

using System.Collections;
using Core.SpecConfig;
namespace Core.Process;
public class GenerationProcess : IEnumerable
{
public ISpecFile BaseFile { get; private set; }
private List<ProcessTask> _tasks;
private PublishType _publishType;
private GenerationType? _generationType;
public GenerationProcess(ISpecFile spec, PublishType pubType, GenerationType? genType)
{
BaseFile = spec;
_tasks = RetrieveTasks();
_publishType = pubType;
_generationType = genType;
}
private List<ProcessTask> RetrieveTasks()
{
var res = new List<ProcessTask>();
foreach (Language language in Enum.GetValues(typeof(Language)))
{
foreach (GenerationType type in Enum.GetValues(typeof(GenerationType)))
{
var tasks = BaseFile.GetTasksBy(language, type);
if (tasks.Count == 0) continue;
res.Add(new ProcessTask(language, type, _publishType, tasks));
}
}
return _generationType == null ? res
: res.Where(p => p.GenerationType == _generationType).ToList();
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
public ProcessEnumerator GetEnumerator()
{
_tasks = RetrieveTasks();
return new ProcessEnumerator(_tasks);
}
}