Skip to content

Commit b72d7b0

Browse files
refactor: replace args usage with ScanConfig in sbomgen invocation
- Replace args.sbomgen_version with config.sbomgen_version in logging - Replace args.timeout with str(config.timeout) for command line argument - Replace string-based scanner logic with type-safe list operations: - args.scanners != "''" → config.scanners (truthy list check) - args.skip_scanners != "''" → config.skip_scanners (truthy list check) - args.skip_files != "''" → config.skip_files (truthy list check) - Convert lists back to comma-separated strings for sbomgen command - Add comprehensive test coverage for field access patterns Benefits: - Eliminates error-prone string comparisons with "''" - Uses proper list operations instead of string parsing - Type-safe field access with explicit data conversion - Cleaner, more readable conditional logic Continues strangler fig migration - old and new code coexist safely while gradually improving code quality and maintainability.
1 parent 4312258 commit b72d7b0

File tree

2 files changed

+34
-11
lines changed

2 files changed

+34
-11
lines changed

entrypoint/entrypoint/orchestrator.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def execute(args) -> int:
1919
logging.info(f"Created config: artifact_type={config.artifact_type.value}, artifact_path={config.artifact_path}")
2020

2121
# OLD: Keep existing logic unchanged for now
22-
logging.info(f"downloading and installing inspector-sbomgen version {args.sbomgen_version}")
22+
logging.info(f"downloading and installing inspector-sbomgen version {config.sbomgen_version}")
2323
ret = install_sbomgen(args)
2424
require_true((ret == 0), "unable to download and install inspector-sbomgen")
2525

@@ -186,23 +186,26 @@ def invoke_sbomgen(args) -> int:
186186
path_arg, args.artifact_path,
187187
"--outfile", args.out_sbom,
188188
"--disable-progress-bar",
189-
"--timeout", args.timeout,
189+
"--timeout", str(config.timeout),
190190
]
191-
if args.scanners != "''":
192-
logging.info(f"setting --scanners: {args.scanners}")
191+
if config.scanners:
192+
scanners_str = ",".join(config.scanners)
193+
logging.info(f"setting --scanners: {scanners_str}")
193194
sbomgen_args.append("--scanners")
194-
sbomgen_args.append(args.scanners)
195-
elif args.skip_scanners != "''":
196-
logging.info(f"setting --skip-scanners: {args.skip_scanners}")
195+
sbomgen_args.append(scanners_str)
196+
elif config.skip_scanners:
197+
skip_scanners_str = ",".join(config.skip_scanners)
198+
logging.info(f"setting --skip-scanners: {skip_scanners_str}")
197199
sbomgen_args.append("--skip-scanners")
198-
sbomgen_args.append(args.skip_scanners)
200+
sbomgen_args.append(skip_scanners_str)
199201
else:
200202
pass
201203

202-
if args.skip_files != "''":
203-
logging.info(f"setting --skip-files: {args.skip_files}")
204+
if config.skip_files:
205+
skip_files_str = ",".join(config.skip_files)
206+
logging.info(f"setting --skip-files: {skip_files_str}")
204207
sbomgen_args.append("--skip-files")
205-
sbomgen_args.append(args.skip_files)
208+
sbomgen_args.append(skip_files_str)
206209

207210
if config.artifact_type == ArtifactType.CONTAINER:
208211

entrypoint/tests/test_data_model.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,3 +158,23 @@ def test_scan_config_from_args_converts_skip_scanners(self):
158158
mock_args = MockArgs()
159159
config = ScanConfig.from_args(mock_args)
160160
self.assertEqual(config.skip_scanners, ["binaries", "alpine-apk"])
161+
162+
def test_scan_config_sbomgen_version_access(self):
163+
config = ScanConfig(sbomgen_version="1.8.0")
164+
self.assertEqual(config.sbomgen_version, "1.8.0")
165+
166+
def test_scan_config_timeout_access(self):
167+
config = ScanConfig(timeout=300)
168+
self.assertEqual(config.timeout, 300)
169+
170+
def test_scan_config_scanners_list_access(self):
171+
config = ScanConfig(scanners=["dpkg", "npm"])
172+
self.assertEqual(config.scanners, ["dpkg", "npm"])
173+
174+
def test_scan_config_skip_scanners_list_access(self):
175+
config = ScanConfig(skip_scanners=["binaries", "alpine-apk"])
176+
self.assertEqual(config.skip_scanners, ["binaries", "alpine-apk"])
177+
178+
def test_scan_config_skip_files_list_access(self):
179+
config = ScanConfig(skip_files=["./media", "/tmp/foo"])
180+
self.assertEqual(config.skip_files, ["./media", "/tmp/foo"])

0 commit comments

Comments
 (0)