use crate::OutputFormat; pub mod list { pub enum Kind { Local, All, } pub struct Options { pub kind: Kind, }} pub fn list( repo: gix::Repository, out: &mut dyn std::io::Write, format: OutputFormat, options: list::Options,) -> anyhow::Result<()> { if format != OutputFormat::Human { anyhow::bail!("JSON output isn't supported"); } let platform = repo.references()?; let (show_local, show_remotes) = match options.kind { list::Kind::Local => (true, false), list::Kind::All => (true, true), }; if show_local { let mut branch_names: Vec<String> = platform .local_branches()? .flatten() .map(|branch| branch.name().shorten().to_string()) .collect(); branch_names.sort(); for branch_name in branch_names { writeln!(out, "{branch_name}")?; } } if show_remotes { let mut branch_names: Vec<String> = platform .remote_branches()? .flatten() .map(|branch| branch.name().shorten().to_string()) .collect(); branch_names.sort(); for branch_name in branch_names { writeln!(out, "{branch_name}")?; } } Ok(())}
use crate::OutputFormat;
pub mod list {
pub enum Kind {
Local,
All,
}
pub struct Options {
pub kind: Kind,
}
}
pub fn list(
repo: gix::Repository,
out: &mut dyn std::io::Write,
format: OutputFormat,
options: list::Options,
) -> anyhow::Result<()> {
if format != OutputFormat::Human {
anyhow::bail!("JSON output isn't supported");
}
let platform = repo.references()?;
let (show_local, show_remotes) = match options.kind {
list::Kind::Local => (true, false),
list::Kind::All => (true, true),
};
if show_local {
let mut branch_names: Vec<String> = platform
.local_branches()?
.flatten()
.map(|branch| branch.name().shorten().to_string())
.collect();
branch_names.sort();
for branch_name in branch_names {
writeln!(out, "{branch_name}")?;
}
}
if show_remotes {
let mut branch_names: Vec<String> = platform
.remote_branches()?
.flatten()
.map(|branch| branch.name().shorten().to_string())
.collect();
branch_names.sort();
for branch_name in branch_names {
writeln!(out, "{branch_name}")?;
}
}
Ok(())
}