continuous-delivery-scripts 4.2.0__tar.gz → 4.3.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.
Files changed (138) hide show
  1. {continuous_delivery_scripts-4.2.0/continuous_delivery_scripts.egg-info → continuous_delivery_scripts-4.3.0}/PKG-INFO +13 -12
  2. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/README.md +12 -11
  3. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/_version.py +3 -3
  4. continuous_delivery_scripts-4.3.0/continuous_delivery_scripts/check_licence_compliance.py +48 -0
  5. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_document.py +32 -2
  6. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_package.py +10 -2
  7. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.html.jinja2 +12 -0
  8. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/language_specifics_base.py +4 -1
  9. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/third_party_licences.py +35 -3
  10. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0/continuous_delivery_scripts.egg-info}/PKG-INFO +13 -12
  11. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts.egg-info/SOURCES.txt +1 -0
  12. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts.egg-info/entry_points.txt +1 -0
  13. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/setup.py +1 -0
  14. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/GitPython.spdx +1 -1
  15. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/Incremental.spdx +1 -1
  16. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/Jinja2.spdx +1 -1
  17. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/Mako.spdx +1 -1
  18. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/Markdown.spdx +1 -1
  19. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/MarkupSafe.spdx +1 -1
  20. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/PyYAML.spdx +1 -1
  21. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/Pygments.spdx +1 -1
  22. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/SecretStorage.spdx +1 -1
  23. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/boolean.py.spdx +1 -1
  24. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/boto3.spdx +4 -4
  25. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/botocore.spdx +4 -4
  26. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/bracex.spdx +1 -1
  27. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/certifi.spdx +1 -1
  28. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/cffi.spdx +1 -1
  29. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/charset-normalizer.spdx +1 -1
  30. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/click-default-group.spdx +1 -1
  31. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/click.spdx +1 -1
  32. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/continuous-delivery-scripts.spdx +90 -77
  33. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/cryptography.spdx +1 -1
  34. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/detect-secrets.spdx +1 -1
  35. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/docutils.spdx +1 -1
  36. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/gibberish-detector.spdx +1 -1
  37. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/gitdb.spdx +1 -1
  38. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/id.spdx +1 -1
  39. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/idna.spdx +1 -1
  40. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/jaraco.classes.spdx +1 -1
  41. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/jaraco.context.spdx +1 -1
  42. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/jaraco.functools.spdx +1 -1
  43. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/jeepney.spdx +1 -1
  44. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/jellyfish.spdx +1 -1
  45. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/jmespath.spdx +1 -1
  46. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/keyring.spdx +1 -1
  47. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/license-expression.spdx +1 -1
  48. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/licenseheaders.spdx +1 -1
  49. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/markdown-it-py.spdx +1 -1
  50. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/mdurl.spdx +1 -1
  51. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/more-itertools.spdx +1 -1
  52. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/nh3.spdx +1 -1
  53. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/packaging.spdx +1 -1
  54. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/pdoc3.spdx +1 -1
  55. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/ply.spdx +1 -1
  56. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/pyautoversion.spdx +1 -1
  57. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/pycparser.spdx +1 -1
  58. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/pyparsing.spdx +1 -1
  59. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/python-dateutil.spdx +1 -1
  60. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/python-dotenv.spdx +4 -4
  61. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/rdflib.spdx +1 -1
  62. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/readme_renderer.spdx +1 -1
  63. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/regex.spdx +1 -1
  64. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/requests-toolbelt.spdx +1 -1
  65. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/requests.spdx +1 -1
  66. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/rfc3986.spdx +1 -1
  67. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/rich.spdx +1 -1
  68. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/s3transfer.spdx +1 -1
  69. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/semver.spdx +1 -1
  70. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/setuptools.spdx +1 -1
  71. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/six.spdx +1 -1
  72. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/smmap.spdx +1 -1
  73. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/spdx-tools.spdx +1 -1
  74. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/toml.spdx +1 -1
  75. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/towncrier.spdx +1 -1
  76. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/twine.spdx +1 -1
  77. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/urllib3.spdx +1 -1
  78. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/wcmatch.spdx +1 -1
  79. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/spdx-tmp/xmltodict.spdx +1 -1
  80. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/LICENSE +0 -0
  81. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/MANIFEST.in +0 -0
  82. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/__init__.py +0 -0
  83. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/assert_news.py +0 -0
  84. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/create_news_file.py +0 -0
  85. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/detect_secrets.py +0 -0
  86. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/generate_docs.py +0 -0
  87. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/generate_news.py +0 -0
  88. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/get_config.py +0 -0
  89. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/get_version.py +0 -0
  90. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/language_specifics.py +0 -0
  91. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/license_files.py +0 -0
  92. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/BASIC.MD +0 -0
  93. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/CI.MD +0 -0
  94. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/GITHUB_ACTIONS.MD +0 -0
  95. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/GOLAND.MD +0 -0
  96. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/NOOP.MD +0 -0
  97. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/PYTHON.MD +0 -0
  98. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/__init__.py +0 -0
  99. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/basic.py +0 -0
  100. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/ci.py +0 -0
  101. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/docker.py +0 -0
  102. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/github_actions.py +0 -0
  103. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/golang.py +0 -0
  104. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/noop.py +0 -0
  105. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/plugins/python.py +0 -0
  106. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/report_third_party_ip.py +0 -0
  107. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/__init__.py +0 -0
  108. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_dependency.py +0 -0
  109. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_file.py +0 -0
  110. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_helpers.py +0 -0
  111. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_project.py +0 -0
  112. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/spdx_summary.py +0 -0
  113. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.csv.jinja2 +0 -0
  114. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/spdx_report/templates/third_party_IP_report.txt.jinja2 +0 -0
  115. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/tag_and_release.py +0 -0
  116. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/update_secrets_registry.py +0 -0
  117. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/__init__.py +0 -0
  118. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/aws_helpers.py +0 -0
  119. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/configuration.py +0 -0
  120. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/definitions.py +0 -0
  121. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/filesystem_helpers.py +0 -0
  122. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/git_helpers.py +0 -0
  123. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/hash_helpers.py +0 -0
  124. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/logging.py +0 -0
  125. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/news_file.py +0 -0
  126. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/noop/__init__.py +0 -0
  127. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/noop/package_helpers.py +0 -0
  128. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/package_helpers.py +0 -0
  129. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/python/__init__.py +0 -0
  130. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/python/package_helpers.py +0 -0
  131. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/python/python_helpers.py +0 -0
  132. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/string_helpers.py +0 -0
  133. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts/utils/versioning.py +0 -0
  134. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts.egg-info/dependency_links.txt +0 -0
  135. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts.egg-info/requires.txt +0 -0
  136. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/continuous_delivery_scripts.egg-info/top_level.txt +0 -0
  137. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/pyproject.toml +0 -0
  138. {continuous_delivery_scripts-4.2.0 → continuous_delivery_scripts-4.3.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continuous-delivery-scripts
3
- Version: 4.2.0
3
+ Version: 4.3.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`); create the directory first | CI audit; developer review also possible |
250
- | `cd-license-files` | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
251
- | `cd-record-secrets` | 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) |
252
- | `cd-detect-secrets` | 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 |
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`); create the directory first | 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 | 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`); create the directory first | CI audit; developer review also possible |
189
- | `cd-license-files` | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
190
- | `cd-record-secrets` | 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) |
191
- | `cd-detect-secrets` | 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 |
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`); create the directory first | 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 | 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.2.0"
15
- COMMIT = "757dd096956394de1185aa8f7bb169dc0d0fc982"
14
+ __version__ = "4.3.0"
15
+ COMMIT = "3e8ffc7bd8472928ca195f17fb278d40476ef8a2"
16
16
  MAJOR = 4
