continuous-delivery-scripts 4.3.0__tar.gz → 4.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {continuous_delivery_scripts-4.3.0/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-4.4.0}/PKG-INFO +3 -3
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/README.md +2 -2
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/_version.py +3 -3
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/check_licence_compliance.py +20 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/report_third_party_ip.py +12 -2
- continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/data/licence_assessment.toml +105 -0
- continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/licence_assessment.py +729 -0
- continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/scancode_licence_db.py +76 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +57 -3
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_project.py +81 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_summary.py +31 -1
- continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +4 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.html.jinja2 +65 -7
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.txt.jinja2 +12 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/configuration.py +6 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/third_party_licences.py +8 -3
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0/continuous_delivery_scripts.egg-info}/PKG-INFO +3 -3
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/SOURCES.txt +3 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/pyproject.toml +11 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/setup.py +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/GitPython.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Incremental.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Jinja2.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Mako.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Markdown.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/MarkupSafe.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/PyYAML.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Pygments.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/SecretStorage.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/boolean.py.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/boto3.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/botocore.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/bracex.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/certifi.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/cffi.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/charset-normalizer.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/click-default-group.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/click.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/continuous-delivery-scripts.spdx +121 -82
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/cryptography.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/detect-secrets.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/docutils.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/gibberish-detector.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/gitdb.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/id.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/idna.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.classes.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.context.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.functools.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jeepney.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jellyfish.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jmespath.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/keyring.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/license-expression.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/licenseheaders.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/markdown-it-py.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/mdurl.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/more-itertools.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/nh3.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/packaging.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pdoc3.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/ply.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pyautoversion.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pycparser.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pyparsing.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/python-dateutil.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/python-dotenv.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rdflib.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/readme_renderer.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/regex.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/requests-toolbelt.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/requests.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rfc3986.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rich.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/s3transfer.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/semver.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/setuptools.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/six.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/smmap.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/spdx-tools.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/toml.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/towncrier.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/twine.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/urllib3.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/wcmatch.spdx +1 -1
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/xmltodict.spdx +1 -1
- continuous_delivery_scripts-4.3.0/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +0 -4
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/LICENSE +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/MANIFEST.in +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/__init__.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/assert_news.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/create_news_file.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/detect_secrets.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/generate_docs.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/generate_news.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/get_config.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/get_version.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/language_specifics.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/license_files.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/CI.MD +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/__init__.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/basic.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/ci.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/docker.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/golang.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/noop.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/python.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_document.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_package.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/tag_and_release.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/__init__.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/definitions.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/git_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/language_specifics_base.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/logging.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/news_file.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/versioning.py +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/entry_points.txt +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/requires.txt +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
- {continuous_delivery_scripts-4.3.0 → continuous_delivery_scripts-4.4.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: continuous-delivery-scripts
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.4.0
|
|
4
4
|
Summary: Git-based CI/CD tools for releases, changelogs, SPDX SBOMs and licence reporting
|
|
5
5
|
Home-page: https://github.com/ARMmbed/continuous-delivery-scripts
|
|
6
6
|
Author: Arm
|
|
@@ -246,8 +246,8 @@ same commands whichever CI system the team chooses.
|
|
|
246
246
|
| [`cd-get-config`](./guides/reading-project-configuration.md) | Prints a project configuration value. | Either `--key` (`-k`) or `--config-variable` (`-c`) | Developer or CI |
|
|
247
247
|
| [`cd-tag-and-release`](./guides/automating-releases.md) | Runs the release flow, including documentation, licensing summaries, Git tagging, packaging and publication through the selected [language plugin](./continuous_delivery_scripts/plugins). | Required `--release-type` (`-t`); optional `--current-branch` (`-b`) | CI release flow |
|
|
248
248
|
| [`cd-generate-docs`](./guides/generating-code-documentation.md) | Generates code documentation in the configured output directory (or one specified on the command line). | `--output_directory` | Developer preview or CI |
|
|
249
|
-
| [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`);
|
|
250
|
-
| [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports | CI gate or developer review |
|
|
249
|
+
| [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`); optional `--lookup-scancode` | CI audit; developer review also possible |
|
|
250
|
+
| [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports, `--lookup-scancode` | CI gate or developer review |
|
|
251
251
|
| [`cd-license-files`](./guides/licence-header-management.md) | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
|
|
252
252
|
| [`cd-record-secrets`](./guides/recording-secrets.md) | Records accepted findings in the project's [detect-secrets](https://github.com/Yelp/detect-secrets) registry. | `--registry-file` (`-r`); defaults to the configured registry | Developer (registry maintenance) |
|
|
253
253
|
| [`cd-detect-secrets`](./guides/checking-for-secrets.md) | Checks Git-tracked files against that registry and fails if new secrets are found. | `--registry-file` (`-r`); defaults to the configured registry | CI; developer checks also possible |
|
|
@@ -185,8 +185,8 @@ same commands whichever CI system the team chooses.
|
|
|
185
185
|
| [`cd-get-config`](./guides/reading-project-configuration.md) | Prints a project configuration value. | Either `--key` (`-k`) or `--config-variable` (`-c`) | Developer or CI |
|
|
186
186
|
| [`cd-tag-and-release`](./guides/automating-releases.md) | Runs the release flow, including documentation, licensing summaries, Git tagging, packaging and publication through the selected [language plugin](./continuous_delivery_scripts/plugins). | Required `--release-type` (`-t`); optional `--current-branch` (`-b`) | CI release flow |
|
|
187
187
|
| [`cd-generate-docs`](./guides/generating-code-documentation.md) | Generates code documentation in the configured output directory (or one specified on the command line). | `--output_directory` | Developer preview or CI |
|
|
188
|
-
| [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`);
|
|
189
|
-
| [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports | CI gate or developer review |
|
|
188
|
+
| [`cd-generate-spdx`](./guides/generating-an-spdx-sbom.md) | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`); optional `--lookup-scancode` | CI audit; developer review also possible |
|
|
189
|
+
| [`cd-check-licence-compliance`](./guides/checking-licence-compliance.md) | Checks project and dependency licences without creating SPDX documents; optionally writes third-party IP summaries. | Optional `--output-dir` (`-o`) for reports, `--lookup-scancode` | CI gate or developer review |
|
|
190
190
|
| [`cd-license-files`](./guides/licence-header-management.md) | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
|
|
191
191
|
| [`cd-record-secrets`](./guides/recording-secrets.md) | Records accepted findings in the project's [detect-secrets](https://github.com/Yelp/detect-secrets) registry. | `--registry-file` (`-r`); defaults to the configured registry | Developer (registry maintenance) |
|
|
192
192
|
| [`cd-detect-secrets`](./guides/checking-for-secrets.md) | Checks Git-tracked files against that registry and fails if new secrets are found. | `--registry-file` (`-r`); defaults to the configured registry | CI; developer checks also possible |
|
|
@@ -11,8 +11,8 @@ References
|
|
|
11
11
|
This file is autogenerated, do not modify by hand.
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
__version__ = "4.
|
|
15
|
-
COMMIT = "
|
|
14
|
+
__version__ = "4.4.0"
|
|
15
|
+
COMMIT = "b480ded441705a4dda9e7d2d3e7a3e1b45729688"
|
|
16
16
|
MAJOR = 4
|
|
17
|
-
MINOR =
|
|
17
|
+
MINOR = 4
|
|
18
18
|
PATCH = 0
|
|
@@ -10,6 +10,7 @@ import sys
|
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
|
|
12
12
|
from continuous_delivery_scripts.language_specifics import get_language_specifics
|
|
13
|
+
from continuous_delivery_scripts.spdx_report.licence_assessment import LicenceAssessment
|
|
13
14
|
from continuous_delivery_scripts.utils.logging import log_exception, set_log_level
|
|
14
15
|
|
|
15
16
|
logger = logging.getLogger(__name__)
|
|
@@ -24,6 +25,11 @@ def main() -> int:
|
|
|
24
25
|
type=Path,
|
|
25
26
|
help="Write third-party IP summaries to this existing directory (no SPDX documents).",
|
|
26
27
|
)
|
|
28
|
+
parser.add_argument(
|
|
29
|
+
"--lookup-scancode",
|
|
30
|
+
action="store_true",
|
|
31
|
+
help="Consult ScanCode LicenseDB for unclassified licences or missing assessment rules.",
|
|
32
|
+
)
|
|
27
33
|
parser.add_argument("-v", "--verbose", action="count", default=0, help="Increase logging verbosity.")
|
|
28
34
|
args = parser.parse_args()
|
|
29
35
|
set_log_level(args.verbose)
|
|
@@ -35,9 +41,23 @@ def main() -> int:
|
|
|
35
41
|
project = plugin.get_current_spdx_project()
|
|
36
42
|
if project is None:
|
|
37
43
|
raise ValueError("The selected language plugin did not return a project for licence compliance checks.")
|
|
44
|
+
if args.lookup_scancode:
|
|
45
|
+
project.enable_scancode_lookup()
|
|
38
46
|
if args.output_dir is not None:
|
|
39
47
|
project.generate_licensing_summary(args.output_dir)
|
|
48
|
+
counts = {
|
|
49
|
+
status.value: sum(result.status is status for result in project.licence_assessments.values())
|
|
50
|
+
for status in LicenceAssessment
|
|
51
|
+
}
|
|
52
|
+
print("Dependency licence assessment: " + ", ".join(f"{name}: {count}" for name, count in counts.items()))
|
|
53
|
+
if args.lookup_scancode:
|
|
54
|
+
for name, result in project.licence_assessments.items():
|
|
55
|
+
for info in result.scancode_licences:
|
|
56
|
+
print(f"{name}: ScanCode LicenseDB: {info.identifier} ({info.category}): {info.url}")
|
|
40
57
|
project.check_licence_compliance()
|
|
58
|
+
if args.lookup_scancode:
|
|
59
|
+
for warning in project.scancode_follow_up_warnings():
|
|
60
|
+
print(f"WARNING: {warning}", file=sys.stderr)
|
|
41
61
|
return 0
|
|
42
62
|
except Exception as error:
|
|
43
63
|
log_exception(logger, error)
|
|
@@ -36,11 +36,13 @@ def generate_spdx_project_reports(project: "SpdxProject", output_directory: Path
|
|
|
36
36
|
return project
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
def generate_spdx_reports(output_directory: Path) -> Optional["SpdxProject"]:
|
|
39
|
+
def generate_spdx_reports(output_directory: Path, lookup_scancode: bool = False) -> Optional["SpdxProject"]:
|
|
40
40
|
"""Generates all the SPDX reports for the current project."""
|
|
41
41
|
project = get_language_specifics().get_current_spdx_project()
|
|
42
42
|
if not project:
|
|
43
43
|
return None
|
|
44
|
+
if lookup_scancode:
|
|
45
|
+
project.enable_scancode_lookup()
|
|
44
46
|
return generate_spdx_project_reports(project, output_directory)
|
|
45
47
|
|
|
46
48
|
|
|
@@ -59,6 +61,11 @@ def main() -> int:
|
|
|
59
61
|
required=True,
|
|
60
62
|
type=convert_to_path,
|
|
61
63
|
)
|
|
64
|
+
parser.add_argument(
|
|
65
|
+
"--lookup-scancode",
|
|
66
|
+
action="store_true",
|
|
67
|
+
help="Consult ScanCode LicenseDB for unclassified licences or missing assessment rules.",
|
|
68
|
+
)
|
|
62
69
|
|
|
63
70
|
parser.add_argument(
|
|
64
71
|
"-v",
|
|
@@ -72,9 +79,12 @@ def main() -> int:
|
|
|
72
79
|
|
|
73
80
|
try:
|
|
74
81
|
if get_language_specifics().can_get_project_metadata():
|
|
75
|
-
project = generate_spdx_reports(args.output_dir)
|
|
82
|
+
project = generate_spdx_reports(args.output_dir, lookup_scancode=args.lookup_scancode)
|
|
76
83
|
if project:
|
|
77
84
|
project.check_licence_compliance()
|
|
85
|
+
if args.lookup_scancode:
|
|
86
|
+
for warning in project.scancode_follow_up_warnings():
|
|
87
|
+
print(f"WARNING: {warning}", file=sys.stderr)
|
|
78
88
|
return 0
|
|
79
89
|
except Exception as e:
|
|
80
90
|
log_exception(logger, e)
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (C) 2020-2026 Arm Limited or its affiliates and Contributors. All rights reserved.
|
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
# Default screening policy. These are review priorities, not legal conclusions.
|
|
7
|
+
# Project overrides are merged by licence ID and rule ID.
|
|
8
|
+
schema_version = 1
|
|
9
|
+
|
|
10
|
+
[settings]
|
|
11
|
+
# Keep existing compliance exit codes unchanged unless a project opts in.
|
|
12
|
+
fail_on = []
|
|
13
|
+
|
|
14
|
+
[classifications]
|
|
15
|
+
MIT = "PERMISSIVE"
|
|
16
|
+
"MIT-0" = "PERMISSIVE"
|
|
17
|
+
"0BSD" = "PERMISSIVE"
|
|
18
|
+
"BSD-2-Clause" = "PERMISSIVE"
|
|
19
|
+
"BSD-3-Clause" = "PERMISSIVE"
|
|
20
|
+
ISC = "PERMISSIVE"
|
|
21
|
+
"Apache-2.0" = "PERMISSIVE"
|
|
22
|
+
"Python-2.0" = "PERMISSIVE"
|
|
23
|
+
"PSF-2.0" = "PERMISSIVE"
|
|
24
|
+
"MPL-2.0" = "WEAK_COPYLEFT"
|
|
25
|
+
"LGPL-2.1-only" = "WEAK_COPYLEFT"
|
|
26
|
+
"LGPL-2.1-or-later" = "WEAK_COPYLEFT"
|
|
27
|
+
"LGPL-3.0-only" = "WEAK_COPYLEFT"
|
|
28
|
+
"LGPL-3.0-or-later" = "WEAK_COPYLEFT"
|
|
29
|
+
"GPL-2.0-only" = "STRONG_COPYLEFT"
|
|
30
|
+
"GPL-2.0-or-later" = "STRONG_COPYLEFT"
|
|
31
|
+
"GPL-3.0-only" = "STRONG_COPYLEFT"
|
|
32
|
+
"GPL-3.0-or-later" = "STRONG_COPYLEFT"
|
|
33
|
+
"AGPL-3.0-only" = "NETWORK_COPYLEFT"
|
|
34
|
+
"AGPL-3.0-or-later" = "NETWORK_COPYLEFT"
|
|
35
|
+
"CC0-1.0" = "PUBLIC_DOMAIN"
|
|
36
|
+
Unlicense = "PUBLIC_DOMAIN"
|
|
37
|
+
"LicenseRef-Proprietary" = "PROPRIETARY"
|
|
38
|
+
|
|
39
|
+
# Map LicenseDB's own vocabulary to screening categories. Unmapped categories
|
|
40
|
+
# remain review-only; these are not legal compatibility decisions.
|
|
41
|
+
[scancode_categories]
|
|
42
|
+
Permissive = "PERMISSIVE"
|
|
43
|
+
"Copyleft Limited" = "WEAK_COPYLEFT"
|
|
44
|
+
Copyleft = "STRONG_COPYLEFT"
|
|
45
|
+
"Public Domain" = "PUBLIC_DOMAIN"
|
|
46
|
+
"Proprietary Free" = "PROPRIETARY"
|
|
47
|
+
Commercial = "PROPRIETARY"
|
|
48
|
+
"Free Restricted" = "PROPRIETARY"
|
|
49
|
+
"Non-Commercial" = "PROPRIETARY"
|
|
50
|
+
|
|
51
|
+
[[rules]]
|
|
52
|
+
id = "permissive-dependency"
|
|
53
|
+
project_category = "*"
|
|
54
|
+
dependency_category = "PERMISSIVE"
|
|
55
|
+
status = "ALLOW"
|
|
56
|
+
reason = "A permissive dependency generally permits redistribution; retain its notices and conditions."
|
|
57
|
+
|
|
58
|
+
[[rules]]
|
|
59
|
+
id = "public-domain-dependency"
|
|
60
|
+
project_category = "*"
|
|
61
|
+
dependency_category = "PUBLIC_DOMAIN"
|
|
62
|
+
status = "ALLOW"
|
|
63
|
+
reason = "No copyleft obligation is identified for this public-domain dependency; check its notices."
|
|
64
|
+
|
|
65
|
+
[[rules]]
|
|
66
|
+
id = "apache-2-to-gpl-2-only"
|
|
67
|
+
project_licence = "GPL-2.0-only"
|
|
68
|
+
dependency_licence = "Apache-2.0"
|
|
69
|
+
status = "REVIEW"
|
|
70
|
+
reason = "Apache-2.0 and GPL-2.0-only have a known directional compatibility concern for combined works."
|
|
71
|
+
|
|
72
|
+
[[rules]]
|
|
73
|
+
id = "apache-2-to-gpl-2-or-later"
|
|
74
|
+
project_licence = "GPL-2.0-or-later"
|
|
75
|
+
dependency_licence = "Apache-2.0"
|
|
76
|
+
status = "REVIEW"
|
|
77
|
+
reason = "Review the GPL version selected for a combined work before incorporating Apache-2.0 code."
|
|
78
|
+
|
|
79
|
+
[[rules]]
|
|
80
|
+
id = "weak-copyleft-dependency"
|
|
81
|
+
project_category = "*"
|
|
82
|
+
dependency_category = "WEAK_COPYLEFT"
|
|
83
|
+
status = "REVIEW"
|
|
84
|
+
reason = "Weak copyleft obligations depend on modification, linking and how the work is distributed."
|
|
85
|
+
|
|
86
|
+
[[rules]]
|
|
87
|
+
id = "strong-copyleft-dependency"
|
|
88
|
+
project_category = "*"
|
|
89
|
+
dependency_category = "STRONG_COPYLEFT"
|
|
90
|
+
status = "REVIEW"
|
|
91
|
+
reason = "Strong copyleft obligations may affect a combined or redistributed work; review the usage."
|
|
92
|
+
|
|
93
|
+
[[rules]]
|
|
94
|
+
id = "network-copyleft-dependency"
|
|
95
|
+
project_category = "*"
|
|
96
|
+
dependency_category = "NETWORK_COPYLEFT"
|
|
97
|
+
status = "REVIEW"
|
|
98
|
+
reason = "Network copyleft obligations may apply to network use as well as distribution; review the usage."
|
|
99
|
+
|
|
100
|
+
[[rules]]
|
|
101
|
+
id = "proprietary-dependency"
|
|
102
|
+
project_category = "*"
|
|
103
|
+
dependency_category = "PROPRIETARY"
|
|
104
|
+
status = "REVIEW"
|
|
105
|
+
reason = "A proprietary licence reference does not reveal its terms; consult the rights holder."
|