diff --git a/cli/src/commands/debug/local_working_copy.rs b/cli/src/commands/debug/local_working_copy.rs index 165a8476c..cde1d0b9c 100644 --- a/cli/src/commands/debug/local_working_copy.rs +++ b/cli/src/commands/debug/local_working_copy.rs @@ -23,6 +23,8 @@ use crate::command_error::CommandError; use crate::ui::Ui; /// Show information about the local working copy state +/// +/// This command only works with a standard local-disk working copy. #[derive(clap::Args, Clone, Debug)] pub struct LocalWorkingCopyArgs {} diff --git a/cli/src/commands/debug/mod.rs b/cli/src/commands/debug/mod.rs index 1fd3b8a70..ddebfd83f 100644 --- a/cli/src/commands/debug/mod.rs +++ b/cli/src/commands/debug/mod.rs @@ -22,6 +22,7 @@ pub mod snapshot; pub mod template; pub mod tree; pub mod watchman; +pub mod working_copy; use std::any::Any; use std::fmt::Debug; @@ -39,6 +40,7 @@ use self::snapshot::{cmd_debug_snapshot, SnapshotArgs}; use self::template::{cmd_debug_template, TemplateArgs}; use self::tree::{cmd_debug_tree, TreeArgs}; use self::watchman::{cmd_debug_watchman, WatchmanCommand}; +use self::working_copy::{cmd_debug_working_copy, WorkingCopyArgs}; use crate::cli_util::CommandHelper; use crate::command_error::{user_error, CommandError}; use crate::ui::Ui; @@ -59,6 +61,7 @@ pub enum DebugCommand { Tree(TreeArgs), #[command(subcommand)] Watchman(WatchmanCommand), + WorkingCopy(WorkingCopyArgs), } pub fn cmd_debug( @@ -77,6 +80,7 @@ pub fn cmd_debug( DebugCommand::Template(args) => cmd_debug_template(ui, command, args), DebugCommand::Tree(args) => cmd_debug_tree(ui, command, args), DebugCommand::Watchman(args) => cmd_debug_watchman(ui, command, args), + DebugCommand::WorkingCopy(args) => cmd_debug_working_copy(ui, command, args), } } diff --git a/cli/src/commands/debug/working_copy.rs b/cli/src/commands/debug/working_copy.rs new file mode 100644 index 000000000..73735a70d --- /dev/null +++ b/cli/src/commands/debug/working_copy.rs @@ -0,0 +1,37 @@ +// Copyright 2023 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::fmt::Debug; +use std::io::Write as _; + +use crate::cli_util::CommandHelper; +use crate::command_error::CommandError; +use crate::ui::Ui; + +/// Show information about the working copy state +#[derive(clap::Args, Clone, Debug)] +pub struct WorkingCopyArgs {} + +pub fn cmd_debug_working_copy( + ui: &mut Ui, + command: &CommandHelper, + _args: &WorkingCopyArgs, +) -> Result<(), CommandError> { + let workspace_command = command.workspace_helper_no_snapshot(ui)?; + let wc = workspace_command.working_copy(); + writeln!(ui.stdout(), "Type: {:?}", wc.name())?; + writeln!(ui.stdout(), "Current operation: {:?}", wc.operation_id())?; + writeln!(ui.stdout(), "Current tree: {:?}", wc.tree_id()?)?; + Ok(()) +}