17
- MINOR = 2
17
+ MINOR = 3
18
18
  PATCH = 0
@@ -0,0 +1,48 @@
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.utils.logging import log_exception, set_log_level
14
+
15
+ logger = logging.getLogger(__name__)
16
+
17
+
18
+ def main() -> int:
19
+ """Check licence compliance and optionally write third-party IP summaries."""
20
+ parser = argparse.ArgumentParser(description="Check project and dependency licence compliance.")
21
+ parser.add_argument(
22
+ "-o",
23
+ "--output-dir",
24
+ type=Path,
25
+ help="Write third-party IP summaries to this existing directory (no SPDX documents).",
26
+ )
27
+ parser.add_argument("-v", "--verbose", action="count", default=0, help="Increase logging verbosity.")
28
+ args = parser.parse_args()
29
+ set_log_level(args.verbose)
30
+
31
+ try:
32
+ plugin = get_language_specifics()
33
+ if not plugin.can_get_project_metadata():
34
+ raise ValueError("The selected language plugin cannot provide metadata for licence compliance checks.")
35
+ project = plugin.get_current_spdx_project()
36
+ if project is None:
37
+ raise ValueError("The selected language plugin did not return a project for licence compliance checks.")
38
+ if args.output_dir is not None:
39
+ project.generate_licensing_summary(args.output_dir)
40
+ project.check_licence_compliance()
41
+ return 0
42
+ except Exception as error:
43
+ log_exception(logger, error)
44
+ return 1
45
+
46
+
47
+ if __name__ == "__main__":
48
+ sys.exit(main())
@@ -6,6 +6,7 @@
6
6
 
