Skip to main content

short_ids/
short_ids.rs

1//! Resolve a hexadecimal prefix and print a unique, automatically sized abbreviation.
2use girt::{ObjectIdPrefix, Repository};
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4    let mut args = std::env::args().skip(1);
5    let path = args
6        .next()
7        .ok_or("usage: short_ids <repository> <hex-prefix>")?;
8    let text = args.next().ok_or("missing hexadecimal prefix")?;
9
10    let repository = Repository::discover(path)?;
11    let objects = repository.objects()?;
12
13    let prefix = ObjectIdPrefix::from_hex(repository.object_format(), &text)?;
14    let id = objects.resolve_prefix(prefix)?;
15    println!("{}", objects.abbreviate(id, objects.auto_abbrev_len())?);
16    Ok(())
17}