capycli 2.8.1__tar.gz → 2.9.0.dev1__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 (79) hide show
  1. {capycli-2.8.1 → capycli-2.9.0.dev1}/PKG-INFO +1 -1
  2. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/__init__.py +6 -0
  3. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/bom_convert.py +1 -1
  4. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/bom_validate.py +1 -1
  5. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/check_bom.py +1 -1
  6. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/check_bom_item_status.py +1 -1
  7. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/check_granularity.py +1 -1
  8. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/create_components.py +11 -2
  9. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/diff_bom.py +1 -1
  10. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/download_sources.py +1 -1
  11. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/filter_bom.py +1 -1
  12. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/findsources.py +1 -1
  13. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/map_bom.py +1 -1
  14. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/merge_bom.py +1 -1
  15. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/show_bom.py +1 -1
  16. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/dependencies/javascript.py +1 -1
  17. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/dependencies/maven_list.py +1 -1
  18. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/dependencies/maven_pom.py +1 -1
  19. capycli-2.9.0.dev1/capycli/dependencies/nuget.py +714 -0
  20. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/dependencies/python.py +1 -1
  21. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/options.py +1 -1
  22. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/mapping/mapping_to_html.py +1 -1
  23. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/mapping/mapping_to_xlsx.py +1 -1
  24. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/moverview/moverview_to_html.py +1 -1
  25. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/moverview/moverview_to_xlsx.py +1 -1
  26. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/check_prerequisites.py +1 -1
  27. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/create_bom.py +1 -1
  28. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/create_project.py +16 -1
  29. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/create_readme.py +1 -1
  30. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/find_project.py +1 -1
  31. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/get_license_info.py +1 -1
  32. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/show_ecc.py +1 -1
  33. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/show_licenses.py +1 -1
  34. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/show_project.py +1 -1
  35. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/show_vulnerabilities.py +1 -1
  36. {capycli-2.8.1 → capycli-2.9.0.dev1}/pyproject.toml +1 -1
  37. capycli-2.8.1/capycli/dependencies/nuget.py +0 -185
  38. {capycli-2.8.1 → capycli-2.9.0.dev1}/LICENSES/CC0-1.0.txt +0 -0
  39. {capycli-2.8.1 → capycli-2.9.0.dev1}/LICENSES/MIT.txt +0 -0
  40. {capycli-2.8.1 → capycli-2.9.0.dev1}/License.md +0 -0
  41. {capycli-2.8.1 → capycli-2.9.0.dev1}/Readme.md +0 -0
  42. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/__main__.py +0 -0
  43. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/__init__.py +0 -0
  44. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/csv.py +0 -0
  45. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/handle_bom.py +0 -0
  46. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/html.py +0 -0
  47. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/legacy.py +0 -0
  48. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/legacy_cx.py +0 -0
  49. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/bom/plaintext.py +0 -0
  50. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/__init__.py +0 -0
  51. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/capycli_bom_support.py +0 -0
  52. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/comparable_version.py +0 -0
  53. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/component_cache.py +0 -0
  54. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/dependencies_base.py +0 -0
  55. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/file_support.py +0 -0
  56. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/github_support.py +0 -0
  57. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/html_support.py +0 -0
  58. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/json_support.py +0 -0
  59. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/map_result.py +0 -0
  60. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/print.py +0 -0
  61. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/purl_service.py +0 -0
  62. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/purl_store.py +0 -0
  63. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/purl_utils.py +0 -0
  64. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/script_base.py +0 -0
  65. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/common/script_support.py +0 -0
  66. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/data/__init__.py +0 -0
  67. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/data/granularity_list.csv +0 -0
  68. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/dependencies/__init__.py +0 -0
  69. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/dependencies/handle_dependencies.py +0 -0
  70. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/__init__.py +0 -0
  71. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/application.py +0 -0
  72. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/argument_parser.py +0 -0
  73. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/cli.py +0 -0
  74. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/exceptions.py +0 -0
  75. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/main/result_codes.py +0 -0
  76. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/mapping/handle_mapping.py +0 -0
  77. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/moverview/handle_moverview.py +0 -0
  78. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/__init__.py +0 -0
  79. {capycli-2.8.1 → capycli-2.9.0.dev1}/capycli/project/handle_project.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: capycli
3
- Version: 2.8.1
3
+ Version: 2.9.0.dev1
4
4
  Summary: CaPyCli - Clearing Automation Python Command Line Interface for SW360