7
7
  from pathlib import Path
8
8
  from typing import TYPE_CHECKING, List, Optional
9
+ from urllib.parse import urlsplit
9
10
 
10
11
  from continuous_delivery_scripts.spdx_report.spdx_dependency import (
11
12
  DependencySpdxDocumentRef,
@@ -24,6 +25,7 @@ from continuous_delivery_scripts.utils.configuration import (
24
25
  )
25
26
  from continuous_delivery_scripts.utils.hash_helpers import generate_uuid_based_on_str
26
27
  from continuous_delivery_scripts.utils.package_helpers import PackageMetadata
28
+ from continuous_delivery_scripts.utils.third_party_licences import LICENSE_REF_PROPRIETARY
27
29
 
28
30
  if TYPE_CHECKING:
29
31
  from spdx.document import Document
@@ -230,7 +232,7 @@ class SpdxDocument:
230
232
  the corresponding document
231
233
  """
232
234
  from spdx.creationinfo import Person, Organization, Tool
233
- from spdx.document import Document, License
235
+ from spdx.document import Document, ExtractedLicense, License
234
236
  from spdx.review import Review
235
237
  from spdx.version import Version
236
238
 
@@ -262,7 +264,35 @@ class SpdxDocument:
262
264
  # be described in a file and hence, all dependencies are described
263
265
  # in separate files. Find out what to do with dependencies when new
264
266
  # tools are released as it is not entirely clear in the specification
265
- doc.package = self.generate_spdx_package().generate_spdx_package()
267
+ spdx_package = self.generate_spdx_package()
268
+ doc.package = spdx_package.generate_spdx_package()
269
+ if LICENSE_REF_PROPRIETARY in spdx_package.main_licence or LICENSE_REF_PROPRIETARY in spdx_package.licence:
270
+ proprietary_licence = ExtractedLicense(LICENSE_REF_PROPRIETARY)
271
+ proprietary_licence.full_name = "Proprietary licence"
272
+ proprietary_licence.text = "Proprietary licence terms are not included in this SPDX document."
273
+ proprietary_licence.comment = (
274
+ "This is a locally defined licence reference, not an SPDX License List identifier. "
275
+ "See https://spdx.github.io/spdx-spec/v2.3/other-licensing-information-detected/ "
276
+ "for the LicenseRef format; consult the rights holder for the licence terms."
277
+ )
278
+ if LICENSE_REF_PROPRIETARY in spdx_package.main_licence:
279
+ licence_urls = {
280
+ evidence.get("path", "")
281
+ for evidence in self._package_metadata.licence_evidence
282
+ if evidence.get("kind") == "licence"
283
+ }
284
+ for url in sorted(licence_urls):
285
+ try:
286
+ parsed_url = urlsplit(url)
287
+ except ValueError:
288
+ continue
289
+ if (
290
+ parsed_url.scheme in ("http", "https")
291
+ and parsed_url.netloc
292
+ and not any(c.isspace() for c in url)
293
+ ):
294
+ proprietary_licence.add_xref(url)
295
+ doc.add_extr_lic(proprietary_licence)
266
296
 
267
297
  for external_reference in self.external_refs:
268
298
  doc.add_ext_document_reference(external_reference.generate_external_reference())
@@ -20,6 +20,7 @@ from continuous_delivery_scripts.spdx_report.spdx_helpers import (
20
20
  from continuous_delivery_scripts.utils.definitions import UNKNOWN
21
21
  from continuous_delivery_scripts.utils.package_helpers import PackageMetadata
22
22
  from continuous_delivery_scripts.utils.third_party_licences import (
23
+ LICENSE_REF_PROPRIETARY,
23
24
  UNKNOWN_LICENCE,
24
25
  cleanse_licence_expression,
25
26
  is_licence_accepted,
@@ -141,7 +142,14 @@ class SpdxPackage:
141
142
  @property
142
143
  def is_main_licence_accepted(self) -> bool:
143
144
  """States whether the main licence of the package is part of the accepted licence list."""
144
- return bool(is_licence_accepted(self.main_licence))
145
+ return bool(is_licence_accepted(self.main_licence, self._project_licence_refs))
146
+
147
+ @property
148
+ def _project_licence_refs(self) -> List[str]:
149
+ """Allow the project's own proprietary licence without permitting it for dependencies."""
150
+ if not self._is_dependency and LICENSE_REF_PROPRIETARY in self.main_licence:
151
+ return [LICENSE_REF_PROPRIETARY]
152
+ return []
145
153
 
146
154
  @property
147
155
  def licence(self) -> str:
@@ -162,7 +170,7 @@ class SpdxPackage:
162
170
  @property
163
171
  def is_licence_accepted(self) -> bool:
164
172
  """States whether the actual package's licence of the package is part of the accepted licence list."""
165
- return bool(is_licence_accepted(self.licence))
173
+ return bool(is_licence_accepted(self.licence, self._project_licence_refs))
166
174
 
167
175
  @property
168
176
  def author(self) -> str:
@@ -49,6 +49,9 @@
49
49
  .hero .meta { margin: .75rem 0 0; color: #e5f2f5; }
50
50
  main { padding-block: 2rem 4rem; }
51
51
  .page-nav { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 2rem; }
52
+ .download-links { display: flex; flex-wrap: wrap; gap: .75rem; }
53
+ .download-link { display: inline-flex; align-items: center; min-height: 2.75rem; padding: .5rem .9rem; border: 1px solid var(--accent); border-radius: .5rem; background: var(--surface); font-weight: 650; text-decoration: none; }
54
+ .download-link:hover { background: var(--background); text-decoration: underline; }
52
55
  section { margin-bottom: 2.75rem; }
53
56
  h2 { margin: 0 0 1rem; font-size: 1.5rem; }
54
57
  h3 { margin: 0 0 .5rem; font-size: 1.05rem; }
@@ -118,6 +121,15 @@
118
121
  <a href="#dependency-summary">Dependency summary</a>
119
122
  <a href="#package-licences">Package licences</a>
120
123
  </nav>
124
+ <section class="panel" aria-labelledby="downloads-heading">
125
+ <h2 id="downloads-heading">Download this report</h2>
126
+ <p>Choose a format for further analysis or sharing.</p>
127
+ <div class="download-links">
128
+ <a class="download-link" href="third_party_IP_report.csv" download="third_party_IP_report.csv">Download CSV</a>
129
+ <a class="download-link" href="third_party_IP_report.json" download="third_party_IP_report.json">Download JSON</a>
130
+ <a class="download-link" href="third_party_IP_report.txt" download="third_party_IP_report.txt">Download text</a>
131
+ </div>
132
+ </section>
121
133
  <section id="summary" aria-labelledby="summary-heading">
122
134
  <h2 id="summary-heading">Summary</h2>
123
135
  <div class="summary-grid">
@@ -15,6 +15,7 @@ from continuous_delivery_scripts.utils.configuration import (
15
15
  )
16
16
  from continuous_delivery_scripts.utils.definitions import CommitType
17
17
  from continuous_delivery_scripts.utils.git_helpers import GitWrapper
18
+ from continuous_delivery_scripts.utils.third_party_licences import normalise_proprietary_licence
18
19
 
19
20
  if TYPE_CHECKING:
20
21
  from continuous_delivery_scripts.spdx_report.spdx_project import SpdxProject
@@ -35,7 +36,9 @@ SPDX-License-Identifier: {licence_identifier}
35
36
  def _generate_generic_licence_header_template() -> str:
36
37
  """Generates the header template which is put at the top of source files."""
37
38
  return GENERIC_LICENCE_HEADER_TEMPLATE.format(
38
- licence_identifier=configuration.get_value(ConfigurationVariable.FILE_LICENCE_IDENTIFIER),
39
+ licence_identifier=normalise_proprietary_licence(
40
+ str(configuration.get_value(ConfigurationVariable.FILE_LICENCE_IDENTIFIER))
41
+ ),
39
42
  author="${owner}",
40
43
  date="${years}",
41
44
  )
@@ -48,6 +48,16 @@ UNKNOWN_LICENCE = Licence(
48
48
  url="Unknown",
49
49
  reference="Unknown",
50
50
  )
51
+ LICENSE_REF_PROPRIETARY = "LicenseRef-Proprietary"
52
+ PROPRIETARY_LICENCE = Licence(
53
+ reference_number="",
54
+ identifier=LICENSE_REF_PROPRIETARY,
55
+ name="Proprietary licence",
56
+ is_deprecated=False,
57
+ is_osi_approved=False,
58
+ url="",
59
+ reference="",
60
+ )
51
61
 
52
62
  LICENCE_LIKELIHOOD_THRESHOLD = 0.5
53
63
 
@@ -260,6 +270,10 @@ class OpenSourceLicences:
260
270
 
261
271
  def get_licence(self, licence_descriptor: Optional[str]) -> Optional[Licence]:
262
272
  """Determines the licence based on a string descriptor e.g. Apache 2."""
273
+ if licence_descriptor and normalise_proprietary_licence(licence_descriptor) == LICENSE_REF_PROPRIETARY:
274
+ return PROPRIETARY_LICENCE
275
+ if licence_descriptor and licence_descriptor.lower().startswith("licenseref-"):
276
+ return None
263
277
  self.load()
264
278
  if not self._licence_store or not self._licence_list or not licence_descriptor:
265
279
  return None
@@ -286,14 +300,28 @@ class OpenSourceLicences:
286
300
  OPENSOURCE_LICENCES = OpenSourceLicences()
287
301
 
288
302
 
303
+ def normalise_proprietary_licence(licence_expression: str) -> str:
304
+ """Use a stable SPDX licence reference for proprietary declarations."""
305
+ return re.sub(
306
+ r"(?<![\w-])(?:LicenseRef-)?Proprietary(?:\s+Licen[cs]e)?(?![\w-])",
307
+ LICENSE_REF_PROPRIETARY,
308
+ licence_expression,
309
+ flags=re.IGNORECASE,
310
+ )
311
+
312
+
289
313
  def cleanse_licence_expression(licence_expression: str) -> str:
290
314
  """Cleanses a licence expression by using SPDX identifiers when possible.
291
315
 
292
316
  A licence expression can be a combination of licences and in a lot of cases is free-form text.
293
317
  The idea is to return an equivalent expression but using SPDX identifiers when possible.
294
318
  """
295
- simplified_expression = _parse_licence_expression(Licensing(), licence_expression).simplify()
319
+ simplified_expression = _parse_licence_expression(
320
+ Licensing(), normalise_proprietary_licence(licence_expression)
321
+ ).simplify()
296
322
  for s in simplified_expression.symbols:
323
+ if s.key.startswith("LicenseRef-"):
324
+ continue
297
325
  corresponding_licence = OPENSOURCE_LICENCES.get_licence(s.key)
298
326
  if corresponding_licence:
299
327
  s.key = corresponding_licence.identifier
@@ -301,6 +329,9 @@ def cleanse_licence_expression(licence_expression: str) -> str:
301
329
 
302
330
 
303
331
  def _iter_matching_licences(desc: str) -> Iterable[Licence]:
332
+ if normalise_proprietary_licence(desc.strip()) == LICENSE_REF_PROPRIETARY:
333
+ yield PROPRIETARY_LICENCE
334
+ return
304
335
  licence = OPENSOURCE_LICENCES.get_licence(desc)
305
336
  if licence:
306
337
  yield licence
@@ -342,7 +373,7 @@ def get_allowed_opensource_licences() -> Iterable[Licence]:
342
373
 
343
374
  def simplify_licence_expression(licence_expression: str) -> str:
344
375
  """Simplifies a licence expression."""
345
- return str(_parse_licence_expression(Licensing(), licence_expression).simplify())
376
+ return str(_parse_licence_expression(Licensing(), normalise_proprietary_licence(licence_expression)).simplify())
346
377
 
347
378
 
348
379
  def determine_licence_compound(main_licence: str, additional_licences: List[str]) -> str:
@@ -374,9 +405,10 @@ def _is_expression_or(licence_expression: str) -> bool:
374
405
  return isinstance(_parse_licence_expression(licensing_util, licence_expression), OR)
375
406
 
376
407
 
377
- def is_licence_accepted(licence_expression: str) -> bool:
408
+ def is_licence_accepted(licence_expression: str, additional_identifiers: Iterable[str] = ()) -> bool:
378
409
  """Determines whether the licence expressed is valid with regards to project's accepted licences."""
379
410
  authorised_licences = [licence.identifier for licence in get_allowed_opensource_licences()]
411
+ authorised_licences.extend(additional_identifiers)
380
412
  is_or = _is_expression_or(licence_expression)
381
413
  if bool([licence for licence in determine_licences_not_in_list(licence_expression, iter(authorised_licences))]):
382
414
  return (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continuous-delivery-scripts
3
- Version: 4.2.0
3
+ Version: 4.3.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`); create the directory first | CI audit; developer review also possible |
250
- | `cd-license-files` | Adds or updates source-file licence and copyright headers when the language plugin supports them. | `--verbose` (`-v`) | Developer or CI |
251
- | `cd-record-secrets` | 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) |
252
- | `cd-detect-secrets` | 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 |
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`); create the directory first | 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 | 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
@@ -7,6 +7,7 @@ setup.py
7
7
  continuous_delivery_scripts/__init__.py
8
8
  continuous_delivery_scripts/_version.py
9
9
  continuous_delivery_scripts/assert_news.py
10
+ continuous_delivery_scripts/check_licence_compliance.py
10
11
  continuous_delivery_scripts/create_news_file.py
11
12
  continuous_delivery_scripts/detect_secrets.py
12
13
  continuous_delivery_scripts/generate_docs.py
@@ -1,5 +1,6 @@
1
1
  [console_scripts]
2
2
  cd-assert-news = continuous_delivery_scripts.assert_news:main
3
+ cd-check-licence-compliance = continuous_delivery_scripts.check_licence_compliance:main
3
4
  cd-create-news-file = continuous_delivery_scripts.create_news_file:main
4
5
  cd-detect-secrets = continuous_delivery_scripts.detect_secrets:main
5
6
  cd-determine-version = continuous_delivery_scripts.get_version:main
@@ -50,6 +50,7 @@ setup(
50
50
  f"cd-get-config={SOURCE_DIR}.get_config:main",
51
51
  f"cd-license-files={SOURCE_DIR}.license_files:main",
52
52
  f"cd-generate-spdx={SOURCE_DIR}.report_third_party_ip:main",
53
+ f"cd-check-licence-compliance={SOURCE_DIR}.check_licence_compliance:main",
53
54
  f"cd-detect-secrets={SOURCE_DIR}.detect_secrets:main",
54
55
  f"cd-record-secrets={SOURCE_DIR}.update_secrets_registry:main",
55
56
  ]
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (Sebastian Thiel <byronimo@gmail.com>, Michael Trier <mtrier@gmail.com>)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (unknown)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (unknown)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (Mike Bayer <mike@zzzcomputing.com>)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Person: Manfred Stienstra, Yuri Takhteyev (Waylan limberg <python.markdown@gmail.com>)
14
14
  Creator: Tool: mbed-spdx-generator
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (unknown)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Person: Kirill Simonov (xi@resolvent.net)
14
14
  Creator: Tool: mbed-spdx-generator
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (Georg Brandl <georg@python.org>)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (Dmitry Shachnev <mitya57@gmail.com>)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Person: Sebastian Kraemer (basti.kr@gmail.com)
14
14
  Creator: Tool: mbed-spdx-generator
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
@@ -2,9 +2,9 @@
2
2
 
3
3
  SPDXVersion: SPDX-1.2
4
4
  DataLicense: CC0-1.0
5
- DocumentName: boto3-1.43.105
5
+ DocumentName: boto3-1.43.106
6
6
  SPDXID: SPDXRef-DOCUMENT
7
- DocumentNamespace: http://spdx.org/spdxdocs/boto3-1.43.105-9e62df54-ada2-02ee-46b0-a1cf91e75f66
7
+ DocumentNamespace: http://spdx.org/spdxdocs/boto3-1.43.106-5312fb83-fdd6-b8dc-38af-244f66958ad3
8
8
  DocumentComment: <text>This document was created automatically using available project and dependency information.</text>
9
9
 
10
10
 
@@ -12,14 +12,14 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Person: Amazon Web Services (unknown)
14
14
  Creator: Tool: mbed-spdx-generator
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
19
19
 
20
20
  PackageName: boto3
21
21
  SPDXID: SPDXRef-boto3
22
- PackageVersion: 1.43.105
22
+ PackageVersion: 1.43.106
23
23
  PackageDownloadLocation: NONE
24
24
  PackageSummary: <text>The AWS SDK for Python (Boto3)</text>
25
25
  PackageFileName: boto3
@@ -2,9 +2,9 @@
2
2
 
3
3
  SPDXVersion: SPDX-1.2
4
4
  DataLicense: CC0-1.0
5
- DocumentName: botocore-1.43.105
5
+ DocumentName: botocore-1.43.106
6
6
  SPDXID: SPDXRef-DOCUMENT
7
- DocumentNamespace: http://spdx.org/spdxdocs/botocore-1.43.105-13165313-08f7-4942-d4c5-bc78feb4011a
7
+ DocumentNamespace: http://spdx.org/spdxdocs/botocore-1.43.106-10e147fd-3ba0-1292-77d7-1e630c192997
8
8
  DocumentComment: <text>This document was created automatically using available project and dependency information.</text>
9
9
 
10
10
 
@@ -12,14 +12,14 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Person: Amazon Web Services (unknown)
14
14
  Creator: Tool: mbed-spdx-generator
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package
19
19
 
20
20
  PackageName: botocore
21
21
  SPDXID: SPDXRef-botocore
22
- PackageVersion: 1.43.105
22
+ PackageVersion: 1.43.106
23
23
  PackageDownloadLocation: NONE
24
24
  PackageSummary: <text>Low-level, data-driven core of boto 3.</text>
25
25
  PackageFileName: botocore
@@ -12,7 +12,7 @@ DocumentComment: <text>This document was created automatically using available p
12
12
 
13
13
  Creator: Tool: mbed-spdx-generator
14
14
  Creator: Person: unknown (Isaac Muse <Isaac.Muse@gmail.com>)
15
- Created: 2026-09-30T16:35:08Z
15
+ Created: 2026-10-01T09:28:53Z
16
16
 
17
17
 
18
18
  # Package