Module continuous_delivery_scripts.check_licence_compliance
Check project and dependency licences without generating SPDX documents.
Functions
def main() ‑> int-
Expand source code
def main() -> int: """Check licence compliance and optionally write third-party IP summaries.""" parser = argparse.ArgumentParser(description="Check project and dependency licence compliance.") parser.add_argument( "-o", "--output-dir", type=Path, help="Write third-party IP summaries to this existing directory (no SPDX documents).", ) parser.add_argument( "--lookup-scancode", action="store_true", help="Consult ScanCode LicenseDB for unclassified licences or missing assessment rules.", ) parser.add_argument( "--skip-dependency-download", action="store_true", help="Skip automatic dependency downloads before licence checks and SPDX dependency analysis.", ) parser.add_argument("-v", "--verbose", action="count", default=0, help="Increase logging verbosity.") args = parser.parse_args() set_log_level(args.verbose) try: plugin = get_language_specifics() if not plugin.can_get_project_metadata(): raise ValueError("The selected language plugin cannot provide metadata for licence compliance checks.") project = plugin.get_current_spdx_project(skip_dependency_download=args.skip_dependency_download) if project is None: raise ValueError("The selected language plugin did not return a project for licence compliance checks.") if args.lookup_scancode: project.enable_scancode_lookup() if args.output_dir is not None: project.generate_licensing_summary(args.output_dir) _print_policy_summary(project) _log_assessment_details(project) if args.lookup_scancode: for name, result in project.licence_assessments.items(): for info in result.scancode_licences: print(f"{name}: ScanCode LicenseDB: {info.identifier} ({info.category}): {info.url}") if args.lookup_scancode: for warning in project.scancode_follow_up_warnings(): print(f"WARNING: {warning}", file=sys.stderr) return 0 except Exception as error: log_exception(logger, error) return 1Check licence compliance and optionally write third-party IP summaries.