Eternal.PackageCheck
1.0.15
dotnet tool install --global Eternal.PackageCheck --version 1.0.15
dotnet new tool-manifest
dotnet tool install --local Eternal.PackageCheck --version 1.0.15
#tool dotnet:?package=Eternal.PackageCheck&version=1.0.15
nuke :add-package Eternal.PackageCheck --version 1.0.15
Eternal Package Checker
Eternal.PackageCheck NuGet library package
Copyright Eternal Developments, LLC. All Rights Reserved.
License
MIT
Functionality
This utility checks the meta data associated with a given package and optional version. This can be helpful when filling in corporate approval forms and when you wish to make sure all the correct fields are set in your published package.
It also lists any CVEs found for the package using https://osv.dev/ and the https://nvd.nist.gov/ APIs.
Installation for Windows 11 and Ubuntu Raccoon: dotnet tool install --global Eternal.PackageCheck
It supports the following four ecosystems:
- RubyGems e.g. rubygems bcrypt
- NuGet e.g. nuget Eternal.ConsoleUtilities
- Go e.g. go golang.org/x/sys
- npm e.g. npm is-obj
- Python e.g. pypi hypercorn
It is designed to be strict when detecting licenses - please let me know if you find a false positive.
The utility makes some GitHub and GitLab API calls. For those you'll need to set up a Personal Access Token for each provider and set an environment variable to each one.
GITHUB_PAT=github_pat_11BF*************D5xsl_gkQeLZidP2t*****************RM2NVZ****gfl
GITLAB_PAT=glpat-pkD8J**********EV9WJfGM**********TpvdjFheA8.01.170****lv
Looking up the license from a Repo
- The root folder (and only the root folder) of the repo is interrogated for a list of files.
- Any file that has 'license', 'licence', 'COPYING', 'Copyright', or 'BSDL' is a candidate file. The name check is case insensitive.
- e.g. These files will be determined to be candidate files 'MIT-LICENSE', 'License.txt', 'BSD-Licence'
- The text version of the file (not the decorated HTML version) is downloaded.
- The file contents are sanitized.
- This means all carriage returns, new lines, and tabs are converted to spaces.
- Any smart quotes are replaced with vanilla quotes.
- Asterisks and numbered items (e.g. '2.') are removed to make various versions of the BSD license consistent.
- All double spaces are converted to single spaces.
- The starting words and the ending words of the license are searched for in a case insensitive fashion.
- If both the above exist, then key phrases from the license are looked for.
- This is to account for when the license is changed (for example) from 'AUTHORS' to 'Company, LLC'
- If all the phrases are found, then the license matches and the HTML link is set.
- The pre-sanitized license contents are stored or downloaded and stored.
Looking up the copyright from the license contents
- The license and license contents are validated to ensure consistency.
- All words between 'Copyright' and the start of the license boilerplate text are extracted.
- This is sanitized and set as the copyright message.
Licenses that are detected
a.k.a. Licenses with the meta data setup
- MIT
- ISC
- MIT-0
- BSD-3-Clause
- BSD-2-Clause
- 0BSD
- Apache-2.0
- PSF-2.0
- BlueOak-1.0.0
- MPL-2.0 - no copyright extraction
- CC0-1.0 - no copyright extraction
- CC-BY-4.0 - no copyright extraction
- Ruby - use this license or the BSD-2-Clause instead
- WTFPL
- Hippocratic-2.1
- LGPL-2.0-only - WIP
- LGPL-2.0-or-later - WIP
- LGPL-2.1-only - WIP
- LGPL-2.1-or-later - WIP
- LGPL-3.0-only - WIP
- LGPL-3.0-or-later - WIP
- GPL-2.0-only - WIP
- GPL-2.0-or-later - WIP
- GPL-3.0-only - WIP
- GPL-3.0-or-later - WIP
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.15 | 44 | 9/29/2026 |
| 1.0.14 | 36 | 9/29/2026 |
| 1.0.13 | 92 | 9/23/2026 |
| 1.0.12 | 107 | 9/10/2026 |
| 1.0.11 | 101 | 9/9/2026 |
| 1.0.10 | 104 | 9/7/2026 |
| 1.0.9 | 102 | 9/4/2026 |
| 1.0.8 | 103 | 9/4/2026 |
| 1.0.7 | 106 | 8/31/2026 |
| 1.0.6 | 99 | 8/28/2026 |
| 1.0.5 | 109 | 8/28/2026 |
| 1.0.4 | 114 | 8/26/2026 |
| 1.0.3 | 110 | 8/26/2026 |
| 1.0.2 | 113 | 8/26/2026 |
| 1.0.1 | 114 | 8/25/2026 |