diff options
Diffstat (limited to 'src/workspace/git/discovery.rs')
| -rw-r--r-- | src/workspace/git/discovery.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/workspace/git/discovery.rs b/src/workspace/git/discovery.rs index 4edfcbc2..9e1be74d 100644 --- a/src/workspace/git/discovery.rs +++ b/src/workspace/git/discovery.rs @@ -25,6 +25,10 @@ pub fn derive_label_from_cwd(cwd: &Path) -> String { } } + fallback_label_from_cwd(cwd) +} + +pub fn fallback_label_from_cwd(cwd: &Path) -> String { if let Ok(home) = std::env::var("HOME") { let home = Path::new(&home); if cwd == home { @@ -56,9 +60,11 @@ pub fn git_worktree_info(cwd: &Path) -> Option<GitWorktreeInfo> { } pub fn git_space_metadata(cwd: &Path) -> Option<GitSpaceMetadata> { - git_repo_root(cwd)?; - let info = git_worktree_info(cwd)?; + Some(git_space_metadata_from_info(&info)) +} + +pub(super) fn git_space_metadata_from_info(info: &GitWorktreeInfo) -> GitSpaceMetadata { let key = canonicalize_best_effort_path(&info.git_common_dir) .display() .to_string(); @@ -80,13 +86,13 @@ pub fn git_space_metadata(cwd: &Path) -> Option<GitSpaceMetadata> { .and_then(|name| name.to_str()) .unwrap_or("repo") .to_string(); - Some(GitSpaceMetadata { + GitSpaceMetadata { key, checkout_key, label, - repo_root: info.repo_root, + repo_root: info.repo_root.clone(), is_linked_worktree: info.is_linked_worktree, - }) + } } pub(super) fn canonicalize_best_effort_path(path: &Path) -> PathBuf { |
