license-fetcher

Crates.iolicense-fetcher
lib.rslicense-fetcher
version0.5.0
sourcesrc
created_at2024-09-16 18:43:44.393002
updated_at2024-10-27 13:39:01.816787
descriptionFetch licenses of dependencies at build time and embed them into your program.
homepage
repositoryhttps://github.com/WyvernIXTL/license-fetcher
max_upload_size
id1376737
size83,119
Adam McKellar (WyvernIXTL)

documentation

README

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

Commit count: 43

cargo fmt