use std::io::{self, BufWriter, Write};
use anyhow::{Context, Result};
use glob::{MatchOptions, Pattern};
use poe_data_tools::fs::{FS, FileSystem};
pub fn list_files(file_system: &FS, patterns: &[Pattern]) -> Result<()> {
let mut stdout = BufWriter::new(io::stdout().lock());
file_system
.list()
.filter(|path| {
patterns.iter().any(|pattern| {
pattern.matches_with(
path,
MatchOptions {
require_literal_separator: true,
..Default::default()
},
)
})
})
.try_for_each(|p| writeln!(stdout, "{}", p).context("Failed to write to stdout"))?;
stdout.flush().context("Failed to flush stdout")
}