🆔 spdx
Helper crate for SPDX license expressions
About
This crate's main purpose is to parse and evaluate SPDX license expressions. It also optionally provides the ability to scan text data for SPDX license information. Each version of this crate contains a specific version of the official SPDX license list which can be retrieved via the spdx::identifiers::VERSION constant.
Features
text- Includes the full canonical text of each licensedetection- Allows analysis of text to determine if it might be an SPDX license text, or have an SPDX license headerdetection-cache- Allows de/serialization of aStorefor quicker loadingdetection-inline-cache- Inlines aStorecache into this crate, which allows easier loading in downstream crates at the cost of increased binary sizedetection-parallel- Performs license detection in parallel within the same text
Usage
use Expression;
let this_is_fine = parse.unwrap;
assert!;
assert!;
// `NOPE` is not a valid SPDX license identifier, so this expression
// will fail to parse
let _this_is_not = parse.unwrap_err;
Updating SPDX list
You can update the list of SPDX identifiers for licenses and exceptions by running the update program cargo run --manifest-path=update/Cargo.toml -- v3.6 where v3.6 is the tag in the SPDX data repo.
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.