Fix fzf
chooser preview with space-separated module paths (#2141)
This commit is contained in:
parent
0de971942a
commit
3236154d8d
@ -11,14 +11,6 @@ const CHOOSE_HELP: &str = "Select one or more recipes to run using a binary choo
|
|||||||
If `--chooser` is not passed the chooser defaults to the \
|
If `--chooser` is not passed the chooser defaults to the \
|
||||||
value of $JUST_CHOOSER, falling back to `fzf`";
|
value of $JUST_CHOOSER, falling back to `fzf`";
|
||||||
|
|
||||||
pub(crate) fn chooser_default(justfile: &Path) -> OsString {
|
|
||||||
let mut chooser = OsString::new();
|
|
||||||
chooser.push("fzf --multi --preview 'just --unstable --color always --justfile \"");
|
|
||||||
chooser.push(justfile);
|
|
||||||
chooser.push("\" --show {}'");
|
|
||||||
chooser
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, PartialEq)]
|
#[derive(Debug, PartialEq)]
|
||||||
pub(crate) struct Config {
|
pub(crate) struct Config {
|
||||||
pub(crate) check: bool,
|
pub(crate) check: bool,
|
||||||
@ -568,15 +560,20 @@ impl Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_module_path(path: ValuesRef<String>) -> ConfigResult<ModulePath> {
|
fn parse_module_path(values: ValuesRef<String>) -> ConfigResult<ModulePath> {
|
||||||
|
let path = values.clone().map(|s| (*s).as_str()).collect::<Vec<&str>>();
|
||||||
|
|
||||||
|
let path = if path.len() == 1 && path[0].contains(' ') {
|
||||||
|
path[0].split_whitespace().collect::<Vec<&str>>()
|
||||||
|
} else {
|
||||||
|
path
|
||||||
|
};
|
||||||
|
|
||||||
path
|
path
|
||||||
.clone()
|
|
||||||
.map(|s| (*s).as_str())
|
|
||||||
.collect::<Vec<&str>>()
|
|
||||||
.as_slice()
|
.as_slice()
|
||||||
.try_into()
|
.try_into()
|
||||||
.map_err(|()| ConfigError::ModulePath {
|
.map_err(|()| ConfigError::ModulePath {
|
||||||
path: path.cloned().collect(),
|
path: values.cloned().collect(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -231,7 +231,15 @@ impl Subcommand {
|
|||||||
return Err(Error::NoChoosableRecipes);
|
return Err(Error::NoChoosableRecipes);
|
||||||
}
|
}
|
||||||
|
|
||||||
let chooser = chooser.map_or_else(|| config::chooser_default(&search.justfile), From::from);
|
let chooser = if let Some(chooser) = chooser {
|
||||||
|
OsString::from(chooser)
|
||||||
|
} else {
|
||||||
|
let mut chooser = OsString::new();
|
||||||
|
chooser.push("fzf --multi --preview 'just --unstable --color always --justfile \"");
|
||||||
|
chooser.push(&search.justfile);
|
||||||
|
chooser.push("\" --show {}'");
|
||||||
|
chooser
|
||||||
|
};
|
||||||
|
|
||||||
let result = justfile
|
let result = justfile
|
||||||
.settings
|
.settings
|
||||||
|
@ -124,3 +124,18 @@ fn show_invalid_path() {
|
|||||||
.status(1)
|
.status(1)
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn show_space_separated_path() {
|
||||||
|
Test::new()
|
||||||
|
.write("foo.just", "bar:\n @echo MODULE")
|
||||||
|
.justfile(
|
||||||
|
"
|
||||||
|
mod foo
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.test_round_trip(false)
|
||||||
|
.args(["--unstable", "--show", "foo bar"])
|
||||||
|
.stdout("bar:\n @echo MODULE\n")
|
||||||
|
.run();
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user