diff --git a/cli/src/cli_util.rs b/cli/src/cli_util.rs index a7f4910d9..89d3119af 100644 --- a/cli/src/cli_util.rs +++ b/cli/src/cli_util.rs @@ -59,6 +59,7 @@ use jj_lib::backend::TreeValue; use jj_lib::commit::Commit; use jj_lib::config::ConfigError; use jj_lib::config::ConfigNamePathBuf; +use jj_lib::config::ConfigResultExt as _; use jj_lib::config::StackedConfig; use jj_lib::conflicts::ConflictMarkerStyle; use jj_lib::file_util; @@ -110,7 +111,6 @@ use jj_lib::revset::RevsetWorkspaceContext; use jj_lib::revset::SymbolResolverExtension; use jj_lib::revset::UserRevsetExpression; use jj_lib::rewrite::restore_tree; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use jj_lib::str_util::StringPattern; use jj_lib::transaction::Transaction; diff --git a/cli/src/commands/git/fetch.rs b/cli/src/commands/git/fetch.rs index 0be1df9b6..9ec64b233 100644 --- a/cli/src/commands/git/fetch.rs +++ b/cli/src/commands/git/fetch.rs @@ -14,8 +14,8 @@ use clap_complete::ArgValueCandidates; use itertools::Itertools; +use jj_lib::config::ConfigResultExt as _; use jj_lib::repo::Repo; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use jj_lib::str_util::StringPattern; diff --git a/cli/src/commands/git/push.rs b/cli/src/commands/git/push.rs index 866dba265..bf3d8ea9e 100644 --- a/cli/src/commands/git/push.rs +++ b/cli/src/commands/git/push.rs @@ -21,6 +21,7 @@ use clap::ArgGroup; use clap_complete::ArgValueCandidates; use itertools::Itertools; use jj_lib::backend::CommitId; +use jj_lib::config::ConfigResultExt as _; use jj_lib::git; use jj_lib::git::GitBranchPushTargets; use jj_lib::git::GitPushError; @@ -32,7 +33,6 @@ use jj_lib::refs::BookmarkPushUpdate; use jj_lib::refs::LocalAndRemoteRef; use jj_lib::repo::Repo; use jj_lib::revset::RevsetExpression; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use jj_lib::str_util::StringPattern; use jj_lib::view::View; diff --git a/cli/src/commands/log.rs b/cli/src/commands/log.rs index c9409c42f..2009d9dd5 100644 --- a/cli/src/commands/log.rs +++ b/cli/src/commands/log.rs @@ -15,6 +15,7 @@ use clap_complete::ArgValueCandidates; use jj_lib::backend::CommitId; use jj_lib::config::ConfigError; +use jj_lib::config::ConfigResultExt as _; use jj_lib::graph::GraphEdgeType; use jj_lib::graph::ReverseGraphIterator; use jj_lib::graph::TopoGroupedGraphIterator; @@ -23,7 +24,6 @@ use jj_lib::revset::RevsetEvaluationError; use jj_lib::revset::RevsetExpression; use jj_lib::revset::RevsetFilterPredicate; use jj_lib::revset::RevsetIteratorExt; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use tracing::instrument; diff --git a/cli/src/commands/operation/log.rs b/cli/src/commands/operation/log.rs index 22594340d..31d848c20 100644 --- a/cli/src/commands/operation/log.rs +++ b/cli/src/commands/operation/log.rs @@ -16,10 +16,10 @@ use std::slice; use itertools::Itertools as _; use jj_lib::config::ConfigError; +use jj_lib::config::ConfigResultExt as _; use jj_lib::op_walk; use jj_lib::operation::Operation; use jj_lib::repo::RepoLoader; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use super::diff::show_op_diff; diff --git a/cli/src/diff_util.rs b/cli/src/diff_util.rs index 6d593da66..77187cacc 100644 --- a/cli/src/diff_util.rs +++ b/cli/src/diff_util.rs @@ -33,6 +33,7 @@ use jj_lib::backend::CopyRecord; use jj_lib::backend::TreeValue; use jj_lib::commit::Commit; use jj_lib::config::ConfigError; +use jj_lib::config::ConfigResultExt as _; use jj_lib::conflicts::materialize_merge_result_to_bytes; use jj_lib::conflicts::materialized_diff_stream; use jj_lib::conflicts::ConflictMarkerStyle; @@ -61,7 +62,6 @@ use jj_lib::repo_path::InvalidRepoPathError; use jj_lib::repo_path::RepoPath; use jj_lib::repo_path::RepoPathUiConverter; use jj_lib::rewrite::rebase_to_dest_parent; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use jj_lib::store::Store; use pollster::FutureExt; diff --git a/cli/src/merge_tools/mod.rs b/cli/src/merge_tools/mod.rs index d0ef9db61..83002607b 100644 --- a/cli/src/merge_tools/mod.rs +++ b/cli/src/merge_tools/mod.rs @@ -21,6 +21,7 @@ use std::sync::Arc; use jj_lib::backend::MergedTreeId; use jj_lib::config::ConfigError; use jj_lib::config::ConfigNamePathBuf; +use jj_lib::config::ConfigResultExt as _; use jj_lib::conflicts::extract_as_single_hunk; use jj_lib::conflicts::ConflictMarkerStyle; use jj_lib::gitignore::GitIgnoreFile; @@ -29,7 +30,6 @@ use jj_lib::merged_tree::MergedTree; use jj_lib::repo_path::InvalidRepoPathError; use jj_lib::repo_path::RepoPath; use jj_lib::repo_path::RepoPathBuf; -use jj_lib::settings::ConfigResultExt as _; use jj_lib::settings::UserSettings; use jj_lib::working_copy::SnapshotError; use pollster::FutureExt; diff --git a/lib/src/config.rs b/lib/src/config.rs index eaebcd080..e69cb8333 100644 --- a/lib/src/config.rs +++ b/lib/src/config.rs @@ -36,6 +36,22 @@ pub type ConfigValue = config::Value; // TODO: will be replaced with our custom error type pub type ConfigError = config::ConfigError; +/// Extension methods for `Result`. +pub trait ConfigResultExt { + /// Converts `NotFound` error to `Ok(None)`, leaving other errors. + fn optional(self) -> Result, ConfigError>; +} + +impl ConfigResultExt for Result { + fn optional(self) -> Result, ConfigError> { + match self { + Ok(value) => Ok(Some(value)), + Err(ConfigError::NotFound(_)) => Ok(None), + Err(err) => Err(err), + } + } +} + /// Dotted config name path. #[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct ConfigNamePathBuf(Vec); diff --git a/lib/src/fsmonitor.rs b/lib/src/fsmonitor.rs index 224cdec29..767620da2 100644 --- a/lib/src/fsmonitor.rs +++ b/lib/src/fsmonitor.rs @@ -25,7 +25,7 @@ use std::path::PathBuf; use crate::config::ConfigError; -use crate::settings::ConfigResultExt; +use crate::config::ConfigResultExt as _; use crate::settings::UserSettings; /// Config for Watchman filesystem monitor (). diff --git a/lib/src/gpg_signing.rs b/lib/src/gpg_signing.rs index ff7ff4150..654b4ba68 100644 --- a/lib/src/gpg_signing.rs +++ b/lib/src/gpg_signing.rs @@ -26,7 +26,7 @@ use std::str; use thiserror::Error; use crate::config::ConfigError; -use crate::settings::ConfigResultExt as _; +use crate::config::ConfigResultExt as _; use crate::settings::UserSettings; use crate::signing::SigStatus; use crate::signing::SignError; diff --git a/lib/src/settings.rs b/lib/src/settings.rs index b4184da4d..6968690db 100644 --- a/lib/src/settings.rs +++ b/lib/src/settings.rs @@ -28,6 +28,7 @@ use crate::backend::Commit; use crate::backend::Signature; use crate::backend::Timestamp; use crate::config::ConfigError; +use crate::config::ConfigResultExt as _; use crate::config::ConfigTable; use crate::config::ConfigValue; use crate::config::StackedConfig; @@ -326,20 +327,6 @@ impl JJRng { } } -pub trait ConfigResultExt { - fn optional(self) -> Result, ConfigError>; -} - -impl ConfigResultExt for Result { - fn optional(self) -> Result, ConfigError> { - match self { - Ok(value) => Ok(Some(value)), - Err(ConfigError::NotFound(_)) => Ok(None), - Err(err) => Err(err), - } - } -} - /// A size in bytes optionally formatted/serialized with binary prefixes #[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, serde::Deserialize)] #[serde(try_from = "String")] diff --git a/lib/src/ssh_signing.rs b/lib/src/ssh_signing.rs index 5ea9eb878..554b2fd2a 100644 --- a/lib/src/ssh_signing.rs +++ b/lib/src/ssh_signing.rs @@ -27,7 +27,7 @@ use either::Either; use thiserror::Error; use crate::config::ConfigError; -use crate::settings::ConfigResultExt as _; +use crate::config::ConfigResultExt as _; use crate::settings::UserSettings; use crate::signing::SigStatus; use crate::signing::SignError;