--basedir -> --base-dir

This commit is contained in:
Ajeet D'Souza 2025-08-10 13:13:48 +05:30
parent 0fb4894e0f
commit c07d60c0f4
13 changed files with 26 additions and 29 deletions

View File

@ -120,7 +120,7 @@ _arguments "${_arguments_options[@]}" : \
(query)
_arguments "${_arguments_options[@]}" : \
'--exclude=[Exclude the current directory]:path:_files -/' \
'(--exclude)--basedir=[Only search within this directory]:path:_files -/' \
'--base-dir=[Only search within this directory]:path:_files -/' \
'-a[Show unavailable directories]' \
'--all[Show unavailable directories]' \
'(-l --list)-i[Use interactive selection]' \

View File

@ -102,7 +102,7 @@ Register-ArgumentCompleter -Native -CommandName 'zoxide' -ScriptBlock {
}
'zoxide;query' {
[CompletionResult]::new('--exclude', '--exclude', [CompletionResultType]::ParameterName, 'Exclude the current directory')
[CompletionResult]::new('--basedir', '--basedir', [CompletionResultType]::ParameterName, 'Only search within this directory')
[CompletionResult]::new('--base-dir', '--base-dir', [CompletionResultType]::ParameterName, 'Only search within this directory')
[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')

View File

@ -199,7 +199,7 @@ _zoxide() {
return 0
;;
zoxide__query)
opts="-a -i -l -s -h -V --all --interactive --list --score --exclude --basedir --help --version [KEYWORDS]..."
opts="-a -i -l -s -h -V --all --interactive --list --score --exclude --base-dir --help --version [KEYWORDS]..."
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
@ -212,7 +212,7 @@ _zoxide() {
fi
return 0
;;
--basedir)
--base-dir)
COMPREPLY=()
if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
compopt -o plusdirs

View File

@ -90,7 +90,7 @@ set edit:completion:arg-completer[zoxide] = {|@words|
}
&'zoxide;query'= {
cand --exclude 'Exclude the current directory'
cand --basedir 'Only search within this directory'
cand --base-dir 'Only search within this directory'
cand -a 'Show unavailable directories'
cand --all 'Show unavailable directories'
cand -i 'Use interactive selection'

View File

@ -62,7 +62,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 basedir -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' -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'

View File

@ -82,7 +82,7 @@ module completions {
--list(-l) # List all matching directories
--score(-s) # Print score with results
--exclude: path # Exclude the current directory
--basedir: path # Only search within this directory
--base-dir: path # Only search within this directory
--help(-h) # Print help
--version(-V) # Print version
]

View File

@ -215,14 +215,11 @@ const completion: Fig.Spec = {
},
},
{
name: "--basedir",
name: "--base-dir",
description: "Only search within this directory",
exclusiveOn: [
"--exclude",
],
isRepeatable: true,
args: {
name: "basedir",
name: "base_dir",
isOptional: true,
template: "folders",
},

View File

@ -188,8 +188,8 @@ pub struct Query {
pub exclude: Option<String>,
/// Only search within this directory
#[clap(long, value_hint = ValueHint::DirPath, value_name = "path", conflicts_with = "exclude")]
pub basedir: Option<String>,
#[clap(long, value_hint = ValueHint::DirPath, value_name = "path")]
pub base_dir: Option<String>,
}
/// Remove a directory from the database

View File

@ -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_basedir(self.basedir.clone());
.with_base_dir(self.base_dir.clone());
if !self.all {
let resolve_symlinks = config::resolve_symlinks();
options = options.with_exists(true).with_resolve_symlinks(resolve_symlinks);

View File

@ -183,7 +183,7 @@ impl Database {
*self.borrow_dirty()
}
pub fn dirs(&self) -> &[Dir] {
pub fn dirs(&self) -> &[Dir<'_>] {
self.borrow_dirs()
}
@ -203,7 +203,7 @@ impl Database {
.context("could not serialize database")
}
fn deserialize(bytes: &[u8]) -> Result<Vec<Dir>> {
fn deserialize(bytes: &[u8]) -> Result<Vec<Dir<'_>>> {
// Assume a maximum size for the database. This prevents bincode from throwing
// strange errors when it encounters invalid data.
const MAX_SIZE: u64 = 32 << 20; // 32 MiB

View File

@ -21,7 +21,7 @@ impl<'a> Stream<'a> {
Stream { db, idxs, options }
}
pub fn next(&mut self) -> Option<&Dir> {
pub fn next(&mut self) -> Option<&Dir<'_>> {
while let Some(idx) = self.idxs.next() {
let dir = &self.db.dirs()[idx];
@ -41,7 +41,7 @@ impl<'a> Stream<'a> {
continue;
}
if !self.filter_by_basedir(&dir.path) {
if !self.filter_by_base_dir(&dir.path) {
continue;
}
@ -97,10 +97,10 @@ impl<'a> Stream<'a> {
resolver(path).map(|metadata| metadata.is_dir()).unwrap_or_default()
}
fn filter_by_basedir(&self, path: &str) -> bool {
if let Some(basedir) = &self.options.basedir {
fn filter_by_base_dir(&self, path: &str) -> bool {
if let Some(base_dir) = &self.options.base_dir {
let path = Path::new(path);
return path.starts_with(basedir);
return path.starts_with(base_dir);
}
true
@ -129,7 +129,7 @@ pub struct StreamOptions {
/// Only return directories within this parent directory
/// Does not check if the path exists
basedir: Option<String>,
base_dir: Option<String>,
}
impl StreamOptions {
@ -141,7 +141,7 @@ impl StreamOptions {
exists: false,
resolve_symlinks: false,
ttl: now.saturating_sub(3 * MONTH),
basedir: None,
base_dir: None,
}
}
@ -169,8 +169,8 @@ impl StreamOptions {
self
}
pub fn with_basedir(mut self, basedir: Option<String>) -> Self {
self.basedir = basedir;
pub fn with_base_dir(mut self, base_dir: Option<String>) -> Self {
self.base_dir = base_dir;
self
}
}
@ -204,7 +204,7 @@ mod tests {
#[case(&["/foo/", "/bar"], "/foo/bar", false)]
#[case(&["/foo/", "/bar"], "/foo/baz/bar", true)]
fn query(#[case] keywords: &[&str], #[case] path: &str, #[case] is_match: bool) {
let db = &mut Database::new(PathBuf::default(), Vec::default(), |_| Vec::default(), false);
let db = &mut Database::new(PathBuf::new(), Vec::new(), |_| Vec::new(), false);
let options = StreamOptions::new(0).with_keywords(keywords.iter());
let stream = Stream::new(db, options);
assert_eq!(is_match, stream.filter_by_keywords(path));

View File

@ -97,7 +97,7 @@ mod tests {
#[apply(opts)]
fn elvish_elvish(cmd: Option<&str>, hook: InitHook, echo: bool, resolve_symlinks: bool) {
let opts = Opts { cmd, hook, echo, resolve_symlinks };
let mut source = String::default();
let mut source = String::new();
// Filter out lines using edit:*, since those functions are only available in
// the interactive editor.

View File

@ -135,7 +135,7 @@ impl FzfChild {
mem::drop(self.0.stdin.take());
let mut stdout = self.0.stdout.take().unwrap();
let mut output = String::default();
let mut output = String::new();
stdout.read_to_string(&mut output).context("failed to read from fzf")?;
let status = self.0.wait().context("wait failed on fzf")?;