poe_data_tools_cli/commands/
list.rs1use std::io::{self, BufWriter, Write};
2
3use anyhow::{Context, Result};
4use glob::{MatchOptions, Pattern};
5use poe_data_tools::fs::{FS, FileSystem};
6
7pub fn list_files(file_system: &FS, patterns: &[Pattern]) -> Result<()> {
9 let mut stdout = BufWriter::new(io::stdout().lock());
11
12 file_system
13 .list()
14 .filter(|path| {
15 patterns.iter().any(|pattern| {
16 pattern.matches_with(
17 path,
18 MatchOptions {
19 require_literal_separator: true,
20 ..Default::default()
21 },
22 )
23 })
24 })
25 .try_for_each(|p| writeln!(stdout, "{}", p).context("Failed to write to stdout"))?;
26
27 stdout.flush().context("Failed to flush stdout")
28}