continuous-delivery-scripts 4.2.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.2.0/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-4.4.0}/PKG-INFO +13 -12
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/README.md +12 -11
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/_version.py +3 -3
- continuous_delivery_scripts-4.4.0/continuous_delivery_scripts/check_licence_compliance.py +68 -0
- {continuous_delivery_scripts-4.2.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.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_document.py +32 -2
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +57 -3
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_package.py +10 -2
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_project.py +81 -0
- {continuous_delivery_scripts-4.2.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.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.html.jinja2 +77 -7
- {continuous_delivery_scripts-4.2.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.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/configuration.py +6 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/language_specifics_base.py +4 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/third_party_licences.py +43 -6
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0/continuous_delivery_scripts.egg-info}/PKG-INFO +13 -12
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/SOURCES.txt +4 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/entry_points.txt +1 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/pyproject.toml +11 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/setup.py +2 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/GitPython.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Incremental.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Jinja2.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Mako.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Markdown.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/MarkupSafe.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/PyYAML.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/Pygments.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/SecretStorage.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/boolean.py.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/boto3.spdx +4 -4
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/botocore.spdx +4 -4
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/bracex.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/certifi.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/cffi.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/charset-normalizer.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/click-default-group.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/click.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/continuous-delivery-scripts.spdx +136 -84
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/cryptography.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/detect-secrets.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/docutils.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/gibberish-detector.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/gitdb.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/id.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/idna.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.classes.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.context.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jaraco.functools.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jeepney.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jellyfish.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/jmespath.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/keyring.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/license-expression.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/licenseheaders.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/markdown-it-py.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/mdurl.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/more-itertools.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/nh3.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/packaging.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pdoc3.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/ply.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pyautoversion.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pycparser.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/pyparsing.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/python-dateutil.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/python-dotenv.spdx +4 -4
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rdflib.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/readme_renderer.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/regex.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/requests-toolbelt.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/requests.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rfc3986.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/rich.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/s3transfer.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/semver.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/setuptools.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/six.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/smmap.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/spdx-tools.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/toml.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/towncrier.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/twine.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/urllib3.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/wcmatch.spdx +1 -1
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/spdx-tmp/xmltodict.spdx +1 -1
- continuous_delivery_scripts-4.2.0/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +0 -4
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/LICENSE +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/MANIFEST.in +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/__init__.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/assert_news.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/create_news_file.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/detect_secrets.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/generate_docs.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/generate_news.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/get_config.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/get_version.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/language_specifics.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/license_files.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/CI.MD +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/__init__.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/basic.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/ci.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/docker.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/golang.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/noop.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/plugins/python.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/tag_and_release.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/__init__.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/definitions.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/git_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/logging.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/news_file.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts/utils/versioning.py +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/requires.txt +0 -0
- {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.4.0}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
- {continuous_delivery_scripts-4.2.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
|
|
@@ -239,17 +239,18 @@ same commands whichever CI system the team chooses.
|
|
|
239
239
|
|
|
240
240
|
| Command | What it does | Key arguments | Typical environment |
|
|
241
241
|
| --- | --- | --- | --- |
|
|
242
|
-
| `cd-assert-news` | Validates a branch's news files; can add a missing file for a configured dependency-update branch. | `--current-branch` (`-b`), `--local` (`-l`) | CI; `--local` for developer checks |
|
|
243
|
-
| `cd-create-news-file` | Creates a one-line news fragment in the configured news directory. | Required news text; `--type` (`-t`), `--ref-number` (`-n`) | Developer |
|
|
244
|
-
| `cd-determine-version` | Calculates and prints the **project's prospective release version** without generating a changelog. | Required `--release-type` (`-t`) | Developer preview or CI |
|
|
245
|
-
| `cd-generate-news` | Updates the project version and, for beta or production releases, builds the changelog from news fragments; prints the resulting version. | Required `--release-type` (`-t`) | CI release flow |
|
|
246
|
-
| `cd-get-config` | Prints a project configuration value. | Either `--key` (`-k`) or `--config-variable` (`-c`) | Developer or CI |
|
|
247
|
-
| `cd-tag-and-release` | 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
|
-
| `cd-generate-docs` | 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` | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`);
|
|
250
|
-
| `cd-
|
|
251
|
-
| `cd-
|
|
252
|
-
| `cd-
|
|
242
|
+
| [`cd-assert-news`](./guides/checking-news-fragments.md) | Validates a branch's news files; can add a missing file for a configured dependency-update branch. | `--current-branch` (`-b`), `--local` (`-l`) | CI; `--local` for developer checks |
|
|
243
|
+
| [`cd-create-news-file`](./guides/creating-news-fragments.md) | Creates a one-line news fragment in the configured news directory. | Required news text; `--type` (`-t`), `--ref-number` (`-n`) | Developer |
|
|
244
|
+
| [`cd-determine-version`](./guides/previewing-versions.md) | Calculates and prints the **project's prospective release version** without generating a changelog. | Required `--release-type` (`-t`) | Developer preview or CI |
|
|
245
|
+
| [`cd-generate-news`](./guides/managing-changelogs.md) | Updates the project version and, for beta or production releases, builds the changelog from news fragments; prints the resulting version. | Required `--release-type` (`-t`) | CI release flow |
|
|
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
|
+
| [`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
|
+
| [`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`); 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
|
+
| [`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
|
+
| [`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
|
+
| [`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 |
|
|
253
254
|
|
|
254
255
|
For example, `cd-create-news-file "Fix dependency resolution" --type bugfix`
|
|
255
256
|
adds a news fragment. For release workflow details, see the
|
|
@@ -178,17 +178,18 @@ same commands whichever CI system the team chooses.
|
|
|
178
178
|
|
|
179
179
|
| Command | What it does | Key arguments | Typical environment |
|
|
180
180
|
| --- | --- | --- | --- |
|
|
181
|
-
| `cd-assert-news` | Validates a branch's news files; can add a missing file for a configured dependency-update branch. | `--current-branch` (`-b`), `--local` (`-l`) | CI; `--local` for developer checks |
|
|
182
|
-
| `cd-create-news-file` | Creates a one-line news fragment in the configured news directory. | Required news text; `--type` (`-t`), `--ref-number` (`-n`) | Developer |
|
|
183
|
-
| `cd-determine-version` | Calculates and prints the **project's prospective release version** without generating a changelog. | Required `--release-type` (`-t`) | Developer preview or CI |
|
|
184
|
-
| `cd-generate-news` | Updates the project version and, for beta or production releases, builds the changelog from news fragments; prints the resulting version. | Required `--release-type` (`-t`) | CI release flow |
|
|
185
|
-
| `cd-get-config` | Prints a project configuration value. | Either `--key` (`-k`) or `--config-variable` (`-c`) | Developer or CI |
|
|
186
|
-
| `cd-tag-and-release` | 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
|
-
| `cd-generate-docs` | 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` | Generates SPDX documents and third-party licence summaries, then checks licence compliance when project metadata is available. | Required `--output-dir` (`-o`);
|
|
189
|
-
| `cd-
|
|
190
|
-
| `cd-
|
|
191
|
-
| `cd-
|
|
181
|
+
| [`cd-assert-news`](./guides/checking-news-fragments.md) | Validates a branch's news files; can add a missing file for a configured dependency-update branch. | `--current-branch` (`-b`), `--local` (`-l`) | CI; `--local` for developer checks |
|
|
182
|
+
| [`cd-create-news-file`](./guides/creating-news-fragments.md) | Creates a one-line news fragment in the configured news directory. | Required news text; `--type` (`-t`), `--ref-number` (`-n`) | Developer |
|
|
183
|
+
| [`cd-determine-version`](./guides/previewing-versions.md) | Calculates and prints the **project's prospective release version** without generating a changelog. | Required `--release-type` (`-t`) | Developer preview or CI |
|
|
184
|
+
| [`cd-generate-news`](./guides/managing-changelogs.md) | Updates the project version and, for beta or production releases, builds the changelog from news fragments; prints the resulting version. | Required `--release-type` (`-t`) | CI release flow |
|
|
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
|
+
| [`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
|
+
| [`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`); 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
|
+
| [`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
|
+
| [`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
|
+
| [`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 |
|
|
192
193
|
|
|
193
194
|
For example, `cd-create-news-file "Fix dependency resolution" --type bugfix`
|
|
194
195
|
adds a news fragment. For release workflow details, see the
|
|
@@ -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
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
+
"""Check project and dependency licences without generating SPDX documents."""
|
|
6
|
+
|
|
7
|
+
import argparse
|
|
8
|
+
import logging
|
|
9
|
+
import sys
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
from continuous_delivery_scripts.language_specifics import get_language_specifics
|
|
13
|
+
from continuous_delivery_scripts.spdx_report.licence_assessment import LicenceAssessment
|
|
14
|
+
from continuous_delivery_scripts.utils.logging import log_exception, set_log_level
|
|
15
|
+
|
|
16
|
+
logger = logging.getLogger(__name__)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main() -> int:
|
|
20
|
+
"""Check licence compliance and optionally write third-party IP summaries."""
|
|
21
|
+
parser = argparse.ArgumentParser(description="Check project and dependency licence compliance.")
|
|
22
|
+
parser.add_argument(
|
|
23
|
+
"-o",
|
|
24
|
+
"--output-dir",
|
|
25
|
+
type=Path,
|
|
26
|
+
help="Write third-party IP summaries to this existing directory (no SPDX documents).",
|
|
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
|
+
)
|
|
33
|
+
parser.add_argument("-v", "--verbose", action="count", default=0, help="Increase logging verbosity.")
|
|
34
|
+
args = parser.parse_args()
|
|
35
|
+
set_log_level(args.verbose)
|
|
36
|
+
|
|
37
|
+
try:
|
|
38
|
+
plugin = get_language_specifics()
|
|
39
|
+
if not plugin.can_get_project_metadata():
|
|
40
|
+
raise ValueError("The selected language plugin cannot provide metadata for licence compliance checks.")
|
|
41
|
+
project = plugin.get_current_spdx_project()
|
|
42
|
+
if project is None:
|
|
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()
|
|
46
|
+
if args.output_dir is not None:
|
|
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}")
|
|
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)
|
|
61
|
+
return 0
|
|
62
|
+
except Exception as error:
|
|
63
|
+
log_exception(logger, error)
|
|
64
|
+
return 1
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
if __name__ == "__main__":
|
|
68
|
+
sys.exit(main())
|
|
@@ -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."
|