Don't display submodule recipes in --list
(#2112)
This commit is contained in:
parent
de1256f1bd
commit
f5bb82dea3
@ -90,7 +90,7 @@ impl Subcommand {
|
|||||||
Dump => Self::dump(config, ast, justfile)?,
|
Dump => Self::dump(config, ast, justfile)?,
|
||||||
Format => Self::format(config, &search, src, ast)?,
|
Format => Self::format(config, &search, src, ast)?,
|
||||||
Groups => Self::groups(config, justfile),
|
Groups => Self::groups(config, justfile),
|
||||||
List { path } => Self::list_module(config, justfile, path)?,
|
List { path } => Self::list(config, justfile, path)?,
|
||||||
Show { path } => Self::show(config, justfile, path)?,
|
Show { path } => Self::show(config, justfile, path)?,
|
||||||
Summary => Self::summary(config, justfile),
|
Summary => Self::summary(config, justfile),
|
||||||
Variables => Self::variables(justfile),
|
Variables => Self::variables(justfile),
|
||||||
@ -479,11 +479,7 @@ impl Subcommand {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn list_module(
|
fn list(config: &Config, mut module: &Justfile, path: &ModulePath) -> Result<(), Error<'static>> {
|
||||||
config: &Config,
|
|
||||||
mut module: &Justfile,
|
|
||||||
path: &ModulePath,
|
|
||||||
) -> Result<(), Error<'static>> {
|
|
||||||
for name in &path.path {
|
for name in &path.path {
|
||||||
module = module
|
module = module
|
||||||
.modules
|
.modules
|
||||||
@ -491,21 +487,11 @@ impl Subcommand {
|
|||||||
.ok_or_else(|| Error::UnknownSubmodule { path: path.clone() })?;
|
.ok_or_else(|| Error::UnknownSubmodule { path: path.clone() })?;
|
||||||
}
|
}
|
||||||
|
|
||||||
Self::list(config, 0, module);
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn list(config: &Config, level: usize, justfile: &Justfile) {
|
|
||||||
let aliases = if config.no_aliases {
|
let aliases = if config.no_aliases {
|
||||||
BTreeMap::new()
|
BTreeMap::new()
|
||||||
} else {
|
} else {
|
||||||
let mut aliases = BTreeMap::<&str, Vec<&str>>::new();
|
let mut aliases = BTreeMap::<&str, Vec<&str>>::new();
|
||||||
for alias in justfile
|
for alias in module.aliases.values().filter(|alias| !alias.is_private()) {
|
||||||
.aliases
|
|
||||||
.values()
|
|
||||||
.filter(|alias| !alias.is_private())
|
|
||||||
{
|
|
||||||
aliases
|
aliases
|
||||||
.entry(alias.target.name.lexeme())
|
.entry(alias.target.name.lexeme())
|
||||||
.or_default()
|
.or_default()
|
||||||
@ -517,7 +503,7 @@ impl Subcommand {
|
|||||||
let signature_widths = {
|
let signature_widths = {
|
||||||
let mut signature_widths: BTreeMap<&str, usize> = BTreeMap::new();
|
let mut signature_widths: BTreeMap<&str, usize> = BTreeMap::new();
|
||||||
|
|
||||||
for (name, recipe) in &justfile.recipes {
|
for (name, recipe) in &module.recipes {
|
||||||
if !recipe.is_public() {
|
if !recipe.is_public() {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -545,13 +531,11 @@ impl Subcommand {
|
|||||||
.max()
|
.max()
|
||||||
.unwrap_or(0);
|
.unwrap_or(0);
|
||||||
|
|
||||||
if level == 0 {
|
|
||||||
print!("{}", config.list_heading);
|
print!("{}", config.list_heading);
|
||||||
}
|
|
||||||
|
|
||||||
let groups = {
|
let groups = {
|
||||||
let mut groups = BTreeMap::<Option<String>, Vec<&Recipe>>::new();
|
let mut groups = BTreeMap::<Option<String>, Vec<&Recipe>>::new();
|
||||||
for recipe in justfile.public_recipes(config) {
|
for recipe in module.public_recipes(config) {
|
||||||
let recipe_groups = recipe.groups();
|
let recipe_groups = recipe.groups();
|
||||||
if recipe_groups.is_empty() {
|
if recipe_groups.is_empty() {
|
||||||
groups.entry(None).or_default().push(recipe);
|
groups.entry(None).or_default().push(recipe);
|
||||||
@ -572,7 +556,7 @@ impl Subcommand {
|
|||||||
let no_groups = groups.contains_key(&None) && groups.len() == 1;
|
let no_groups = groups.contains_key(&None) && groups.len() == 1;
|
||||||
|
|
||||||
if !no_groups {
|
if !no_groups {
|
||||||
print!("{}", config.list_prefix.repeat(level + 1));
|
print!("{}", config.list_prefix);
|
||||||
if let Some(group_name) = group {
|
if let Some(group_name) = group {
|
||||||
println!("[{group_name}]");
|
println!("[{group_name}]");
|
||||||
} else {
|
} else {
|
||||||
@ -596,7 +580,7 @@ impl Subcommand {
|
|||||||
for line in doc.lines() {
|
for line in doc.lines() {
|
||||||
println!(
|
println!(
|
||||||
"{}{} {}",
|
"{}{} {}",
|
||||||
config.list_prefix.repeat(level + 1),
|
config.list_prefix,
|
||||||
config.color.stdout().doc().paint("#"),
|
config.color.stdout().doc().paint("#"),
|
||||||
config.color.stdout().doc().paint(line),
|
config.color.stdout().doc().paint(line),
|
||||||
);
|
);
|
||||||
@ -606,7 +590,7 @@ impl Subcommand {
|
|||||||
|
|
||||||
print!(
|
print!(
|
||||||
"{}{}",
|
"{}{}",
|
||||||
config.list_prefix.repeat(level + 1),
|
config.list_prefix,
|
||||||
RecipeSignature { name, recipe }.color_display(config.color.stdout())
|
RecipeSignature { name, recipe }.color_display(config.color.stdout())
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -626,14 +610,11 @@ impl Subcommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i, module) in justfile.modules(config).into_iter().enumerate() {
|
for submodule in module.modules(config) {
|
||||||
if i + groups.len() > 0 {
|
println!("{}{} ...", config.list_prefix, submodule.name(),);
|
||||||
println!();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
println!("{}{}:", config.list_prefix.repeat(level + 1), module.name());
|
Ok(())
|
||||||
Self::list(config, level + 1, module);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn show<'src>(
|
fn show<'src>(
|
||||||
|
@ -144,31 +144,3 @@ fn list_groups_with_custom_prefix() {
|
|||||||
)
|
)
|
||||||
.run();
|
.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn list_with_groups_in_modules() {
|
|
||||||
Test::new()
|
|
||||||
.justfile(
|
|
||||||
"
|
|
||||||
[group('FOO')]
|
|
||||||
foo:
|
|
||||||
|
|
||||||
mod bar
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.write("bar.just", "[group('BAZ')]\nbaz:")
|
|
||||||
.test_round_trip(false)
|
|
||||||
.args(["--unstable", "--list"])
|
|
||||||
.stdout(
|
|
||||||
"
|
|
||||||
Available recipes:
|
|
||||||
[FOO]
|
|
||||||
foo
|
|
||||||
|
|
||||||
bar:
|
|
||||||
[BAZ]
|
|
||||||
baz
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.run();
|
|
||||||
}
|
|
||||||
|
112
tests/list.rs
112
tests/list.rs
@ -1,54 +1,5 @@
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn list_displays_recipes_in_submodules() {
|
|
||||||
Test::new()
|
|
||||||
.write("foo.just", "bar:\n @echo FOO")
|
|
||||||
.justfile(
|
|
||||||
"
|
|
||||||
mod foo
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.test_round_trip(false)
|
|
||||||
.arg("--unstable")
|
|
||||||
.arg("--list")
|
|
||||||
.stdout(
|
|
||||||
"
|
|
||||||
Available recipes:
|
|
||||||
foo:
|
|
||||||
bar
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn modules_are_space_separated_in_output() {
|
|
||||||
Test::new()
|
|
||||||
.write("foo.just", "foo:")
|
|
||||||
.write("bar.just", "bar:")
|
|
||||||
.justfile(
|
|
||||||
"
|
|
||||||
mod foo
|
|
||||||
|
|
||||||
mod bar
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.test_round_trip(false)
|
|
||||||
.args(["--unstable", "--list"])
|
|
||||||
.stdout(
|
|
||||||
"
|
|
||||||
Available recipes:
|
|
||||||
bar:
|
|
||||||
bar
|
|
||||||
|
|
||||||
foo:
|
|
||||||
foo
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn modules_unsorted() {
|
fn modules_unsorted() {
|
||||||
Test::new()
|
Test::new()
|
||||||
@ -66,67 +17,8 @@ fn modules_unsorted() {
|
|||||||
.stdout(
|
.stdout(
|
||||||
"
|
"
|
||||||
Available recipes:
|
Available recipes:
|
||||||
foo:
|
foo ...
|
||||||
foo
|
bar ...
|
||||||
|
|
||||||
bar:
|
|
||||||
bar
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn module_recipe_list_alignment_ignores_private_recipes() {
|
|
||||||
Test::new()
|
|
||||||
.write(
|
|
||||||
"foo.just",
|
|
||||||
"
|
|
||||||
# foos
|
|
||||||
foo:
|
|
||||||
@echo FOO
|
|
||||||
|
|
||||||
[private]
|
|
||||||
barbarbar:
|
|
||||||
@echo BAR
|
|
||||||
|
|
||||||
@_bazbazbaz:
|
|
||||||
@echo BAZ
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.justfile("mod foo")
|
|
||||||
.test_round_trip(false)
|
|
||||||
.arg("--unstable")
|
|
||||||
.arg("--list")
|
|
||||||
.stdout(
|
|
||||||
"
|
|
||||||
Available recipes:
|
|
||||||
foo:
|
|
||||||
foo # foos
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.run();
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn nested_modules_are_properly_indented() {
|
|
||||||
Test::new()
|
|
||||||
.write("foo.just", "mod bar")
|
|
||||||
.write("bar.just", "baz:\n @echo FOO")
|
|
||||||
.justfile(
|
|
||||||
"
|
|
||||||
mod foo
|
|
||||||
",
|
|
||||||
)
|
|
||||||
.test_round_trip(false)
|
|
||||||
.arg("--unstable")
|
|
||||||
.arg("--list")
|
|
||||||
.stdout(
|
|
||||||
"
|
|
||||||
Available recipes:
|
|
||||||
foo:
|
|
||||||
bar:
|
|
||||||
baz
|
|
||||||
",
|
",
|
||||||
)
|
)
|
||||||
.run();
|
.run();
|
||||||
|
Loading…
Reference in New Issue
Block a user