Mercurial > public > mercurial-scm > hg
view rust/rhg/src/commands/root.rs @ 52343:393ad2685fb4
rust: make RevlogError AmbiguousPrefix case contain the actual prefix
This brings the work started in `652149ed64f0` to its logical conclusion and
makes the RevlogError self-sufficient so it can be directly converted to
CommandError, without an extra rev text annotation.
Without this change, it's confusing that the extra annotation is ignored in
most-but-not-all cases.
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Tue, 26 Nov 2024 15:45:11 +0000 |
parents | 532e74ad3ff6 |
children |
line wrap: on
line source
use crate::error::CommandError; use format_bytes::format_bytes; use hg::errors::{IoErrorContext, IoResultExt}; use hg::utils::files::get_bytes_from_path; pub const HELP_TEXT: &str = " Print the root directory of the current repository. Returns 0 on success. "; pub fn args() -> clap::Command { clap::command!("root").about(HELP_TEXT) } pub fn run(invocation: &crate::CliInvocation) -> Result<(), CommandError> { let repo = invocation.repo?; let working_directory = repo.working_directory_path(); let working_directory = std::fs::canonicalize(working_directory) .with_context(|| { IoErrorContext::CanonicalizingPath(working_directory.to_owned()) })?; let bytes = get_bytes_from_path(working_directory); invocation .ui .write_stdout(&format_bytes!(b"{}\n", bytes.as_slice()))?; Ok(()) }