diff --git a/Cargo.lock b/Cargo.lock index ba4de2d5cebcc6d51435aed97cb43ef21737883a..2d282391afc7e4aa6f9bb411325fa0ef74875d08 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,56 @@ dependencies = [ "memchr", ] +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +dependencies = [ + "anstyle", + "once_cell", + "windows-sys", +] + [[package]] name = "anyhow" version = "1.0.98" @@ -38,18 +88,58 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - [[package]] name = "cfg_aliases" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "clap" +version = "4.5.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + [[package]] name = "convert_case" version = "0.7.1" @@ -171,9 +261,7 @@ dependencies = [ "anyhow", "bitflags", "bytecount", - "cfg-if", "derive_more", - "godot", "log", "memchr", "nom", @@ -182,12 +270,39 @@ dependencies = [ "thiserror", ] +[[package]] +name = "grimoire_cli" +version = "0.0.1" +dependencies = [ + "anyhow", + "clap", + "log", + "thiserror", +] + +[[package]] +name = "grimoire_godot" +version = "0.0.1" +dependencies = [ + "anyhow", + "derive_more", + "godot", + "log", + "thiserror", +] + [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "libc" version = "0.2.172" @@ -259,6 +374,12 @@ dependencies = [ "nom", ] +[[package]] +name = "once_cell" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + [[package]] name = "proc-macro2" version = "1.0.95" @@ -336,6 +457,12 @@ dependencies = [ "serde", ] +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "syn" version = "2.0.100" @@ -391,6 +518,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + [[package]] name = "venial" version = "0.6.1" @@ -400,3 +533,76 @@ dependencies = [ "proc-macro2", "quote", ] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" diff --git a/Cargo.toml b/Cargo.toml index 3edf4d3efab4f40fb91fd6356dc3f01559bf6d40..0a61f10764622b198a9ea5de7807cbace139ed3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,8 @@ -[package] -name = "grimoire" -description = "The Grimoire Engine, a VN engine done for fun" +[workspace] +resolver = "3" +members = ["grimoire", "grimoire_cli", "grimoire_godot"] + +[workspace.package] version = "0.0.1" license = "MIT" rust-version = "1.86" @@ -10,38 +12,39 @@ authors = [ "Maƫlle Martin <maelle.martin@proton.me>", ] +[profile] +dev = { debug = true, opt-level = "s" } +release = { debug = false, opt-level = 3, panic = "abort", strip = true, codegen-units = 1, lto = true } -[lib] -crate-type = ["cdylib"] +[workspace.dependencies] +anyhow = "1" +nom = "8" +nom_locate = "5" +bytecount = "0.6" +thiserror = "2" +log = "0.4" +[workspace.dependencies.derive_more] +version = "2" +features = ["full"] -[profile.release] -debug = false -opt-level = 3 -panic = "abort" -strip = true -codegen-units = 1 -lto = true +[workspace.dependencies.smol_str] +version = "0.3" +features = ["serde"] +[workspace.dependencies.clap] +version = "4" +features = ["derive"] -[profile.dev] -debug = true -opt-level = "s" +[workspace.dependencies.bitflags] +version = "2" +default-features = false +[workspace.dependencies.memchr] +version = "2" +default-features = false -[dependencies] -anyhow = "1" -nom = "8" -nom_locate = "5" -bytecount = "0.6" -cfg-if = "1" -thiserror = "2" -log = "0.4" -derive_more = { version = "2", features = ["full"] } -smol_str = { version = "0.3", features = ["serde"] } -bitflags = { version = "2", default-features = false } -memchr = { version = "*", default-features = false } # ^1.0.0 + ^2.0 - -[dependencies.godot] +[workspace.dependencies.godot] git = "https://github.com/godot-rust/gdext.git" features = ["api-4-4", "register-docs"] + diff --git a/grimoire/Cargo.toml b/grimoire/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..e0696514052a90a4f22df9b773f23f5f6022665e --- /dev/null +++ b/grimoire/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "grimoire" +description = "The Grimoire Engine, a VN engine done for fun" +version.workspace = true +license.workspace = true +rust-version.workspace = true +edition.workspace = true +authors.workspace = true + +[dependencies] +anyhow.workspace = true +nom.workspace = true +nom_locate.workspace = true +bytecount.workspace = true +thiserror.workspace = true +log.workspace = true +derive_more.workspace= true +smol_str.workspace = true +bitflags.workspace = true +memchr.workspace = true diff --git a/src/error.rs b/grimoire/src/error.rs similarity index 100% rename from src/error.rs rename to grimoire/src/error.rs diff --git a/src/expr/mod.rs b/grimoire/src/expr/mod.rs similarity index 100% rename from src/expr/mod.rs rename to grimoire/src/expr/mod.rs diff --git a/grimoire/src/lib.rs b/grimoire/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..1dc5c4853e9ff3780577039ea9243d8048585b9a --- /dev/null +++ b/grimoire/src/lib.rs @@ -0,0 +1,5 @@ +pub mod error; +pub mod expr; +pub mod parser; +pub mod spell; +pub mod state; diff --git a/src/parser/error.rs b/grimoire/src/parser/error.rs similarity index 100% rename from src/parser/error.rs rename to grimoire/src/parser/error.rs diff --git a/src/parser/expr.rs b/grimoire/src/parser/expr.rs similarity index 100% rename from src/parser/expr.rs rename to grimoire/src/parser/expr.rs diff --git a/src/parser/mod.rs b/grimoire/src/parser/mod.rs similarity index 100% rename from src/parser/mod.rs rename to grimoire/src/parser/mod.rs diff --git a/src/parser/span.rs b/grimoire/src/parser/span.rs similarity index 95% rename from src/parser/span.rs rename to grimoire/src/parser/span.rs index 6a0deb3820b578ddcbc4512607406ad275be10cd..3bfe1ad4778a7b51b29279d1fdd8997b9b9937ac 100644 --- a/src/parser/span.rs +++ b/grimoire/src/parser/span.rs @@ -56,7 +56,7 @@ impl<'a> Span<'a> { /// The fragment that is spanned. /// The fragment represents a part of the input of the parser. pub fn fragment(&self) -> &str { - &self.fragment + self.fragment } pub fn into_fragment(self) -> &'a str { @@ -64,7 +64,7 @@ impl<'a> Span<'a> { } fn slice_by(&self, next_fragment: &'a str) -> Self { - let consumed_len = self.fragment.offset(&next_fragment); + let consumed_len = self.fragment.offset(next_fragment); if consumed_len == 0 { return Self { line: self.line, @@ -133,10 +133,10 @@ impl<'a> Input for Span<'a> { impl Compare<&str> for Span<'_> { fn compare(&self, t: &str) -> nom::CompareResult { - todo!() + self.fragment().compare(t) } fn compare_no_case(&self, t: &str) -> nom::CompareResult { - todo!() + self.fragment().compare_no_case(t) } } diff --git a/src/parser/utils.rs b/grimoire/src/parser/utils.rs similarity index 100% rename from src/parser/utils.rs rename to grimoire/src/parser/utils.rs diff --git a/src/spell/arguments.rs b/grimoire/src/spell/arguments.rs similarity index 100% rename from src/spell/arguments.rs rename to grimoire/src/spell/arguments.rs diff --git a/src/spell/factory.rs b/grimoire/src/spell/factory.rs similarity index 100% rename from src/spell/factory.rs rename to grimoire/src/spell/factory.rs diff --git a/src/spell/mod.rs b/grimoire/src/spell/mod.rs similarity index 100% rename from src/spell/mod.rs rename to grimoire/src/spell/mod.rs diff --git a/src/spell/traits.rs b/grimoire/src/spell/traits.rs similarity index 100% rename from src/spell/traits.rs rename to grimoire/src/spell/traits.rs diff --git a/src/state.rs b/grimoire/src/state.rs similarity index 100% rename from src/state.rs rename to grimoire/src/state.rs diff --git a/grimoire_cli/Cargo.toml b/grimoire_cli/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..9f29b9e54643d085dc8f73a52da548f29cc37d6d --- /dev/null +++ b/grimoire_cli/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "grimoire_cli" +description = "The Grimoire Engine CLI" +version.workspace = true +license.workspace = true +rust-version.workspace = true +edition.workspace = true +authors.workspace = true + +[dependencies] +anyhow.workspace = true +thiserror.workspace = true +log.workspace = true +clap.workspace = true + diff --git a/grimoire_cli/src/main.rs b/grimoire_cli/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..b49dfb4c9545e2284801db106b906daefd80b218 --- /dev/null +++ b/grimoire_cli/src/main.rs @@ -0,0 +1,2 @@ + +fn main() {} diff --git a/grimoire_godot/Cargo.toml b/grimoire_godot/Cargo.toml new file mode 100644 index 0000000000000000000000000000000000000000..cb4dca5f7205fc6eff618db3888d9c8b0b5f07b7 --- /dev/null +++ b/grimoire_godot/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "grimoire_godot" +description = "The Grimoire Engine godot bindings" +version.workspace = true +license.workspace = true +rust-version.workspace = true +edition.workspace = true +authors.workspace = true + +[lib] +name = "grimoire" +crate-type = ["cdylib"] + +[dependencies] +anyhow.workspace = true +thiserror.workspace = true +log.workspace = true +derive_more.workspace= true +godot.workspace = true diff --git a/src/dummy.rs b/grimoire_godot/src/dummy.rs similarity index 100% rename from src/dummy.rs rename to grimoire_godot/src/dummy.rs diff --git a/grimoire_godot/src/lib.rs b/grimoire_godot/src/lib.rs new file mode 100644 index 0000000000000000000000000000000000000000..037b73841468f495f2be64f386eb434a928ea38d --- /dev/null +++ b/grimoire_godot/src/lib.rs @@ -0,0 +1,8 @@ +mod dummy; + +use godot::prelude::{gdextension, ExtensionLibrary}; + +struct GrimoireExtension; + +#[gdextension] +unsafe impl ExtensionLibrary for GrimoireExtension {} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 56217569cdc5ef6d03c7964cbda13df30a5460c1..0000000000000000000000000000000000000000 --- a/src/lib.rs +++ /dev/null @@ -1,14 +0,0 @@ -pub mod error; -pub mod expr; -pub mod parser; -pub mod spell; -pub mod state; - -pub mod dummy; - -use godot::prelude::{ExtensionLibrary, gdextension}; - -struct GrimoireExtension; - -#[gdextension] -unsafe impl ExtensionLibrary for GrimoireExtension {}