From 3f3d1b711851d2a685b6aad01f4a617a5fdd101a Mon Sep 17 00:00:00 2001 From: Maksymilian Mozolewski Date: Sun, 23 Feb 2025 15:25:35 +0000 Subject: [PATCH 1/8] chore: create 0.9.7 release notes (#318) --- release-notes/0.9.7.md | 49 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 release-notes/0.9.7.md diff --git a/release-notes/0.9.7.md b/release-notes/0.9.7.md new file mode 100644 index 0000000000..ce7ca0217f --- /dev/null +++ b/release-notes/0.9.7.md @@ -0,0 +1,49 @@ +# [`bevy_mod_scripting`](https://github.com/makspll/bevy_mod_scripting/) 0.9.7 is out! + +![image](https://github.com/user-attachments/assets/6ae0f927-ea1b-4d90-a809-4cc513e49b18) + +## Summary +- Adds ability to construct arbitrary types and enums via `construct` global functions: +```lua +local myStruct = construct(StructType, { + foo = bar + zoo = construct(NestedType { + foo = bar + }) +}) + +local myEnum = construct(EnumType, { + variant = "StructVariant" + foo = Bar +}) + +local myTupleStructEnum = construct(EnumType, { + variant = "TupleStructVariant" + _1 = bar +}) +``` + +- BMS will now automatically register components with `ReflectComponent` type data, so that you can query them as components *before* inserting them into entities. i.e.: +```rust +#[derive(Reflect, ..)] +#[reflect(Component)] +struct MyComp; +``` + +- `ReflectAllocator` diagnostics are now available conveniently packaged as a plugin (measuring current allocation count + deallocations): +```rust +app.add_plugins(AllocatorDiagnosticPlugin) +``` + +- Initial documentation generation from LAD files is now being published with the book over at https://makspll.github.io/bevy_mod_scripting/ladfiles/bindings.lad.html + - This is still a prototype, but will contain useful information on bindings BMS exports by default. + - LAD files are in a good shape, but some details need to be polished before they become stable + - work on other backends (other than mdbook) should be possible now, albeit changes are expected + +## Fixes +- When an asset handle is requested and immediately dropped, the previously confusing error: `A script was added but it's asset was not found, failed to compute metadata. This script will not be loaded.` was downgraded to a warning with a helpful hint. +- Cases where resource/component/allocation locks would not be correctly released in the case of script function errors or short-circuting logic were fixed +- The `bevy/reflect_functions` and `bevy/file_watcher` feature flags are no longer pulled into the dependency tree by BMS, reducing bloat. + +## Changelog +See a detailed changelog [here](https://github.com/makspll/bevy_mod_scripting/blob/main/CHANGELOG.md) From 64bf0daf6017de60a0d7eae6188506e293eca241 Mon Sep 17 00:00:00 2001 From: Maksymilian Mozolewski Date: Sun, 23 Feb 2025 17:54:11 +0000 Subject: [PATCH 2/8] feat(mdbook): improve mdbook generics behaviour and fix broken links (#319) --- .../src/argument_visitor.rs | 14 +- .../mdbook_lad_preprocessor/src/lib.rs | 130 ++++++--- .../mdbook_lad_preprocessor/src/markdown.rs | 2 +- .../mdbook_lad_preprocessor/src/sections.rs | 257 ++++++------------ .../tests/book_integration_tests.rs | 2 +- .../example_ladfile/expected/lad/types.md | 10 - .../books/example_ladfile/expected/parent.md | 0 .../expected/{test.lad.md => parent/lad.md} | 0 .../expected/{ => parent}/lad/functions.md | 0 .../{ => parent}/lad/functions/hello_world.md | 0 .../expected/{ => parent}/lad/globals.md | 0 .../expected/parent/lad/types.md | 10 + .../books/example_ladfile/src/SUMMARY.md | 3 +- .../tests/books/example_ladfile/src/parent.md | 0 crates/ladfile/src/lib.rs | 13 + docs/book.toml | 2 + docs/src/Generated/generated-intro.md | 1 + 17 files changed, 211 insertions(+), 233 deletions(-) delete mode 100644 crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/types.md create mode 100644 crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent.md rename crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/{test.lad.md => parent/lad.md} (100%) rename crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/{ => parent}/lad/functions.md (100%) rename crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/{ => parent}/lad/functions/hello_world.md (100%) rename crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/{ => parent}/lad/globals.md (100%) create mode 100644 crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/types.md create mode 100644 crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/parent.md create mode 100644 docs/src/Generated/generated-intro.md diff --git a/crates/lad_backends/mdbook_lad_preprocessor/src/argument_visitor.rs b/crates/lad_backends/mdbook_lad_preprocessor/src/argument_visitor.rs index db7eefa738..c86cfd2b5c 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/src/argument_visitor.rs +++ b/crates/lad_backends/mdbook_lad_preprocessor/src/argument_visitor.rs @@ -25,22 +25,18 @@ impl<'a> MarkdownArgumentVisitor<'a> { impl ArgumentVisitor for MarkdownArgumentVisitor<'_> { fn visit_lad_type_id(&mut self, type_id: &ladfile::LadTypeId) { - let mut buffer = String::new(); - // Write identifier - buffer.push_str(&self.ladfile.get_type_identifier(type_id)); + self.buffer.text(self.ladfile.get_type_identifier(type_id)); if let Some(generics) = self.ladfile.get_type_generics(type_id) { - buffer.push('<'); + self.buffer.text('<'); for (i, generic) in generics.iter().enumerate() { + self.visit_lad_type_id(&generic.type_id); if i > 0 { - buffer.push_str(", "); + self.buffer.text(", "); } - buffer.push_str(&self.ladfile.get_type_identifier(&generic.type_id)); } - buffer.push('>'); + self.buffer.text('>'); } - - self.buffer.text(buffer); } fn walk_option(&mut self, inner: &ladfile::LadArgumentKind) { diff --git a/crates/lad_backends/mdbook_lad_preprocessor/src/lib.rs b/crates/lad_backends/mdbook_lad_preprocessor/src/lib.rs index 8ca2b16c81..9912e05376 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/src/lib.rs +++ b/crates/lad_backends/mdbook_lad_preprocessor/src/lib.rs @@ -2,6 +2,7 @@ #![allow(missing_docs)] use mdbook::{errors::Error, preprocess::Preprocessor}; +use sections::Section; mod argument_visitor; mod markdown; mod sections; @@ -10,6 +11,46 @@ const LAD_EXTENSION: &str = "lad.json"; pub struct LADPreprocessor; +impl LADPreprocessor { + /// Checks if a chapter is a LAD file. + fn is_lad_file(chapter: &mdbook::book::Chapter) -> bool { + chapter + .source_path + .as_ref() + .and_then(|a| a.file_name()) + .map(|s| s.to_string_lossy().ends_with(LAD_EXTENSION)) + .unwrap_or(false) + } + + /// Process a chapter that is a LAD file. + /// + /// `parent` is the optional parent chapter reference, + /// and `chapter_index` is the index of the chapter among its siblings. + fn process_lad_chapter( + chapter: &mdbook::book::Chapter, + parent: Option<&mdbook::book::Chapter>, + chapter_index: usize, + ) -> Result { + let chapter_title = chapter.name.trim_end_matches(".lad.json").to_owned(); + let ladfile = ladfile::parse_lad_file(&chapter.content) + .map_err(|e| Error::new(e).context("Failed to parse LAD file"))?; + log::debug!( + "Parsed LAD file: {}", + serde_json::to_string_pretty(&ladfile).unwrap_or_default() + ); + let new_chapter = Section::Summary { + ladfile: &ladfile, + title: Some(chapter_title), + } + .into_chapter(parent, chapter_index); + log::debug!( + "New chapter: {}", + serde_json::to_string_pretty(&new_chapter).unwrap_or_default() + ); + Ok(new_chapter) + } +} + impl Preprocessor for LADPreprocessor { fn name(&self) -> &str { "lad-preprocessor" @@ -20,62 +61,69 @@ impl Preprocessor for LADPreprocessor { _ctx: &mdbook::preprocess::PreprocessorContext, mut book: mdbook::book::Book, ) -> mdbook::errors::Result { - let mut errors = Vec::default(); + let mut errors = Vec::new(); + // first replace children in parents book.for_each_mut(|item| { - if let mdbook::BookItem::Chapter(chapter) = item { - let is_lad_chapter = chapter - .source_path - .as_ref() - .and_then(|a| a.file_name()) - .is_some_and(|a| a.to_string_lossy().ends_with(LAD_EXTENSION)); + if let mdbook::BookItem::Chapter(parent) = item { + // First, collect the indices and new chapters for LAD file chapters. + let replacements: Vec<(usize, mdbook::book::Chapter)> = parent + .sub_items + .iter() + .enumerate() + .filter_map(|(idx, item)| { + if let mdbook::BookItem::Chapter(chapter) = item { + if LADPreprocessor::is_lad_file(chapter) { + match LADPreprocessor::process_lad_chapter( + chapter, + Some(parent), + idx, + ) { + Ok(new_chapter) => return Some((idx, new_chapter)), + Err(e) => { + errors.push(e); + return None; + } + } + } + } + None + }) + .collect(); + + // Then, apply the replacements. + for (idx, new_chapter) in replacements { + if let mdbook::BookItem::Chapter(chapter) = &mut parent.sub_items[idx] { + *chapter = new_chapter; + } + } + } + }); - if !is_lad_chapter { - log::debug!("Skipping non-LAD chapter: {:?}", chapter.source_path); - log::trace!( - "Non-LAD chapter: {}", - serde_json::to_string_pretty(&chapter).unwrap_or_default() - ); + // then try match items themselves + book.for_each_mut(|item| { + if let mdbook::BookItem::Chapter(chapter) = item { + if !LADPreprocessor::is_lad_file(chapter) { return; } - let chapter_title = chapter.name.clone(); - - let lad = match ladfile::parse_lad_file(&chapter.content) { - Ok(lad) => lad, + let new_chapter = match LADPreprocessor::process_lad_chapter(chapter, None, 0) { + Ok(new_chapter) => new_chapter, Err(e) => { - log::debug!("Failed to parse LAD file: {:?}", e); - errors.push(Error::new(e).context("Failed to parse LAD file")); + errors.push(e); return; } }; - log::debug!( - "Parsed LAD file: {}", - serde_json::to_string_pretty(&lad).unwrap_or_default() - ); - - let sections = sections::lad_file_to_sections(&lad, Some(chapter_title)); - - let new_chapter = sections::section_to_chapter( - sections, - Some(chapter), - chapter.parent_names.clone(), - chapter.number.clone(), - None, - None, - ); - - // serialize chapter to json - log::debug!( - "New chapter: {}", - serde_json::to_string_pretty(&new_chapter).unwrap_or_default() - ); - *chapter = new_chapter; } }); + log::debug!( + "Book after LAD processing: {}", + serde_json::to_string_pretty(&book).unwrap_or_default() + ); + if !errors.is_empty() { // return on first error for error in errors { diff --git a/crates/lad_backends/mdbook_lad_preprocessor/src/markdown.rs b/crates/lad_backends/mdbook_lad_preprocessor/src/markdown.rs index 68a388c023..51c099cb5f 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/src/markdown.rs +++ b/crates/lad_backends/mdbook_lad_preprocessor/src/markdown.rs @@ -1,6 +1,6 @@ use std::borrow::Cow; -/// Takes the first n characters from the markdown, without splitting any formatting +/// Takes the first n characters from the markdown, without splitting any formatting. pub(crate) fn markdown_substring(markdown: &str, length: usize) -> &str { if markdown.len() <= length { return markdown; diff --git a/crates/lad_backends/mdbook_lad_preprocessor/src/sections.rs b/crates/lad_backends/mdbook_lad_preprocessor/src/sections.rs index 5828b849e9..3843518c2d 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/src/sections.rs +++ b/crates/lad_backends/mdbook_lad_preprocessor/src/sections.rs @@ -4,152 +4,16 @@ use crate::{ markdown_vec, }; use ladfile::{ - ArgumentVisitor, LadArgument, LadFile, LadFunction, LadInstance, LadType, LadTypeLayout, + ArgumentVisitor, LadArgument, LadFile, LadFunction, LadInstance, LadType, LadTypeId, + LadTypeLayout, }; -use mdbook::book::{Chapter, SectionNumber}; -use std::{borrow::Cow, collections::HashSet, path::PathBuf}; - -pub(crate) fn section_to_chapter( - section: SectionAndChildren, - original_chapter: Option<&Chapter>, - parent_names: Vec, - number: Option, - root_path: Option, - root_source_path: Option, -) -> Chapter { - let mut parent_builder = MarkdownBuilder::new(); - section.section.to_markdown(&mut parent_builder); - - // important to reset the extension of the parent, since when we're nesting - // we add the filename with .md, but if the parent is being emitted as markdown, then when - // we create the child, we will create the `parent.md` file as a folder, then when we emit - // the parent itself, the file (directory) will already exist - let new_path = root_path - .unwrap_or_default() - .with_extension("") - .join(section.section.file_name()); - - let new_source_path = root_source_path - .unwrap_or_default() - .with_extension("") - .join(section.section.file_name()); - - let current_number = number.clone().unwrap_or_default(); - - let children_chapters = section - .children - .into_iter() - .enumerate() - .map(|(index, child)| { - let mut new_number = current_number.clone(); - new_number.push(index as u32); - section_to_chapter( - child, - None, - vec![section.section.title()], - Some(new_number), - Some(new_path.clone()), - Some(new_source_path.clone()), - ) - }) - .map(mdbook::BookItem::Chapter) - .collect(); - - if let Some(original) = original_chapter { - // override content only - log::debug!( - "Setting .md extension for chapter paths: {:?}, {:?}.", - original.path, - original.source_path - ); - - Chapter { - content: parent_builder.build(), - sub_items: children_chapters, - path: original.path.as_ref().map(|p| p.with_extension("md")), - source_path: original - .source_path - .as_ref() - .map(|p| p.with_extension("md")), - ..original.clone() - } - } else { - Chapter { - name: section.section.title(), - content: parent_builder.build(), - number, - sub_items: children_chapters, - path: Some(new_path), - source_path: Some(new_source_path), - parent_names, - } - } -} - -fn section_to_section_and_children(section: Section<'_>) -> SectionAndChildren<'_> { - let children = section - .children() - .into_iter() - .map(section_to_section_and_children) - .collect(); +use mdbook::book::Chapter; +use std::{borrow::Cow, collections::HashSet}; - SectionAndChildren { children, section } -} - -pub(crate) fn lad_file_to_sections( - ladfile: &ladfile::LadFile, - title: Option, -) -> SectionAndChildren<'_> { - section_to_section_and_children(Section::Summary { ladfile, title }) - // build a hierarchy as follows: - // - Summary - // - Instances - // - Functions - // - Global Function Detail 1 - // - Types - // - Type1 - // - Type detail 1 - // - Function detail 1 - // - Function detail 2 - // let mut types_children = ladfile - // .types - // .iter() - // .map(|(_, lad_type)| (lad_type, Section::TypeDetail { lad_type, ladfile })) - // .map(|(lad_type, section)| SectionAndChildren { - // section, - // children: lad_type - // .associated_functions - // .iter() - // .filter_map(|f| { - // let function = ladfile.functions.get(f)?; - // Some(SectionAndChildren { - // section: Section::FunctionDetail { function, ladfile }, - // children: vec![], - // }) - // }) - // .collect(), - // }) - // .collect(); - - // // now add a `functions` subsection before all types, for global functions - - // SectionAndChildren { - // section: summary, - // children: vec![ - // SectionAndChildren { - // section: Section::TypeSummary { ladfile }, - // children: types_children, - // }, - // SectionAndChildren { - // section: Section::FunctionSummary { ladfile }, - // children: vec![], - // }, - // ], - // } -} -pub(crate) struct SectionAndChildren<'a> { - section: Section<'a>, - children: Vec>, +fn print_type(ladfile: &LadFile, type_: &LadTypeId) -> String { + let mut visitor = MarkdownArgumentVisitor::new(ladfile); + visitor.visit_lad_type_id(type_); + visitor.build() } /// Sections which convert to single markdown files @@ -165,6 +29,7 @@ pub(crate) enum Section<'a> { /// A link directory to all global instances within the ladfile InstancesSummary { ladfile: &'a ladfile::LadFile }, TypeDetail { + lad_type_id: &'a LadTypeId, lad_type: &'a LadType, ladfile: &'a ladfile::LadFile, }, @@ -176,10 +41,56 @@ pub(crate) enum Section<'a> { /// Makes a filename safe to put in links pub fn linkify_filename(name: impl Into) -> String { - name.into().to_lowercase().replace(" ", "_") + name.into() + .to_lowercase() + .replace(" ", "_") + .replace("<", "") + .replace(">", "") } impl<'a> Section<'a> { + /// convert into a chapter, including children + pub(crate) fn into_chapter(self, parent: Option<&Chapter>, index: usize) -> Chapter { + let mut builder = MarkdownBuilder::new(); + self.to_markdown(&mut builder); + + let default_chapter = Chapter::default(); + let parent = match parent { + Some(parent) => parent, + None => &default_chapter, + }; + + let parent_path = parent.path.clone().unwrap_or_default().with_extension(""); + let parent_source_path = parent + .source_path + .clone() + .unwrap_or_default() + .with_extension(""); + + let mut current_number = parent.number.clone().unwrap_or_default(); + current_number.push(index as u32); + + let mut chapter = Chapter { + name: self.title(), + content: builder.build(), + parent_names: vec![parent.name.clone()], + path: Some(parent_path.join(self.file_name())), + source_path: Some(parent_source_path.join(self.file_name())), + number: Some(current_number), + sub_items: vec![], + }; + + chapter.sub_items = self + .children() + .into_iter() + .enumerate() + .map(|(i, c)| c.into_chapter(Some(&chapter), i)) + .map(mdbook::BookItem::Chapter) + .collect(); + + chapter + } + pub(crate) fn title(&self) -> String { match self { Section::Summary { title, .. } => { @@ -189,8 +100,10 @@ impl<'a> Section<'a> { Section::FunctionSummary { .. } => "Functions".to_owned(), Section::InstancesSummary { .. } => "Globals".to_owned(), Section::TypeDetail { - lad_type: type_id, .. - } => type_id.identifier.clone(), + ladfile, + lad_type_id, + .. + } => print_type(ladfile, lad_type_id), Section::FunctionDetail { function, .. } => function.identifier.to_string(), } } @@ -211,7 +124,11 @@ impl<'a> Section<'a> { Section::TypeSummary { ladfile } => ladfile .types .iter() - .map(|(_, lad_type)| Section::TypeDetail { lad_type, ladfile }) + .map(|(lad_type_id, lad_type)| Section::TypeDetail { + lad_type, + ladfile, + lad_type_id, + }) .collect(), Section::FunctionSummary { ladfile } => { @@ -233,7 +150,9 @@ impl<'a> Section<'a> { Section::InstancesSummary { .. } => { vec![] } - Section::TypeDetail { lad_type, ladfile } => lad_type + Section::TypeDetail { + lad_type, ladfile, .. + } => lad_type .associated_functions .iter() .filter_map(|f| { @@ -289,10 +208,11 @@ impl<'a> Section<'a> { vec![SectionItem::InstancesSummary { instances }] } Section::TypeSummary { ladfile } => { - let types = ladfile.types.values().collect::>(); + let types = ladfile.types.keys().collect::>(); vec![SectionItem::TypesSummary { types, types_directory: linkify_filename(self.title()), + ladfile, }] } Section::FunctionSummary { ladfile } => { @@ -313,7 +233,9 @@ impl<'a> Section<'a> { functions_directory: "functions".to_owned(), }] } - Section::TypeDetail { lad_type, ladfile } => { + Section::TypeDetail { + lad_type, ladfile, .. + } => { let functions = lad_type .associated_functions .iter() @@ -327,7 +249,7 @@ impl<'a> Section<'a> { SectionItem::Description { lad_type }, SectionItem::FunctionsSummary { functions, - functions_directory: linkify_filename(&lad_type.identifier), + functions_directory: linkify_filename(self.title()), }, ] } @@ -370,8 +292,9 @@ pub enum SectionItem<'a> { ladfile: &'a ladfile::LadFile, }, TypesSummary { - types: Vec<&'a LadType>, + types: Vec<&'a LadTypeId>, types_directory: String, + ladfile: &'a ladfile::LadFile, }, InstancesSummary { instances: Vec<(&'a Cow<'static, str>, &'a LadInstance)>, @@ -467,7 +390,7 @@ impl IntoMarkdown for SectionItem<'_> { builder.row(markdown_vec![ Markdown::new_paragraph(first_col).code(), Markdown::Link { - text: second_col.to_owned(), + text: second_col.to_owned().replace("\n", " "), url: format!("./{}/{}.md", functions_path, function.identifier), anchor: false } @@ -478,6 +401,7 @@ impl IntoMarkdown for SectionItem<'_> { SectionItem::TypesSummary { types, types_directory, + ladfile, } => { builder.heading(2, "Types"); @@ -485,29 +409,22 @@ impl IntoMarkdown for SectionItem<'_> { builder.table(|builder| { builder.headers(vec!["Type", "Summary"]); for type_ in types.iter() { - let first_col = type_.identifier.to_string(); + let printed_type = print_type(ladfile, type_); + + let documentation = ladfile.get_type_documentation(type_); // first line with content from documentation trimmed to 100 chars - let second_col = type_ - .documentation - .as_deref() - .map(|doc| { - let doc = doc.trim(); - if doc.len() > 100 { - format!("{}...", &doc[..100]) - } else { - doc.to_owned() - } - }) - .unwrap_or_else(|| NO_DOCS_STRING.to_owned()); + let second_col = documentation + .map(|doc| markdown_substring(doc, 100)) + .unwrap_or_else(|| NO_DOCS_STRING); builder.row(markdown_vec![ - Markdown::new_paragraph(first_col).code(), + Markdown::new_paragraph(printed_type.clone()).code(), Markdown::Link { - text: second_col, + text: second_col.to_owned().replace("\n", " "), url: format!( "./{types_directory}/{}.md", - linkify_filename(&type_.identifier) + linkify_filename(printed_type) ), anchor: false } diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/book_integration_tests.rs b/crates/lad_backends/mdbook_lad_preprocessor/tests/book_integration_tests.rs index 1a75ca6052..c643821cb3 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/tests/book_integration_tests.rs +++ b/crates/lad_backends/mdbook_lad_preprocessor/tests/book_integration_tests.rs @@ -13,7 +13,7 @@ fn add_executable_dir_to_path() { .expect("failed to get parent directory"); let mut paths = std::env::split_paths(&std::env::var("PATH").expect("failed to get PATH")) .collect::>(); - paths.push(dir.to_owned()); + paths.insert(0, dir.to_owned()); std::env::set_var( "PATH", std::env::join_paths(paths).expect("failed to join paths"), diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/types.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/types.md deleted file mode 100644 index 1592d341ed..0000000000 --- a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/types.md +++ /dev/null @@ -1,10 +0,0 @@ -# Types - -## Types - -| Type | Summary | -| --- | --- | -| `EnumType` | [No Documentation 🚧](./types/enumtype.md) | -| `StructType` | [I am a struct](./types/structtype.md) | -| `TupleStructType` | [I am a tuple test type](./types/tuplestructtype.md) | -| `UnitType` | [I am a unit test type](./types/unittype.md) | \ No newline at end of file diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/test.lad.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad.md similarity index 100% rename from crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/test.lad.md rename to crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad.md diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/functions.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/functions.md similarity index 100% rename from crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/functions.md rename to crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/functions.md diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/functions/hello_world.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/functions/hello_world.md similarity index 100% rename from crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/functions/hello_world.md rename to crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/functions/hello_world.md diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/globals.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/globals.md similarity index 100% rename from crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/lad/globals.md rename to crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/globals.md diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/types.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/types.md new file mode 100644 index 0000000000..a591a784da --- /dev/null +++ b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/expected/parent/lad/types.md @@ -0,0 +1,10 @@ +# Types + +## Types + +| Type | Summary | +| --- | --- | +| `EnumType` | [No Documentation 🚧](./types/enumtype.md) | +| `StructType` | [ I am a struct](./types/structtypeusize.md) | +| `TupleStructType` | [ I am a tuple test type](./types/tuplestructtype.md) | +| `UnitType` | [ I am a unit test type](./types/unittype.md) | \ No newline at end of file diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/SUMMARY.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/SUMMARY.md index 41b8c69c1e..87583d92d7 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/SUMMARY.md +++ b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/SUMMARY.md @@ -1 +1,2 @@ -- [LAD](test.lad.json) +- [parent](parent.md) + - [LAD](test.lad.json) diff --git a/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/parent.md b/crates/lad_backends/mdbook_lad_preprocessor/tests/books/example_ladfile/src/parent.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/crates/ladfile/src/lib.rs b/crates/ladfile/src/lib.rs index 66b86f44c3..a702a7f94e 100644 --- a/crates/ladfile/src/lib.rs +++ b/crates/ladfile/src/lib.rs @@ -69,6 +69,19 @@ impl LadFile { .get(type_id) .and_then(|t| (!t.generics.is_empty()).then_some(t.generics.as_slice())) } + + /// Retrieves the documentation of a type id if it is a defined type and has documentation. + pub fn get_type_documentation(&self, type_id: &LadTypeId) -> Option<&str> { + self.types + .get(type_id) + .and_then(|t| t.documentation.as_deref()) + // try primitives + .or_else(|| { + self.primitives + .get(type_id) + .map(|p| p.documentation.as_ref()) + }) + } } impl Default for LadFile { diff --git a/docs/book.toml b/docs/book.toml index bace71420b..9cf55445be 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -12,3 +12,5 @@ git-repository-url = "https://github.com/makspll/bevy_mod_scripting" edit-url-template = "https://github.com/makspll/bevy_mod_scripting/edit/main/docs/{path}" [preprocessor.lad-preprocessor] + +[output.markdown] diff --git a/docs/src/Generated/generated-intro.md b/docs/src/Generated/generated-intro.md new file mode 100644 index 0000000000..1a1aebed6a --- /dev/null +++ b/docs/src/Generated/generated-intro.md @@ -0,0 +1 @@ +# WIP \ No newline at end of file From 8be2090f7320e16302a602d97659bbbadbed98fc Mon Sep 17 00:00:00 2001 From: Maksymilian Mozolewski Date: Sun, 23 Feb 2025 22:17:46 +0000 Subject: [PATCH 3/8] chore: remove markdown renderer and bring docs back up --- docs/book.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/book.toml b/docs/book.toml index 9cf55445be..bace71420b 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -12,5 +12,3 @@ git-repository-url = "https://github.com/makspll/bevy_mod_scripting" edit-url-template = "https://github.com/makspll/bevy_mod_scripting/edit/main/docs/{path}" [preprocessor.lad-preprocessor] - -[output.markdown] From b28990e53f0f51173126be7600899368458cac1d Mon Sep 17 00:00:00 2001 From: Shane Celis Date: Mon, 24 Feb 2025 17:30:53 -0500 Subject: [PATCH 4/8] feat: Allow trailing comma in callback_labels. (#325) --- crates/bevy_mod_scripting_core/src/event.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/bevy_mod_scripting_core/src/event.rs b/crates/bevy_mod_scripting_core/src/event.rs index 5b29554eb8..4e74ed7bcc 100644 --- a/crates/bevy_mod_scripting_core/src/event.rs +++ b/crates/bevy_mod_scripting_core/src/event.rs @@ -57,7 +57,7 @@ impl CallbackLabel { #[macro_export] /// Creates a set of callback labels macro_rules! callback_labels { - ($($name:ident => $label:expr),*) => { + ($($name:ident => $label:expr),* $(,)?) => { $( #[doc = "A callback label for the event: "] @@ -74,7 +74,7 @@ macro_rules! callback_labels { callback_labels!( OnScriptLoaded => "on_script_loaded", - OnScriptUnloaded => "on_script_unloaded" + OnScriptUnloaded => "on_script_unloaded", ); /// A trait for types that can be converted into a callback label From eb9b36c7b650f50083fda6576f0e52db014c0cfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20Le=C3=B3n?= <51842726+Joakker@users.noreply.github.com> Date: Tue, 25 Feb 2025 16:23:04 -0300 Subject: [PATCH 5/8] fix: Generate IntoScript implementation with the correct path (#326) --- crates/bevy_mod_scripting_derive/src/derive/into_script.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_mod_scripting_derive/src/derive/into_script.rs b/crates/bevy_mod_scripting_derive/src/derive/into_script.rs index d67d3ab288..8135ca4430 100644 --- a/crates/bevy_mod_scripting_derive/src/derive/into_script.rs +++ b/crates/bevy_mod_scripting_derive/src/derive/into_script.rs @@ -13,7 +13,7 @@ pub fn into_script(input: TokenStream) -> TokenStream { let (impl_generics, type_generics, where_clause) = generics.split_for_impl(); quote! { - impl #impl_generics ::bevy_mod_scripting::bindings::function::into::IntoScript for #ident #type_generics #where_clause { + impl #impl_generics ::bevy_mod_scripting::core::bindings::function::into::IntoScript for #ident #type_generics #where_clause { fn into_script(self, world: ::bevy_mod_scripting::core::bindings::WorldGuard) -> Result<::bevy_mod_scripting::core::bindings::script_value::ScriptValue, ::bevy_mod_scripting::core::error::InteropError> { ::bevy_mod_scripting::core::bindings::function::into::IntoScript::into_script( ::bevy_mod_scripting::core::bindings::function::from::Val(self), From e9e6c3a9712636a0249d377bd1c2b2de7b9d9021 Mon Sep 17 00:00:00 2001 From: Maksymilian Mozolewski Date: Tue, 25 Feb 2025 23:01:55 +0000 Subject: [PATCH 6/8] fix: `enable_context_sharing` not returning the plugin like a real builder --- crates/bevy_mod_scripting_core/src/lib.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/bevy_mod_scripting_core/src/lib.rs b/crates/bevy_mod_scripting_core/src/lib.rs index fc7a054b0b..1bc0214f8d 100644 --- a/crates/bevy_mod_scripting_core/src/lib.rs +++ b/crates/bevy_mod_scripting_core/src/lib.rs @@ -183,8 +183,8 @@ pub trait ConfigureScriptPlugin { /// Switch the context assigning strategy to a global context assigner. /// /// This means that all scripts will share the same context. This is useful for when you want to share data between scripts easilly. - /// Be careful however as this also means that scripts can interfere with each other in unexpected ways!. - fn enable_context_sharing(self); + /// Be careful however as this also means that scripts can interfere with each other in unexpected ways! Including overwriting each other's handlers. + fn enable_context_sharing(self) -> Self; } impl>> ConfigureScriptPlugin for P { @@ -209,8 +209,9 @@ impl>> ConfigureScriptPlugi self } - fn enable_context_sharing(mut self) { + fn enable_context_sharing(mut self) -> Self{ self.as_mut().context_assigner = ContextAssigner::new_global_context_assigner(); + self } } From d933d3e43607d69b4261278e70c772641ffda5ed Mon Sep 17 00:00:00 2001 From: Maksymilian Mozolewski Date: Tue, 25 Feb 2025 23:16:58 +0000 Subject: [PATCH 7/8] chore: formatting --- crates/bevy_mod_scripting_core/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_mod_scripting_core/src/lib.rs b/crates/bevy_mod_scripting_core/src/lib.rs index 1bc0214f8d..2f556b19a2 100644 --- a/crates/bevy_mod_scripting_core/src/lib.rs +++ b/crates/bevy_mod_scripting_core/src/lib.rs @@ -209,7 +209,7 @@ impl>> ConfigureScriptPlugi self } - fn enable_context_sharing(mut self) -> Self{ + fn enable_context_sharing(mut self) -> Self { self.as_mut().context_assigner = ContextAssigner::new_global_context_assigner(); self } From 4af18c02ea1526a3ddb52b1329588b8ee0fb2d1e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 00:08:16 +0000 Subject: [PATCH 8/8] chore: release (#323) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ Cargo.toml | 14 +++++++------- crates/bevy_mod_scripting_core/CHANGELOG.md | 10 ++++++++++ crates/bevy_mod_scripting_core/Cargo.toml | 2 +- crates/bevy_mod_scripting_derive/CHANGELOG.md | 6 ++++++ crates/bevy_mod_scripting_derive/Cargo.toml | 2 +- crates/bevy_mod_scripting_functions/Cargo.toml | 2 +- .../mdbook_lad_preprocessor/CHANGELOG.md | 6 ++++++ .../mdbook_lad_preprocessor/Cargo.toml | 4 ++-- crates/ladfile/CHANGELOG.md | 6 ++++++ crates/ladfile/Cargo.toml | 2 +- crates/ladfile_builder/Cargo.toml | 4 ++-- crates/languages/bevy_mod_scripting_lua/Cargo.toml | 2 +- .../languages/bevy_mod_scripting_rhai/Cargo.toml | 2 +- 14 files changed, 55 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5daa74d64..b96c043147 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [0.9.8](https://github.com/makspll/bevy_mod_scripting/compare/v0.9.7...v0.9.8) - 2025-02-25 + +### Added + +- Allow trailing comma in callback_labels. (#325) + +### Fixed + +- `enable_context_sharing` not returning the plugin like a real builder + ## [0.9.7](https://github.com/makspll/bevy_mod_scripting/compare/v0.9.6...v0.9.7) - 2025-02-23 ### Added diff --git a/Cargo.toml b/Cargo.toml index bbf76f7493..4b5f2cfcb6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting" -version = "0.9.7" +version = "0.9.8" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" @@ -53,8 +53,8 @@ rhai = ["bevy_mod_scripting_rhai"] [dependencies] bevy = { workspace = true } bevy_mod_scripting_core = { workspace = true } -bevy_mod_scripting_lua = { path = "crates/languages/bevy_mod_scripting_lua", version = "0.9.7", optional = true } -bevy_mod_scripting_rhai = { path = "crates/languages/bevy_mod_scripting_rhai", version = "0.9.7", optional = true } +bevy_mod_scripting_lua = { path = "crates/languages/bevy_mod_scripting_lua", version = "0.9.8", optional = true } +bevy_mod_scripting_rhai = { path = "crates/languages/bevy_mod_scripting_rhai", version = "0.9.8", optional = true } # bevy_mod_scripting_rune = { path = "crates/languages/bevy_mod_scripting_rune", version = "0.9.0-alpha.2", optional = true } bevy_mod_scripting_functions = { workspace = true } bevy_mod_scripting_derive = { workspace = true } @@ -62,9 +62,9 @@ bevy_mod_scripting_derive = { workspace = true } [workspace.dependencies] profiling = { version = "1.0" } bevy = { version = "0.15.2", default-features = false } -bevy_mod_scripting_core = { path = "crates/bevy_mod_scripting_core", version = "0.9.7" } -bevy_mod_scripting_functions = { path = "crates/bevy_mod_scripting_functions", version = "0.9.7", default-features = false } -bevy_mod_scripting_derive = { path = "crates/bevy_mod_scripting_derive", version = "0.9.7" } +bevy_mod_scripting_core = { path = "crates/bevy_mod_scripting_core", version = "0.9.8" } +bevy_mod_scripting_functions = { path = "crates/bevy_mod_scripting_functions", version = "0.9.8", default-features = false } +bevy_mod_scripting_derive = { path = "crates/bevy_mod_scripting_derive", version = "0.9.8" } # test utilities script_integration_test_harness = { path = "crates/testing_crates/script_integration_test_harness" } @@ -77,7 +77,7 @@ rand = "0.8.5" bevy_console = "0.13" # rhai-rand = "0.1" ansi-parser = "0.9" -ladfile_builder = { path = "crates/ladfile_builder", version = "0.2.1" } +ladfile_builder = { path = "crates/ladfile_builder", version = "0.2.2" } [workspace] members = [ diff --git a/crates/bevy_mod_scripting_core/CHANGELOG.md b/crates/bevy_mod_scripting_core/CHANGELOG.md index e07c794cd6..ca0df3c220 100644 --- a/crates/bevy_mod_scripting_core/CHANGELOG.md +++ b/crates/bevy_mod_scripting_core/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.9.8](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_core-v0.9.7...bevy_mod_scripting_core-v0.9.8) - 2025-02-25 + +### Added + +- Allow trailing comma in callback_labels. (#325) + +### Fixed + +- `enable_context_sharing` not returning the plugin like a real builder + ## [0.9.7](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_core-v0.9.6...bevy_mod_scripting_core-v0.9.7) - 2025-02-23 ### Added diff --git a/crates/bevy_mod_scripting_core/Cargo.toml b/crates/bevy_mod_scripting_core/Cargo.toml index 20cc5bedd5..92883c9f2e 100644 --- a/crates/bevy_mod_scripting_core/Cargo.toml +++ b/crates/bevy_mod_scripting_core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_core" -version = "0.9.7" +version = "0.9.8" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" diff --git a/crates/bevy_mod_scripting_derive/CHANGELOG.md b/crates/bevy_mod_scripting_derive/CHANGELOG.md index 95f2307218..4ea8a92218 100644 --- a/crates/bevy_mod_scripting_derive/CHANGELOG.md +++ b/crates/bevy_mod_scripting_derive/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.9.8](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_derive-v0.9.7...bevy_mod_scripting_derive-v0.9.8) - 2025-02-25 + +### Fixed + +- Generate IntoScript implementation with the correct path (#326) + ## [0.9.7](https://github.com/makspll/bevy_mod_scripting/compare/bevy_mod_scripting_derive-v0.9.6...bevy_mod_scripting_derive-v0.9.7) - 2025-02-23 ### Added diff --git a/crates/bevy_mod_scripting_derive/Cargo.toml b/crates/bevy_mod_scripting_derive/Cargo.toml index deea5f53df..c9b464b763 100644 --- a/crates/bevy_mod_scripting_derive/Cargo.toml +++ b/crates/bevy_mod_scripting_derive/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_derive" -version = "0.9.7" +version = "0.9.8" edition = "2021" authors = ["Maksymilian Mozolewski "] license = "MIT OR Apache-2.0" diff --git a/crates/bevy_mod_scripting_functions/Cargo.toml b/crates/bevy_mod_scripting_functions/Cargo.toml index 0f9f47b231..a155a38531 100644 --- a/crates/bevy_mod_scripting_functions/Cargo.toml +++ b/crates/bevy_mod_scripting_functions/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_functions" -version = "0.9.7" +version = "0.9.8" edition = "2021" authors = ["Maksymilian Mozolewski "] license = "MIT OR Apache-2.0" diff --git a/crates/lad_backends/mdbook_lad_preprocessor/CHANGELOG.md b/crates/lad_backends/mdbook_lad_preprocessor/CHANGELOG.md index 22cce8acb7..47ef36c299 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/CHANGELOG.md +++ b/crates/lad_backends/mdbook_lad_preprocessor/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.2](https://github.com/makspll/bevy_mod_scripting/compare/mdbook_lad_preprocessor-v0.1.1...mdbook_lad_preprocessor-v0.1.2) - 2025-02-25 + +### Added + +- *(mdbook)* improve mdbook generics behaviour and fix broken links (#319) + ## [0.1.1](https://github.com/makspll/bevy_mod_scripting/compare/mdbook_lad_preprocessor-v0.1.0...mdbook_lad_preprocessor-v0.1.1) - 2025-02-23 ### Added diff --git a/crates/lad_backends/mdbook_lad_preprocessor/Cargo.toml b/crates/lad_backends/mdbook_lad_preprocessor/Cargo.toml index 4ef9279057..28b9904d1a 100644 --- a/crates/lad_backends/mdbook_lad_preprocessor/Cargo.toml +++ b/crates/lad_backends/mdbook_lad_preprocessor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mdbook_lad_preprocessor" -version = "0.1.1" +version = "0.1.2" edition = "2021" authors = ["Maksymilian Mozolewski "] license = "MIT OR Apache-2.0" @@ -15,7 +15,7 @@ readme = "readme.md" [dependencies] clap = "4" mdbook = "0.4" -ladfile = { path = "../../ladfile", version = "0.3.0" } +ladfile = { path = "../../ladfile", version = "0.3.1" } env_logger = "0.11" log = "0.4" serde_json = "1.0" diff --git a/crates/ladfile/CHANGELOG.md b/crates/ladfile/CHANGELOG.md index 67a3cff887..c46f05d86a 100644 --- a/crates/ladfile/CHANGELOG.md +++ b/crates/ladfile/CHANGELOG.md @@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.3.1](https://github.com/makspll/bevy_mod_scripting/compare/v0.3.0-ladfile...v0.3.1-ladfile) - 2025-02-25 + +### Added + +- *(mdbook)* improve mdbook generics behaviour and fix broken links (#319) + ## [0.3.0](https://github.com/makspll/bevy_mod_scripting/compare/v0.2.0-ladfile...v0.3.0-ladfile) - 2025-02-23 ### Added diff --git a/crates/ladfile/Cargo.toml b/crates/ladfile/Cargo.toml index 8292964f0e..72e56d5f68 100644 --- a/crates/ladfile/Cargo.toml +++ b/crates/ladfile/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ladfile" -version = "0.3.0" +version = "0.3.1" edition = "2021" authors = ["Maksymilian Mozolewski "] license = "MIT OR Apache-2.0" diff --git a/crates/ladfile_builder/Cargo.toml b/crates/ladfile_builder/Cargo.toml index 5c0ddf7194..3c4971d5bc 100644 --- a/crates/ladfile_builder/Cargo.toml +++ b/crates/ladfile_builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ladfile_builder" -version = "0.2.1" +version = "0.2.2" edition = "2021" authors = ["Maksymilian Mozolewski "] license = "MIT OR Apache-2.0" @@ -17,7 +17,7 @@ bevy_mod_scripting_core = { workspace = true } # I don't think bevy has a top level feature for this :C bevy = { workspace = true } bevy_reflect = { version = "0.15.2", features = ["documentation"] } -ladfile = { version = "0.3.0", path = "../ladfile" } +ladfile = { version = "0.3.1", path = "../ladfile" } regex = "1.11" [dev-dependencies] diff --git a/crates/languages/bevy_mod_scripting_lua/Cargo.toml b/crates/languages/bevy_mod_scripting_lua/Cargo.toml index 698306e4eb..74245453ac 100644 --- a/crates/languages/bevy_mod_scripting_lua/Cargo.toml +++ b/crates/languages/bevy_mod_scripting_lua/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_lua" -version = "0.9.7" +version = "0.9.8" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0" diff --git a/crates/languages/bevy_mod_scripting_rhai/Cargo.toml b/crates/languages/bevy_mod_scripting_rhai/Cargo.toml index 7adc77f6ef..61a0340e6b 100644 --- a/crates/languages/bevy_mod_scripting_rhai/Cargo.toml +++ b/crates/languages/bevy_mod_scripting_rhai/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_mod_scripting_rhai" -version = "0.9.7" +version = "0.9.8" authors = ["Maksymilian Mozolewski "] edition = "2021" license = "MIT OR Apache-2.0"