From ea6a238c7c6afe01cc35392071434f3f443fd191 Mon Sep 17 00:00:00 2001 From: Martin von Zweigbergk Date: Sun, 26 Feb 2023 16:02:53 -0800 Subject: [PATCH] cli: avoid creating new WorkspaceLoader for `jj config edit --repo` This is mostly about not having to handle errors twice (or document an `unwrap()` after `WorkspaceLoader::init()`). --- src/cli_util.rs | 6 +++++- src/commands/mod.rs | 12 ++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cli_util.rs b/src/cli_util.rs index 2d2899460..f6183de24 100644 --- a/src/cli_util.rs +++ b/src/cli_util.rs @@ -361,6 +361,10 @@ impl CommandHelper { self.layered_configs.resolved_config_values(prefix) } + pub fn workspace_loader(&self) -> Result<&WorkspaceLoader, CommandError> { + self.maybe_workspace_loader.as_ref().map_err(Clone::clone) + } + fn workspace_helper_internal( &self, ui: &mut Ui, @@ -388,7 +392,7 @@ impl CommandHelper { } pub fn load_workspace(&self) -> Result { - let loader = self.maybe_workspace_loader.as_ref().map_err(Clone::clone)?; + let loader = self.workspace_loader()?; loader .load(&self.settings, &self.store_factories) .map_err(|e| user_error(format!("{}: {}", e, e.error))) diff --git a/src/commands/mod.rs b/src/commands/mod.rs index 2b3d2c1dc..8bfedae19 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -42,7 +42,7 @@ use jujutsu_lib::revset_graph_iterator::{ use jujutsu_lib::rewrite::{back_out_commit, merge_commit_trees, rebase_commit, DescendantRebaser}; use jujutsu_lib::settings::UserSettings; use jujutsu_lib::tree::{merge_trees, Tree}; -use jujutsu_lib::workspace::{Workspace, WorkspaceLoader}; +use jujutsu_lib::workspace::Workspace; use jujutsu_lib::{conflicts, file_util, revset}; use maplit::{hashmap, hashset}; @@ -1109,7 +1109,7 @@ fn cmd_config_list( } fn cmd_config_edit( - ui: &mut Ui, + _ui: &mut Ui, command: &CommandHelper, args: &ConfigEditArgs, ) -> Result<(), CommandError> { @@ -1117,12 +1117,8 @@ fn cmd_config_edit( // TODO(#531): Special-case for editors that can't handle viewing directories? config_path()?.ok_or_else(|| user_error("No repo config path found to edit"))? } else if args.config_args.repo { - let workspace_command = command.workspace_helper(ui)?; - let workspace_path = workspace_command.workspace_root(); - WorkspaceLoader::init(workspace_path) - .unwrap() - .repo_path() - .join("config.toml") + let workspace_loader = command.workspace_loader()?; + workspace_loader.repo_path().join("config.toml") } else { // Shouldn't be reachable unless clap ArgGroup is broken. panic!("No config_level provided");