diff --git a/contrib/completions/_zoxide b/contrib/completions/_zoxide index 2f4c9f0..f22d4f0 100644 --- a/contrib/completions/_zoxide +++ b/contrib/completions/_zoxide @@ -184,7 +184,7 @@ _arguments "${_arguments_options[@]}" : \ (query) _arguments "${_arguments_options[@]}" : \ '--exclude=[Exclude the current directory]:path:_files -/' \ -'--base-dir=[Only search within this directory]:path:_files -/' \ +'--base-dir=[Only search within this directory (does not check if the path exists)]:path:_files -/' \ '-a[Show unavailable directories]' \ '--all[Show unavailable directories]' \ '(-l --list)-i[Use interactive selection]' \ diff --git a/contrib/completions/_zoxide.ps1 b/contrib/completions/_zoxide.ps1 index a76c12c..90425fc 100644 --- a/contrib/completions/_zoxide.ps1 +++ b/contrib/completions/_zoxide.ps1 @@ -155,7 +155,7 @@ Register-ArgumentCompleter -Native -CommandName 'zoxide' -ScriptBlock { } 'zoxide;query' { [CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Exclude the current directory') - [CompletionResult]::new('--base-dir', '--base-dir', [CompletionResultType]::ParameterName, 'Only search within this directory') + [CompletionResult]::new('--base-dir', '--base-dir', [CompletionResultType]::ParameterName, 'Only search within this directory (does not check if the path exists)') [CompletionResult]::new('-a', '-a', [CompletionResultType]::ParameterName, 'Show unavailable directories') [CompletionResult]::new('--all', '--all', [CompletionResultType]::ParameterName, 'Show unavailable directories') [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'Use interactive selection') diff --git a/contrib/completions/zoxide.elv b/contrib/completions/zoxide.elv index 5ba33fa..46185e4 100644 --- a/contrib/completions/zoxide.elv +++ b/contrib/completions/zoxide.elv @@ -137,7 +137,7 @@ set edit:completion:arg-completer[zoxide] = {|@words| } &'zoxide;query'= { cand --exclude 'Exclude the current directory' - cand --base-dir 'Only search within this directory' + cand --base-dir 'Only search within this directory (does not check if the path exists)' cand -a 'Show unavailable directories' cand --all 'Show unavailable directories' cand -i 'Use interactive selection' diff --git a/contrib/completions/zoxide.fish b/contrib/completions/zoxide.fish index 6d7e5b2..ebe1bba 100644 --- a/contrib/completions/zoxide.fish +++ b/contrib/completions/zoxide.fish @@ -84,7 +84,7 @@ complete -c zoxide -n "__fish_zoxide_using_subcommand init" -l no-cmd -d 'Preven complete -c zoxide -n "__fish_zoxide_using_subcommand init" -s h -l help -d 'Print help' complete -c zoxide -n "__fish_zoxide_using_subcommand init" -s V -l version -d 'Print version' complete -c zoxide -n "__fish_zoxide_using_subcommand query" -l exclude -d 'Exclude the current directory' -r -f -a "(__fish_complete_directories)" -complete -c zoxide -n "__fish_zoxide_using_subcommand query" -l base-dir -d 'Only search within this directory' -r -f -a "(__fish_complete_directories)" +complete -c zoxide -n "__fish_zoxide_using_subcommand query" -l base-dir -d 'Only search within this directory (does not check if the path exists)' -r -f -a "(__fish_complete_directories)" complete -c zoxide -n "__fish_zoxide_using_subcommand query" -s a -l all -d 'Show unavailable directories' complete -c zoxide -n "__fish_zoxide_using_subcommand query" -s i -l interactive -d 'Use interactive selection' complete -c zoxide -n "__fish_zoxide_using_subcommand query" -s l -l list -d 'List all matching directories' diff --git a/contrib/completions/zoxide.nu b/contrib/completions/zoxide.nu index 4d07049..ab359ed 100644 --- a/contrib/completions/zoxide.nu +++ b/contrib/completions/zoxide.nu @@ -117,7 +117,7 @@ module completions { --list(-l) # List all matching directories --score(-s) # Print score with results --exclude: path # Exclude the current directory - --base-dir: path # Only search within this directory + --base-dir: path # Only search within this directory (does not check if the path exists) --help(-h) # Print help --version(-V) # Print version ...keywords: string diff --git a/contrib/completions/zoxide.ts b/contrib/completions/zoxide.ts index 207da2f..794008b 100644 --- a/contrib/completions/zoxide.ts +++ b/contrib/completions/zoxide.ts @@ -310,7 +310,7 @@ const completion: Fig.Spec = { }, { name: "--base-dir", - description: "Only search within this directory", + description: "Only search within this directory (does not check if the path exists)", isRepeatable: true, args: { name: "base_dir", diff --git a/src/cmd/cmd.rs b/src/cmd/cmd.rs index 0de2ee5..a2e18cb 100644 --- a/src/cmd/cmd.rs +++ b/src/cmd/cmd.rs @@ -195,8 +195,9 @@ pub struct Query { pub exclude: Option, /// Only search within this directory + /// (does not check if the path exists) #[clap(long, value_hint = ValueHint::DirPath, value_name = "path")] - pub base_dir: Option, + pub base_dir: Option, } /// Remove a directory from the database diff --git a/src/cmd/query.rs b/src/cmd/query.rs index 6539c2e..feb65b0 100644 --- a/src/cmd/query.rs +++ b/src/cmd/query.rs @@ -80,7 +80,7 @@ impl Query { let mut options = StreamOptions::new(now) .with_keywords(self.keywords.iter().map(|s| s.as_str())) .with_exclude(config::exclude_dirs()?) - .with_base_dir(self.base_dir.clone()); + .with_base_dir(self.base_dir.clone().map(|p| std::fs::canonicalize(&p).unwrap_or(p))); if !self.all { let resolve_symlinks = config::resolve_symlinks(); options = options.with_exists(true).with_resolve_symlinks(resolve_symlinks); diff --git a/src/db/stream.rs b/src/db/stream.rs index 24c84e0..cb297c1 100644 --- a/src/db/stream.rs +++ b/src/db/stream.rs @@ -1,6 +1,6 @@ use std::iter::Rev; use std::ops::Range; -use std::path::Path; +use std::path::{Path, PathBuf}; use std::{fs, path}; use glob::Pattern; @@ -128,7 +128,7 @@ pub struct StreamOptions { /// Only return directories within this parent directory /// Does not check if the path exists - base_dir: Option, + base_dir: Option, } impl StreamOptions { @@ -168,7 +168,7 @@ impl StreamOptions { self } - pub fn with_base_dir(mut self, base_dir: Option) -> Self { + pub fn with_base_dir(mut self, base_dir: Option) -> Self { self.base_dir = base_dir; self }