Code Monkey home page Code Monkey logo

shadow-rs's Introduction

shadow-rs: A build script write by Rust

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

[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

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 [bin] 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.

#[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.

fn main() {
    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);//[email protected]

    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
SHORT_COMMIT 8405e28e
COMMIT_HASH 8405e28e64080a09525a6cf1b07c22fcaf71a5c5
COMMIT_DATE 2020-08-16T06:22:24+00:00
COMMIT_AUTHOR baoyachi
COMMIT_EMAIL [email protected]
BUILD_OS macos-x86_64
RUST_VERSION rustc 1.45.0 (5c1f21c3b 2020-07-13)
RUST_CHANNEL stable-x86_64-apple-darwin (default)
CARGO_VERSION cargo 1.45.0 (744bd1fbb 2020-06-15)
PKG_VERSION 0.3.13
CARGO_TREE cargo tree
PROJECT_NAME shadow-rs
BUILD_TIME 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

shadow-rs's People

Contributors

baoyachi avatar umaynit avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.