Skip to content

Latest commit

 

History

History
94 lines (62 loc) · 2.36 KB

README.md

File metadata and controls

94 lines (62 loc) · 2.36 KB

license-fetcher

Fetch licenses of dependencies at build time and embed them into your program.

Crates.io Version GitHub License docs.rs dependency status

Aspirations

  1. Fetch licenses!
  2. Fast!
  3. Do it in the build step!

Workings

Crates that are compiled with your program are fetched via cargo metadata. License texts are read from the .cargo/registry/src folder. The data is then serialized and compressed.

Usage

Include Dependency

Warning

Include this library as build dependency and as normal dependeny!

cargo add --build --features build license-fetcher
cargo add license-fetcher

Build Script

This library requires you to execute it for fetching licenses in a build script. Creat a file called build.rs in the root of your project and add following contents:

use license_fetcher::build_script::generate_package_list_with_licenses;

fn main() {
    generate_package_list_with_licenses().write();
    println!("cargo::rerun-if-changed=build.rs");
    println!("cargo::rerun-if-changed=Cargo.lock");
    println!("cargo::rerun-if-changed=Cargo.toml");
}

Main

Add following content to your main.rs:

use license_fetcher::get_package_list_macro;

fn main() {
    let packages = get_package_list_macro!();
    println!("{}", packages);
}

Alternatives

Pros

  • Also retrieves licenses in the build step and loads them into the program.

Cons

  • Does not fetch licenses from loacal source files.
  • Very slow.
  • Does not compress licenses.

Pros

  • Generates very nice html.

Cons

  • Is not a library to access said data but rather a command line tool.
  • Does not fetch licenses from loacal source files.

Screenshots

Display trait included 😉

Screenshot