namespace FFMpegCore.Arguments;
///
/// Represents input parameters for multiple files
///
public class MultiInputArgument : IInputArgument
{
public readonly IEnumerable FilePaths;
public readonly bool VerifyExists;
public MultiInputArgument(bool verifyExists, IEnumerable filePaths)
{
VerifyExists = verifyExists;
FilePaths = filePaths;
}
public MultiInputArgument(IEnumerable filePaths, bool verifyExists) : this(verifyExists, filePaths) { }
public void Pre()
{
if (VerifyExists)
{
var missingFiles = new List();
foreach (var filePath in FilePaths)
{
if (!File.Exists(filePath))
{
missingFiles.Add(filePath);
}
}
if (missingFiles.Any())
{
throw new FileNotFoundException($"The following input files were not found: {string.Join(", ", missingFiles)}");
}
}
}
public Task During(CancellationToken cancellationToken = default)
{
return Task.CompletedTask;
}
public void Post() { }
///
/// Generates a combined input argument text for all file paths
///
public string Text => string.Join(" ", FilePaths.Select(filePath => $"-i \"{filePath}\""));
}