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 \
|
||||
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)]
|
||||
pub(crate) struct Config {
|
||||
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
|
||||
.clone()
|
||||
.map(|s| (*s).as_str())
|
||||
.collect::<Vec<&str>>()
|
||||
.as_slice()
|
||||
.try_into()
|
||||
.map_err(|()| ConfigError::ModulePath {
|
||||
path: path.cloned().collect(),
|
||||
path: values.cloned().collect(),
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -231,7 +231,15 @@ impl Subcommand {
|
||||
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
|
||||
.settings
|
||||
|
@ -124,3 +124,18 @@ fn show_invalid_path() {
|
||||
.status(1)
|
||||
.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