5
5
  Home-page: https://github.com/sw360/capycli
6
6
  License: MIT
@@ -63,6 +63,12 @@ def get_app_version() -> str:
63
63
  return version
64
64
 
65
65
 
66
+ def get_app_signature() -> str:
67
+ """Get the signature of this application."""
68
+ version = get_app_version()
69
+ return f"{APP_NAME}, {version}"
70
+
71
+
66
72
  # There is nothing lower than logging.DEBUG (10) in the logging library,
67
73
  # but we want an extra level to avoid being too verbose when using -vv.
68
74
  _EXTRA_VERBOSE = 5
@@ -163,7 +163,7 @@ class BomConvert(capycli.common.script_base.ScriptBase):
163
163
 
164
164
  def run(self, args: Any) -> None:
165
165
  """Main method()"""
166
- print("\n" + capycli.APP_NAME + ", " + capycli.get_app_version() + " - Convert SBOM formats\n")
166
+ print("\n" + capycli.get_app_signature() + " - Convert SBOM formats\n")
167
167
 
168
168
  if args.help:
169
169
  self.display_help()
@@ -61,7 +61,7 @@ class BomValidate(capycli.common.script_base.ScriptBase):
61
61
 
62
62
  def run(self, args: Any) -> None:
63
63
  """Main method()"""
64
- print("\n" + capycli.APP_NAME + ", " + capycli.get_app_version() + " - Validate a CaPyCLI/CycloneDX SBOM\n")
64
+ print("\n" + capycli.get_app_signature() + " - Validate a CaPyCLI/CycloneDX SBOM\n")
65
65
 
66
66
  if args.help:
67
67
  self.display_help()
@@ -158,7 +158,7 @@ class CheckBom(capycli.common.script_base.ScriptBase):
158
158
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
159
159
 
160
160
  print_text(
161
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
161
+ "\n" + capycli.get_app_signature() +
162
162
  " - Check that all releases in the SBOM exist on target SW360 instance.\n")
163
163
 
164
164
  if args.help:
@@ -176,7 +176,7 @@ class CheckBomItemStatus(capycli.common.script_base.ScriptBase):
176
176
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
177
177
 
178
178
  print_text(
179
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version()
179
+ "\n" + capycli.get_app_signature()
180
180
  + " - check the status of the items on SW360\n")
181
181
 
182
182
  if args.help:
@@ -224,7 +224,7 @@ class CheckGranularity(capycli.common.script_base.ScriptBase):
224
224
  LOG = capycli.get_logger(__name__)
225
225
 
226
226
  print_text(
227
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
227
+ "\n" + capycli.get_app_signature() +
228
228
  " - Check the granularity of all releases in the SBOM.\n")
229
229
 
230
230
  if args.help:
@@ -1,5 +1,5 @@
1
1
  # -------------------------------------------------------------------------------
2
- # Copyright (c) 2019-2024 Siemens
2
+ # Copyright (c) 2019-2025 Siemens
3
3
  # All Rights Reserved.
4
4
  # Author: thomas.graf@siemens.com
5
5
  #
@@ -259,6 +259,10 @@ class BomCreateComponents(capycli.common.script_base.ScriptBase):
259
259
  # ensure that we have the only correct external-id name: package-url
260
260
  data["externalIds"]["package-url"] = cx_comp.purl.to_string()
261
261
 
262
+ # add information that this release was created by CaPyCli
263
+ data["additionalData"] = {}
264
+ data["additionalData"]["createdWith"] = capycli.get_app_signature()
265
+
262
266
  # use project site as fallback for source code download url
263
267
  website = CycloneDxSupport.get_ext_ref_website(cx_comp)
264
268
  repo = CycloneDxSupport.get_ext_ref_repository(cx_comp)
@@ -318,6 +322,11 @@ class BomCreateComponents(capycli.common.script_base.ScriptBase):
318
322
  if cx_comp.purl:
319
323
  purl = PurlUtils.component_purl_from_release_purl(cx_comp.purl)
320
324
  data["externalIds"] = {"package-url": purl}
325
+
326
+ # add information that this component was created by CaPyCli
327
+ data["additionalData"] = {}
328
+ data["additionalData"]["createdWith"] = capycli.get_app_signature()
329
+
321
330
  return data
322
331
 
323
332
  def create_release(self, cx_comp: Component, component_id: str) -> Optional[Dict[str, Any]]:
@@ -733,7 +742,7 @@ class BomCreateComponents(capycli.common.script_base.ScriptBase):
733
742
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
734
743
 
