Skip to main content

Retrieve licenses for purl documented dependencies.

Project description

purl-license-checker

Retrieve missing licenses for purl documented dependencies.

CodeQL CI Downloads Supported Versions Contributors

This cli utility takes one or more purl formatted urls from stdin and will try to find the license attached to each of them, by querying various package managers databases.

This is particularly useful to fill GitHub's Dependabot gap of missing 90% of licenses when working at scale with ghas-cli for instance.

Supported package managers:

Installation

Builds are available in the Releases tab and on Pypi

  • Pypi:
pip install purl-license-checker
  • Manually:
python -m pip install /full/path/to/purl-license-checker-xxx.whl

# e.g: python3 -m pip install Downloads/purl-license-checker-0.5.0-none-any.whl

Usage

To show the help message for each command, run purl-license-checker -h:

Usage: purl-license-checker [OPTIONS] COMMAND [ARGS]...

  Retrieve licenses for purl documented dependencies.

  Get help: `@jboursier-mwb` on GitHub

Options:
  --help  Show this message and exit.

Commands:
  get_license
  load_file
  merge_csv

Get a license

get_license PURL GITHUB_TOKEN

e.g:

get_license pip:ghas-cli gh-123456789qwerty

Find licenses for a csv-list of purl dependencies

load_file PATH GITHUB_TOKEN

e.g:

With a PATH csv file formatted as follow:

repo_name, purl, version, license

Where missing licenses are set to Unknown, for instance:

ghas-cli, ghas-cli, com.github.Malwarebytes/ghas-cli,, MIT
ghas-cli, pip:charset-normalizer,3.3.2, MIT
ghas-cli, pip:colorama,0.4.6, BSD-2-Clause AND BSD-3-Clause
ghas-cli, pip:click,8.1.7, BSD-2-Clause AND BSD-3-Clause
ghas-cli, pip:python-magic,0.4.27, MIT
ghas-cli, pip:urllib3,2.2.3, MIT
ghas-cli, pip:requests,2.32.3, Apache-2.0
ghas-cli, pip:configparser,7.1.0, MIT
ghas-cli, pip:certifi,2024.8.30, MPL-2.0
ghas-cli, pip:idna,3.10, BSD-2-Clause AND BSD-3-Clause
ghas-cli, actions:actions/checkout,4.*.*, Unknown
ghas-cli, actions:github/codeql-action/analyze,3.*.*, Unknown
ghas-cli, actions:github/codeql-action/init,3.*.*, Unknown
ghas-cli, actions:actions/dependency-review-action,4.*.*, Unknown

load_file will do its best to find the licenses for all Unknown license fields and will output its results in output.csv.

The output format is as follow:

purl, license

For instance:

npm:unicode-match-property-ecmascript, MIT
npm:unicode-match-property-value-ecmascript, MIT
npm:unicode-property-aliases-ecmascript, MIT
npm:universalify, MIT
npm:unpipe, MIT
npm:use-sync-external-store, MIT
npm:util-deprecate, MIT
npm:utils-merge, MIT

Fill an existing partial csv list of purl licenses

merge_csv LICENSES_INPUT_PATH DEPENDENCIES_OUTPUT_PATH GITHUB_TOKEN

Allows to fill the unknown dependencies in DEPENDENCIES_OUTPUT_PATH formatted as repo_name, purl, version, license from LICENSES_INPUT_PATH containing only purl, license. Particularly useful with a workflow based on ghas-cli.

Development

Build

Install uv first, then:

make dev

Bump the version number

  • Bump the version number: uv version --minor
  • Update the __version__ field in src/cli.py accordingly.

Publish a new version

Requires syft to be installed to generate the sbom.

  1. Bump the version number as described above
  2. make release to build the packages
  3. git commit -a -S Bump to version 1.1.2 and git tag -s v1.1.2 -m "1.1.2"
  4. Upload dist/*, checksums.sha512 and checksums.sha512.asc to a new release in GitHub.

Miscellaneous

This repository is provided as-is and isn't bound to Malwarebytes' SLA.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

purl_license_checker-0.2.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

purl_license_checker-0.2.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file purl_license_checker-0.2.0.tar.gz.

File metadata

File hashes

Hashes for purl_license_checker-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e3207f8fd211b86a57d03a14e550585414fb792fe821ca2ae096e3f15ac147de
MD5 9a9d1ef6aeb717cb9b88ef2492e6be12
BLAKE2b-256 7932f08a0e0b70718a62b15f94b3687454b8b0a3207260585fc4900bd64ad198

See more details on using hashes here.

File details

Details for the file purl_license_checker-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for purl_license_checker-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9446af7fcdfa21b5a8858893e94def29d99c7329c11c3b827c95526aeb1ae20b
MD5 5eef7b5e2f15054ff0e06bc7d50f166c
BLAKE2b-256 5c715bb4ec510ab77b8300fe3c07b4f84cd26ea279e766ad703228549bc794d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page