177516bcbe
This diff makes positional argument parsing much cleaner, along with adding a bunch of tests. Just's positional argument parsing is rather, complex, so hopefully this reform allows it to both be correct and stay correct. User-visible changes: - `just ..` is now accepted, with the same effect as `just ../` - `just .` is also accepted, with the same effect as `just` - It is now an error to pass arguments or overrides to subcommands that do not accept them, namely `--dump`, `--edit`, `--list`, `--show`, and `--summary`. It is also an error to pass arguments to `--evaluate`, although `--evaluate` does of course still accept overrides. (This is a breaking change, but hopefully worth it, as it will allow us to add arguments to subcommands which did not previously take them, if we so desire.) - Subcommands which do not accept arguments may now accept a single search-directory argument, so `just --list ../` and `just --dump foo/` are now accepted, with the former starting the search for the justfile to list in the parent directory, and the latter starting the search for the justfile to dump in `foo`.
20 lines
297 B
Rust
20 lines
297 B
Rust
use crate::common::*;
|
|
|
|
#[derive(PartialEq, Clone, Debug)]
|
|
pub(crate) enum Subcommand {
|
|
Dump,
|
|
Edit,
|
|
Evaluate {
|
|
overrides: BTreeMap<String, String>,
|
|
},
|
|
Run {
|
|
overrides: BTreeMap<String, String>,
|
|
arguments: Vec<String>,
|
|
},
|
|
List,
|
|
Show {
|
|
name: String,
|
|
},
|
|
Summary,
|
|
}
|