From 42795898de2999bac3a36f522672f5fe14738c28 Mon Sep 17 00:00:00 2001 From: Antoine Cezar Date: Sat, 28 Oct 2023 16:34:30 +0200 Subject: [PATCH] commands: move files code to files.rs --- cli/src/commands/files.rs | 52 +++++++++++++++++++++++++++++++++++++++ cli/src/commands/mod.rs | 33 +++---------------------- 2 files changed, 55 insertions(+), 30 deletions(-) create mode 100644 cli/src/commands/files.rs diff --git a/cli/src/commands/files.rs b/cli/src/commands/files.rs new file mode 100644 index 0000000000..a714a39cf2 --- /dev/null +++ b/cli/src/commands/files.rs @@ -0,0 +1,52 @@ +// Copyright 2020 The Jujutsu Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use std::io::Write; + +use tracing::instrument; + +use crate::cli_util::{CommandError, CommandHelper, RevisionArg}; +use crate::ui::Ui; + +/// List files in a revision +#[derive(clap::Args, Clone, Debug)] +pub(crate) struct FilesArgs { + /// The revision to list files in + #[arg(long, short, default_value = "@")] + revision: RevisionArg, + /// Only list files matching these prefixes (instead of all files) + #[arg(value_hint = clap::ValueHint::AnyPath)] + paths: Vec, +} + +#[instrument(skip_all)] +pub(crate) fn cmd_files( + ui: &mut Ui, + command: &CommandHelper, + args: &FilesArgs, +) -> Result<(), CommandError> { + let workspace_command = command.workspace_helper(ui)?; + let commit = workspace_command.resolve_single_rev(&args.revision, ui)?; + let tree = commit.tree()?; + let matcher = workspace_command.matcher_from_values(&args.paths)?; + ui.request_pager(); + for (name, _value) in tree.entries_matching(matcher.as_ref()) { + writeln!( + ui.stdout(), + "{}", + &workspace_command.format_file_path(&name) + )?; + } + Ok(()) +} diff --git a/cli/src/commands/mod.rs b/cli/src/commands/mod.rs index fb67f88d13..7cee48aeec 100644 --- a/cli/src/commands/mod.rs +++ b/cli/src/commands/mod.rs @@ -28,6 +28,7 @@ mod diff; mod diffedit; mod duplicate; mod edit; +mod files; mod git; mod operation; @@ -99,7 +100,7 @@ enum Commands { Diffedit(diffedit::DiffeditArgs), Duplicate(duplicate::DuplicateArgs), Edit(edit::EditArgs), - Files(FilesArgs), + Files(files::FilesArgs), #[command(subcommand)] Git(git::GitCommands), Init(InitArgs), @@ -176,17 +177,6 @@ struct UntrackArgs { paths: Vec, } -/// List files in a revision -#[derive(clap::Args, Clone, Debug)] -struct FilesArgs { - /// The revision to list files in - #[arg(long, short, default_value = "@")] - revision: RevisionArg, - /// Only list files matching these prefixes (instead of all files) - #[arg(value_hint = clap::ValueHint::AnyPath)] - paths: Vec, -} - /// Show commit description and changes in a revision #[derive(clap::Args, Clone, Debug)] struct ShowArgs { @@ -1040,23 +1030,6 @@ Make sure they're ignored, then try again.", Ok(()) } -#[instrument(skip_all)] -fn cmd_files(ui: &mut Ui, command: &CommandHelper, args: &FilesArgs) -> Result<(), CommandError> { - let workspace_command = command.workspace_helper(ui)?; - let commit = workspace_command.resolve_single_rev(&args.revision, ui)?; - let tree = commit.tree()?; - let matcher = workspace_command.matcher_from_values(&args.paths)?; - ui.request_pager(); - for (name, _value) in tree.entries_matching(matcher.as_ref()) { - writeln!( - ui.stdout(), - "{}", - &workspace_command.format_file_path(&name) - )?; - } - Ok(()) -} - #[instrument(skip_all)] fn cmd_show(ui: &mut Ui, command: &CommandHelper, args: &ShowArgs) -> Result<(), CommandError> { let workspace_command = command.workspace_helper(ui)?; @@ -3131,7 +3104,7 @@ pub fn run_command(ui: &mut Ui, command_helper: &CommandHelper) -> Result<(), Co Commands::Config(sub_args) => config::cmd_config(ui, command_helper, sub_args), Commands::Checkout(sub_args) => checkout::cmd_checkout(ui, command_helper, sub_args), Commands::Untrack(sub_args) => cmd_untrack(ui, command_helper, sub_args), - Commands::Files(sub_args) => cmd_files(ui, command_helper, sub_args), + Commands::Files(sub_args) => files::cmd_files(ui, command_helper, sub_args), Commands::Cat(sub_args) => cat::cmd_cat(ui, command_helper, sub_args), Commands::Diff(sub_args) => diff::cmd_diff(ui, command_helper, sub_args), Commands::Show(sub_args) => cmd_show(ui, command_helper, sub_args),