use std::io::Write;
use std::path::PathBuf;
use anyhow::{Result, bail};
use itertools::Itertools;
use ruff_workspace::resolver::{PyprojectConfig, ResolvedFile, project_files_in_path};
use crate::args::ConfigArguments;
pub(crate) fn show_settings(
files: &[PathBuf],
pyproject_config: &PyprojectConfig,
config_arguments: &ConfigArguments,
writer: &mut impl Write,
) -> Result<()> {
let (paths, resolver) = project_files_in_path(files, pyproject_config, config_arguments)?;
let Some(path) = paths
.into_iter()
.flatten()
.map(ResolvedFile::into_path)
.sorted_unstable()
.next()
else {
bail!("No files found under the given path");
};
let (settings, config_path) = resolver.resolve_with_path(&path);
writeln!(writer, "Resolved settings for: \"{}\"", path.display())?;
if let Some(settings_path) = config_path {
writeln!(writer, "Settings path: \"{}\"", settings_path.display())?;
}
write!(writer, "{settings}")?;
Ok(())
}