EmbarkStudios / Cargo About
Programming Languages
Projects that are alternatives of or similar to Cargo About
π cargo-about
Cargo plugin for generating a listing of all of the crates used by a root crate, and the terms under which they are licensed.
Please Note: This is a tool that we use (and like!) and it makes sense to us to release it as open source. However, we canβt take any responsibility for your use of the tool, if it will function correctly or fulfil your needs. No functionality in - or information provided by - cargo-about constitutes legal advice.
Getting started
Installing
cargo install cargo-about
Generate license information for your own project
# Generates `about.toml` and `about.hbs` in your cargo project
cargo about init
# Generate the license information with
cargo about generate about.hbs > license.html
about.toml
[accepted]
Priority list of all the accepted licenses for a project. cargo-about
will try to satisfy the licenses in the order that they are declared in this list.
accepted = [
"Apache-2.0",
"MIT",
]
[targets]
A list of targets that are actually building for. Crates which are only included via cfg()
expressions that don't match one or more of the listed targets will be ignored.
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
"x86_64-pc-windows-msvc",
"x86_64-apple-darwin",
]
ignore-build-dependencies
If true, all crates that are only used as build dependencies will be ignored.
ignore-build-dependencies = true
ignore-dev-dependencies
If true, all crates that are only used as dev dependencies will be ignored.
ignore-dev-dependencies = true
[[DEPENDENCY.additional]]
-
root
Name of the root folder -
license
Name of the license. Has to be parsable from SPDX, see https://spdx.org/licenses/ -
license-file
The path to the license file where the license is specified -
license-start
The starting line number of the license in the specified license file -
license-end
The ending line number of the license in the specified license file
# Example
[[physx-sys.additional]]
root = "PhysX"
license = "BSD-3-Clause"
license-file = "PhysX/README.md"
license-start = 3
license-end = 28
[[DEPENDENCY.ignore]]
Sometimes libraries include licenses for example code that you don't want to use.
-
license
Name of the license that you want to ingore. Has to be parsable from SPDX, see https://spdx.org/licenses/ -
license-file
The path to the license file where the license is specified
[[imgui-sys.ignore]]
license = "Zlib"
license-file = "third-party/cimgui/imgui/examples/libs/glfw/COPYING.txt"
about.hbs
See handlebars
Variables
-
overview
A list ofLicenseSet
-
licenses
A list ofLicense
Types
LicenseSet
-
count
The number of times the license is used -
name
The name of the license -
id
Theid
of the license
License
-
name
The full name of the license -
id
The SPDX identifier -
text
The license text -
source_path
The path of the license -
used_by
A list ofUsedBy
UsedBy
-
crate
Metadata for a cargo package -
path
Optional path of the dependency that is being used by the license
Example
<ul class="licenses-overview">
{{#each overview}}
<li><a href="#{{id}}">{{name}}</a> ({{count}})</li>
{{/each}}
</ul>
about.hbs
Preview of the default You can view the full license here
FAQ
Unable to satisfy the following licenses
[ERROR] Crate 'aho-corasick': Unable to satisfy [Unlicense OR MIT], with the following accepted licenses [Apache-2.0]
In this case you are missing either MIT
or Unlicense
as an accepted
license in your about.toml
Contributing
We welcome community contributions to this project.
Please read our Contributor Guide for more information on how to get started.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.