#license #build-time #fetch #embed #find #build-script #about

build license-fetcher

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

7 releases (4 breaking)

new 0.5.0 Oct 27, 2024
0.4.1 Oct 11, 2024
0.3.0 Sep 21, 2024
0.2.0 Sep 19, 2024
0.1.1 Sep 16, 2024

#183 in Build Utils

Download history 391/week @ 2024-09-16 41/week @ 2024-09-23 7/week @ 2024-09-30 265/week @ 2024-10-07 61/week @ 2024-10-14 98/week @ 2024-10-21

431 downloads per month
Used in ubilerntui

BSL-1.0 license

59KB
339 lines

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

license-retriever

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.

cargo-about

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

Dependencies

~0.3–11MB
~67K SLoC