diff --git a/Cargo.lock b/Cargo.lock index 46186eb..4ad17c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,14 +4,16 @@ version = 3 [[package]] name = "embd" -version = "0.1.1" +version = "0.1.2" dependencies = [ - "embd-macros 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "embd-macros 0.1.1", ] [[package]] name = "embd-macros" version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d8aff0b18a634834d77cf70effb2ee3f5ab2b4f36f1caa7fabe213ac7767b0f" dependencies = [ "proc-macro2", "quote", @@ -20,9 +22,7 @@ dependencies = [ [[package]] name = "embd-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d8aff0b18a634834d77cf70effb2ee3f5ab2b4f36f1caa7fabe213ac7767b0f" +version = "0.1.2" dependencies = [ "proc-macro2", "quote", diff --git a/embd-macros/Cargo.toml b/embd-macros/Cargo.toml index 8effbf1..d2771a3 100644 --- a/embd-macros/Cargo.toml +++ b/embd-macros/Cargo.toml @@ -8,6 +8,7 @@ categories = [ "filesystem" ] authors = [ "RGBCube" ] version = "0.1.2" edition = "2021" +include = [ "src/**/*.rs", "README.md" ] [lib] proc-macro = true diff --git a/embd-macros/README.md b/embd-macros/README.md new file mode 100644 index 0000000..b140ed2 --- /dev/null +++ b/embd-macros/README.md @@ -0,0 +1,70 @@ +# embd-rs + +A super simple file and directory embedding crate, +that loads files from the filesystem on debug mode, +allowing for quick edit-and-test cycles without compilation. + +It is also super efficient, and does not heap allocate when the +files are embedded on release mode by utilizing `std::borrow::Cow`. + +On release mode it falls back to `include_str!`, `include_bytes!` +and our own custom `include_dir!`-like implementation. + +## Usage + +Add this to your Cargo.toml: + +```toml +[dependencies] +embd = "0.1" +``` + +Then you can use this crate like so: + +```rs +let contents: Cow<'_, str> = embd::string!("path/to/file.txt"); +let bytes: Cow<'_, [u8]> = embd::bytes!("path/to/image.png"); + +let dir: embd::Dir = embd::dir!("path/to"); +let files: Vec = dir.flatten(); +``` + +Note that you will need to enable the `procmacro2_semver_exempt` cfg +option to use this crate, you can enable it like so, by putting this in +`.cargo/config.toml` in the project root: + +```toml +[build] +rustflags = [ "--cfg", "procmacro2_semver_exempt" ] +``` + +## To-Do + +- [ ] Hot reloading of files in debug mode. +- [ ] Don't depend on `procmacro2_semver_exempt`. + +## License + +``` +MIT License + +Copyright (c) 2023-present RGBCube + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` diff --git a/embd/Cargo.toml b/embd/Cargo.toml index 23a0494..cd2b9ff 100644 --- a/embd/Cargo.toml +++ b/embd/Cargo.toml @@ -8,6 +8,7 @@ categories = [ "filesystem" ] authors = [ "RGBCube" ] version = "0.1.2" edition = "2021" +include = [ "src/**/*.rs", "README.md" ] [dependencies] embd-macros = "0.1" diff --git a/embd/README.md b/embd/README.md index 255bb29..b140ed2 100644 --- a/embd/README.md +++ b/embd/README.md @@ -38,6 +38,11 @@ option to use this crate, you can enable it like so, by putting this in rustflags = [ "--cfg", "procmacro2_semver_exempt" ] ``` +## To-Do + +- [ ] Hot reloading of files in debug mode. +- [ ] Don't depend on `procmacro2_semver_exempt`. + ## License ```