rust/rhg/src/commands/files.rs
changeset 48453 9b0e1f64656f
parent 48409 005ae1a343f8
child 49640 37bc3edef76f
equal deleted inserted replaced
48452:2afaa0145584 48453:9b0e1f64656f
     1 use crate::error::CommandError;
     1 use crate::error::CommandError;
     2 use crate::ui::Ui;
     2 use crate::ui::Ui;
     3 use crate::ui::UiError;
     3 use crate::utils::path_utils::RelativizePaths;
     4 use crate::utils::path_utils::relativize_paths;
       
     5 use clap::Arg;
     4 use clap::Arg;
     6 use hg::errors::HgError;
     5 use hg::errors::HgError;
     7 use hg::operations::list_rev_tracked_files;
     6 use hg::operations::list_rev_tracked_files;
     8 use hg::operations::Dirstate;
     7 use hg::operations::Dirstate;
     9 use hg::repo::Repo;
     8 use hg::repo::Repo;
    10 use hg::utils::hg_path::HgPath;
     9 use hg::utils::hg_path::HgPath;
    11 use std::borrow::Cow;
       
    12 
    10 
    13 pub const HELP_TEXT: &str = "
    11 pub const HELP_TEXT: &str = "
    14 List tracked files.
    12 List tracked files.
    15 
    13 
    16 Returns 0 on success.
    14 Returns 0 on success.
    84     files: impl IntoIterator<Item = Result<&'a HgPath, HgError>>,
    82     files: impl IntoIterator<Item = Result<&'a HgPath, HgError>>,
    85 ) -> Result<(), CommandError> {
    83 ) -> Result<(), CommandError> {
    86     let mut stdout = ui.stdout_buffer();
    84     let mut stdout = ui.stdout_buffer();
    87     let mut any = false;
    85     let mut any = false;
    88 
    86 
    89     relativize_paths(repo, files, |path: Cow<[u8]>| -> Result<(), UiError> {
    87     let relativize = RelativizePaths::new(repo)?;
       
    88     for result in files {
       
    89         let path = result?;
       
    90         stdout.write_all(&relativize.relativize(path))?;
       
    91         stdout.write_all(b"\n")?;
    90         any = true;
    92         any = true;
    91         stdout.write_all(path.as_ref())?;
    93     }
    92         stdout.write_all(b"\n")
    94 
    93     })?;
       
    94     stdout.flush()?;
    95     stdout.flush()?;
    95     if any {
    96     if any {
    96         Ok(())
    97         Ok(())
    97     } else {
    98     } else {
    98         Err(CommandError::Unsuccessful)
    99         Err(CommandError::Unsuccessful)