mirror of
https://github.com/casey/just
synced 2024-09-30 05:03:46 +00:00
Compare commits
8 commits
3a9d0ad9a2
...
c3b7abb379
Author | SHA1 | Date | |
---|---|---|---|
c3b7abb379 | |||
e3179beb0d | |||
be67ae32c5 | |||
0ab0ddb8c1 | |||
e2eff31079 | |||
1dc43a51cd | |||
fb0f16bc29 | |||
63a6482f33 |
|
@ -9,24 +9,24 @@ pub(crate) struct Analyzer<'src> {
|
|||
|
||||
impl<'src> Analyzer<'src> {
|
||||
pub(crate) fn analyze(
|
||||
loaded: &[PathBuf],
|
||||
paths: &HashMap<PathBuf, PathBuf>,
|
||||
asts: &HashMap<PathBuf, Ast<'src>>,
|
||||
root: &Path,
|
||||
name: Option<Name<'src>>,
|
||||
doc: Option<&'src str>,
|
||||
loaded: &[PathBuf],
|
||||
name: Option<Name<'src>>,
|
||||
paths: &HashMap<PathBuf, PathBuf>,
|
||||
root: &Path,
|
||||
) -> CompileResult<'src, Justfile<'src>> {
|
||||
Self::default().justfile(loaded, paths, asts, root, name, doc)
|
||||
Self::default().justfile(asts, doc, loaded, name, paths, root)
|
||||
}
|
||||
|
||||
fn justfile(
|
||||
mut self,
|
||||
loaded: &[PathBuf],
|
||||
paths: &HashMap<PathBuf, PathBuf>,
|
||||
asts: &HashMap<PathBuf, Ast<'src>>,
|
||||
root: &Path,
|
||||
name: Option<Name<'src>>,
|
||||
doc: Option<&'src str>,
|
||||
loaded: &[PathBuf],
|
||||
name: Option<Name<'src>>,
|
||||
paths: &HashMap<PathBuf, PathBuf>,
|
||||
root: &Path,
|
||||
) -> CompileResult<'src, Justfile<'src>> {
|
||||
let mut recipes = Vec::new();
|
||||
|
||||
|
@ -95,12 +95,12 @@ impl<'src> Analyzer<'src> {
|
|||
if let Some(absolute) = absolute {
|
||||
define(*name, "module", false)?;
|
||||
modules.insert(Self::analyze(
|
||||
loaded,
|
||||
paths,
|
||||
asts,
|
||||
absolute,
|
||||
Some(*name),
|
||||
*doc,
|
||||
loaded,
|
||||
Some(*name),
|
||||
paths,
|
||||
absolute,
|
||||
)?);
|
||||
}
|
||||
}
|
||||
|
@ -186,10 +186,10 @@ impl<'src> Analyzer<'src> {
|
|||
Rc::clone(next)
|
||||
}),
|
||||
}),
|
||||
doc,
|
||||
loaded: loaded.into(),
|
||||
modules,
|
||||
name,
|
||||
doc,
|
||||
recipes,
|
||||
settings,
|
||||
source: root.into(),
|
||||
|
|
|
@ -108,7 +108,7 @@ impl Compiler {
|
|||
asts.insert(current.path, ast.clone());
|
||||
}
|
||||
|
||||
let justfile = Analyzer::analyze(&loaded, &paths, &asts, root, None, None)?;
|
||||
let justfile = Analyzer::analyze(&asts, None, &loaded, None, &paths, root)?;
|
||||
|
||||
Ok(Compilation {
|
||||
asts,
|
||||
|
@ -185,7 +185,7 @@ impl Compiler {
|
|||
asts.insert(root.clone(), ast);
|
||||
let mut paths: HashMap<PathBuf, PathBuf> = HashMap::new();
|
||||
paths.insert(root.clone(), root.clone());
|
||||
Analyzer::analyze(&[], &paths, &asts, &root, None, None)
|
||||
Analyzer::analyze(&asts, None, &[], None, &paths, &root)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,10 +14,10 @@ pub(crate) enum Item<'src> {
|
|||
},
|
||||
Module {
|
||||
absolute: Option<PathBuf>,
|
||||
doc: Option<&'src str>,
|
||||
name: Name<'src>,
|
||||
optional: bool,
|
||||
relative: Option<StringLiteral<'src>>,
|
||||
doc: Option<&'src str>,
|
||||
},
|
||||
Recipe(UnresolvedRecipe<'src>),
|
||||
Set(Set<'src>),
|
||||
|
|
|
@ -13,6 +13,7 @@ struct Invocation<'src: 'run, 'run> {
|
|||
pub(crate) struct Justfile<'src> {
|
||||
pub(crate) aliases: Table<'src, Alias<'src>>,
|
||||
pub(crate) assignments: Table<'src, Assignment<'src>>,
|
||||
pub(crate) doc: Option<&'src str>,
|
||||
#[serde(rename = "first", serialize_with = "keyed::serialize_option")]
|
||||
pub(crate) default: Option<Rc<Recipe<'src>>>,
|
||||
#[serde(skip)]
|
||||
|
@ -20,8 +21,6 @@ pub(crate) struct Justfile<'src> {
|
|||
pub(crate) modules: Table<'src, Justfile<'src>>,
|
||||
#[serde(skip)]
|
||||
pub(crate) name: Option<Name<'src>>,
|
||||
#[serde(skip)]
|
||||
pub(crate) doc: Option<&'src str>,
|
||||
pub(crate) recipes: Table<'src, Rc<Recipe<'src>>>,
|
||||
pub(crate) settings: Settings<'src>,
|
||||
#[serde(skip)]
|
||||
|
|
|
@ -389,10 +389,10 @@ impl<'run, 'src> Parser<'run, 'src> {
|
|||
|
||||
items.push(Item::Module {
|
||||
absolute: None,
|
||||
doc,
|
||||
name,
|
||||
optional,
|
||||
relative,
|
||||
doc,
|
||||
});
|
||||
}
|
||||
Some(Keyword::Set)
|
||||
|
|
|
@ -603,7 +603,7 @@ impl Subcommand {
|
|||
}
|
||||
} else {
|
||||
for submodule in module.modules(config) {
|
||||
print!("{list_prefix}{} ...", submodule.name(),);
|
||||
print!("{list_prefix}{} ...", submodule.name());
|
||||
format_doc(
|
||||
config,
|
||||
submodule.name(),
|
||||
|
|
|
@ -77,7 +77,7 @@ pub(crate) fn analysis_error(
|
|||
let mut paths: HashMap<PathBuf, PathBuf> = HashMap::new();
|
||||
paths.insert("justfile".into(), "justfile".into());
|
||||
|
||||
match Analyzer::analyze(&[], &paths, &asts, &root, None, None) {
|
||||
match Analyzer::analyze(&asts, None, &[], None, &paths, &root) {
|
||||
Ok(_) => panic!("Analysis unexpectedly succeeded"),
|
||||
Err(have) => {
|
||||
let want = CompileError {
|
||||
|
|
|
@ -18,6 +18,7 @@ fn alias() {
|
|||
",
|
||||
json!({
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"aliases": {
|
||||
"f": {
|
||||
"name": "f",
|
||||
|
@ -80,6 +81,7 @@ fn assignment() {
|
|||
}
|
||||
},
|
||||
"first": null,
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {},
|
||||
"settings": {
|
||||
|
@ -117,6 +119,7 @@ fn body() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"foo": {
|
||||
|
@ -170,6 +173,7 @@ fn dependencies() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"bar": {
|
||||
|
@ -248,6 +252,7 @@ fn dependency_argument() {
|
|||
json!({
|
||||
"aliases": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"assignments": {
|
||||
"x": {
|
||||
"export": false,
|
||||
|
@ -341,6 +346,7 @@ fn duplicate_recipes() {
|
|||
",
|
||||
json!({
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"aliases": {
|
||||
"f": {
|
||||
"attributes": [],
|
||||
|
@ -414,6 +420,7 @@ fn duplicate_variables() {
|
|||
}
|
||||
},
|
||||
"first": null,
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {},
|
||||
"settings": {
|
||||
|
@ -446,6 +453,7 @@ fn doc_comment() {
|
|||
json!({
|
||||
"aliases": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"assignments": {},
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
|
@ -494,6 +502,7 @@ fn empty_justfile() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": null,
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {},
|
||||
"settings": {
|
||||
|
@ -533,6 +542,7 @@ fn parameters() {
|
|||
json!({
|
||||
"aliases": {},
|
||||
"first": "a",
|
||||
"doc": null,
|
||||
"assignments": {},
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
|
@ -685,6 +695,7 @@ fn priors() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "a",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"a": {
|
||||
|
@ -768,6 +779,7 @@ fn private() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "_foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"_foo": {
|
||||
|
@ -815,6 +827,7 @@ fn quiet() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"foo": {
|
||||
|
@ -874,6 +887,7 @@ fn settings() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"foo": {
|
||||
|
@ -927,6 +941,7 @@ fn shebang() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"foo": {
|
||||
|
@ -974,6 +989,7 @@ fn simple() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"foo": {
|
||||
|
@ -1024,6 +1040,7 @@ fn attribute() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "foo",
|
||||
"doc": null,
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"foo": {
|
||||
|
@ -1068,6 +1085,7 @@ fn module() {
|
|||
Test::new()
|
||||
.justfile(
|
||||
"
|
||||
# hello
|
||||
mod foo
|
||||
",
|
||||
)
|
||||
|
@ -1082,11 +1100,13 @@ fn module() {
|
|||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": null,
|
||||
"doc": null,
|
||||
"modules": {
|
||||
"foo": {
|
||||
"aliases": {},
|
||||
"assignments": {},
|
||||
"first": "bar",
|
||||
"doc": "hello",
|
||||
"modules": {},
|
||||
"recipes": {
|
||||
"bar": {
|
||||
|
|
Loading…
Reference in a new issue