======================================== shadow

Chrono GitHub Actions Chrono on crates.io Chrono on docs.rs dependency on depstatus

A build script tool compile project much information,version info,dependence info.Like shadow,if compiled,never change.forever follow your project.

When you published a rust binary. Sometimes you need to know the dependencies of the current project. * Git version information * which version of rust compiled. * Is it a debug or release version of rust. * Cargo dependent cargo.lock detail crates info. * ...

We can use this information to quickly trace the history version of the project. n This project can do this things that can help you quick get above information. Let's configuration in your project.

example

You can also see shadow_example how to configuration.

step 1

In your cargo.toml packgae with package add with below config ```toml [package] build = "build.rs"

[dependencies] shadow-rs = "0.5"

[build-dependencies] shadow-rs = "0.5" ```

step 2

In your project add file build.rs,then add with below config rust fn main() -> shadow_rs::SdResult<()> { shadow_rs::new() }

step 3

In your project find bin rust file.It's usually main.rs, you can find file with Cargo.toml,then add with below config The shadow!(build) with build config,add Rust build mod in your project. You can also replace it(build) with other name.

```rust

[macro_use]

extern crate shadow_rs;

shadow!(build); ```

step 4

Then you can use const that's shadow build it(main.rs). The build mod just we use shadow!(build) generated.

```rust fn main() { println!("{}",shadowrs::isdebug());//get build mode. cargo build --release return false.normally return true.

println!("{}",build::version());//print version() method 
println!("{}",build::BRANCH); //master
println!("{}",build::SHORT_COMMIT);//8405e28e
println!("{}",build::COMMIT_HASH);//8405e28e64080a09525a6cf1b07c22fcaf71a5c5
println!("{}",build::COMMIT_DATE);//2020-08-16T06:22:24+00:00
println!("{}",build::COMMIT_AUTHOR);//baoyachi
println!("{}",build::COMMIT_EMAIL);//xxx@gmail.com

println!("{}",build::BUILD_OS);//macos-x86_64
println!("{}",build::RUST_VERSION);//rustc 1.45.0 (5c1f21c3b 2020-07-13)
println!("{}",build::RUST_CHANNEL);//stable-x86_64-apple-darwin (default)
println!("{}",build::CARGO_VERSION);//cargo 1.45.0 (744bd1fbb 2020-06-15)
println!("{}",build::PKG_VERSION);//0.3.13
println!("{}",build::CARGO_TREE); //like command:cargo tree

println!("{}",build::PROJECT_NAME);//shadow-rs
println!("{}",build::BUILD_TIME);//2020-08-16 14:50:25
println!("{}",build::BUILD_RUST_CHANNEL);//debug

} ```

Clap example

And you can also use const with clap.

Support const table

| const | example | | ------ | ------ | | version() | master/develop | | BRANCH | master/develop | | SHORTCOMMIT | 8405e28e |
| COMMIT
HASH | 8405e28e64080a09525a6cf1b07c22fcaf71a5c5 |
| COMMITDATE | 2020-08-16T06:22:24+00:00 | | COMMITAUTHOR | baoyachi | | COMMITEMAIL | xxx@gmail.com |
| BUILD
OS | macos-x8664 |
| RUST
VERSION | rustc 1.45.0 (5c1f21c3b 2020-07-13) |
| RUSTCHANNEL | stable-x8664-apple-darwin (default) |
| CARGOVERSION | cargo 1.45.0 (744bd1fbb 2020-06-15) |
| PKG
VERSION | 0.3.13 | | CARGOTREE | cargo tree |
| PROJECT
NAME | shadow-rs |
| BUILDTIME | 2020-08-16 14:50:25 |
| BUILD
RUST_CHANNEL | debug/release |

If you have any question,you can create issue.

who use shadow-rs

If you are using shadow-rs,please tell me.Or you can make a notes here,if you like:collection use.

nushell
nushell