Compare commits

...

8 commits

Author SHA1 Message Date
Casey Rodarmor c3b7abb379 Fix JSON tests 2024-06-28 21:10:24 -07:00
Casey Rodarmor e3179beb0d Modify 2024-06-28 21:04:24 -07:00
Casey Rodarmor be67ae32c5 Amend 2024-06-28 21:03:23 -07:00
Casey Rodarmor 0ab0ddb8c1 Enhance 2024-06-28 21:02:44 -07:00
Casey Rodarmor e2eff31079 Reform 2024-06-28 21:02:06 -07:00
Casey Rodarmor 1dc43a51cd Adapt 2024-06-28 21:01:28 -07:00
Casey Rodarmor fb0f16bc29 Reorder arguments to justfile 2024-06-28 21:00:46 -07:00
Casey Rodarmor 63a6482f33 Reorder arguments to analyzer 2024-06-28 20:59:39 -07:00
8 changed files with 41 additions and 22 deletions

View file

@ -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(),

View file

@ -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)
}
}

View file

@ -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>),

View file

@ -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)]

View file

@ -389,10 +389,10 @@ impl<'run, 'src> Parser<'run, 'src> {
items.push(Item::Module {
absolute: None,
doc,
name,
optional,
relative,
doc,
});
}
Some(Keyword::Set)

View file

@ -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(),

View file

@ -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 {

View file

@ -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": {