Manifest Dir Macros

CI

This crate provides function-like macros to check or operate paths relative to CARGOMANIFESTDIR at compile time.

Examples

```rust

[macrouse] extern crate manifestdir_macros;

println!(path!("Cargo.toml")); println!(path!("src/lib.rs")); println!(path!("src", "lib.rs")); println!(path!("src", "lib.rs", "/bin")); println!(path!("/usr"));

println!(existpath!("Cargo.toml")); println!(directorypath!("src")); println!(notdirectorypath!("Cargo.toml")); println!(file_path!("Cargo.toml"));

println!(relativepath!("Cargo.toml")); println!(directoryrelativepath!("src")); println!(notdirectoryrelativepath!("Cargo.toml")); println!(filerelativepath!("Cargo.toml"));

println!(getfilename!("src/lib.rs")); println!(getfilename!(default = "main.rs", "/")); println!(getfilestem!("src/lib.rs")); println!(getfilestem!(default = "lib", "/")); println!(getextension!("src/lib.rs")); println!(getextension!(default = "rs", "src/lib")); println!(getparent!("src/lib.rs")); println!(getparent!(default = "/home", "/"));

[cfg(feature = "mime_guess")]

{ println!(mimeguess!("src/lib.rs")); println!(mimeguess!(default = "application/octet-stream", "Cargo.lock")); }

// The tuple feature lets these macros above support to input nested literal string tuples, which is useful when you want to use these macros inside a macro_rule! macro and concatenate with other literal strings. // $x:expr matchers can be used in these macros thus.

[cfg(feature = "tuple")]

{ println!(path!(("foo",))); println!(path!(("foo", "bar"))); println!(path!("a", ("foo", "bar"))); println!(path!(("foo", "bar"), "a")); println!(path!(("foo", "bar"), ("a", "b"))); println!(path!(("foo", "bar", ("a", "b")), ("c", "d"))); } ```

Crates.io

https://crates.io/crates/manifest-dir-macros

Documentation

https://docs.rs/manifest-dir-macros

License

MIT