735
744
  print_text(
736
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
745
+ "\n" + capycli.get_app_signature() +
737
746
  " - Create new components and releases on SW360\n")
738
747
 
739
748
  if args.help:
@@ -202,7 +202,7 @@ class DiffBom(capycli.common.script_base.ScriptBase):
202
202
  LOG = capycli.get_logger(__name__)
203
203
 
204
204
  print_text(
205
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
205
+ "\n" + capycli.get_app_signature() +
206
206
  " - Compare two SBOM files.\n")
207
207
 
208
208
  if args.help:
@@ -158,7 +158,7 @@ class BomDownloadSources(capycli.common.script_base.ScriptBase):
158
158
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
159
159
 
160
160
  print_text(
161
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
161
+ "\n" + capycli.get_app_signature() +
162
162
  " - Download source files from the URL specified in the SBOM\n")
163
163
 
164
164
  if args.help:
@@ -271,7 +271,7 @@ class FilterBom(capycli.common.script_base.ScriptBase):
271
271
  global LOG
272
272
  LOG = capycli.get_logger(__name__)
273
273
 
274
- print_text("\n" + capycli.APP_NAME + ", " + capycli.get_app_version() + " - Apply a filter file to a SBOM\n")
274
+ print_text("\n" + capycli.get_app_signature() + " - Apply a filter file to a SBOM\n")
275
275
 
276
276
  if args.help:
277
277
  print("Usage: CaPyCli bom filter [-h] [-v] -i INPUTFILE -o OUTPUTFILE -filterfile FILTERFILE")
@@ -694,7 +694,7 @@ class FindSources(capycli.common.script_base.ScriptBase):
694
694
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
695
695
 
696
696
  print_text(
697
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
697
+ "\n" + capycli.get_app_signature() +
698
698
  " - Go through the list of SBOM items and try to determine the source code.\n")
699
699
 
700
700
  if args.help:
@@ -832,7 +832,7 @@ class MapBom(capycli.common.script_base.ScriptBase):
832
832
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
833
833
 
834
834
  print_text(
835
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
835
+ "\n" + capycli.get_app_signature() +
836
836
  " - Map a given SBOM to data on SW360\n")
837
837
 
838
838
  if args.help:
@@ -122,7 +122,7 @@ class MergeBom(capycli.common.script_base.ScriptBase):
122
122
  LOG = capycli.get_logger(__name__)
123
123
 
124
124
  print_text(
125
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
125
+ "\n" + capycli.get_app_signature() +
126
126
  " - Merge two SBOM files.\n")
127
127
 
128
128
  if args.help:
@@ -98,7 +98,7 @@ class ShowBom(capycli.common.script_base.ScriptBase):
98
98
  global LOG
99
99
  LOG = capycli.get_logger(__name__)
100
100
 
101
- print_text("\n" + capycli.APP_NAME + ", " + capycli.get_app_version() + " - Print SBOM contents to stdout\n")
101
+ print_text("\n" + capycli.get_app_signature() + " - Print SBOM contents to stdout\n")
102
102
 
103
103
  if args.help:
104
104
  print("usage: capycli bom show [-h] -i bomfile")
@@ -279,7 +279,7 @@ class GetJavascriptDependencies(capycli.common.dependencies_base.DependenciesBas
279
279
  logging.getLogger("urllib3.connectionpool").setLevel(logging.WARNING)
280
280
 
281
281
  print_text(
282
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
282
+ "\n" + capycli.get_app_signature() +
283
283
  " - Determine Javascript components/dependencies\n")
284
284
 
285
285
  if args.help:
@@ -310,7 +310,7 @@ class GetJavaMavenTreeDependencies(capycli.common.dependencies_base.Dependencies
310
310
  LOG = capycli.get_logger(__name__)
311
311
 
312
312
  print_text(
313
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
313
+ "\n" + capycli.get_app_signature() +
314
314
  " - Determine Java components/dependencies\n")
315
315
 
316
316
  if args.help:
@@ -117,7 +117,7 @@ class GetJavaMavenPomDependencies(capycli.common.script_base.ScriptBase):
117
117
  LOG = capycli.get_logger(__name__)
118
118
 
119
119
  print_text(
120
- "\n" + capycli.APP_NAME + ", " + capycli.get_app_version() +
120
+ "\n" + capycli.get_app_signature() +
121
121
  " - Determine Java components/dependencies\n")
122
122
 
123
123
  if args.help: