Skip to content

Commit

Permalink
commands: move files code to files.rs
Browse files Browse the repository at this point in the history
  • Loading branch information
AntoineCezar committed Oct 28, 2023
1 parent 4257341 commit 4279589
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 30 deletions.
52 changes: 52 additions & 0 deletions cli/src/commands/files.rs
Original file line number Diff line number Diff line change
@@ -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<String>,
}

#[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(())
}
33 changes: 3 additions & 30 deletions cli/src/commands/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ mod diff;
mod diffedit;
mod duplicate;
mod edit;
mod files;
mod git;
mod operation;

Expand Down Expand Up @@ -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),
Expand Down Expand Up @@ -176,17 +177,6 @@ struct UntrackArgs {
paths: Vec<String>,
}

/// 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<String>,
}

/// Show commit description and changes in a revision
#[derive(clap::Args, Clone, Debug)]
struct ShowArgs {
Expand Down Expand Up @@ -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)?;
Expand Down Expand Up @@ -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),
Expand Down

0 comments on commit 4279589

Please sign in to comment.