diff --git a/src/ros_license_toolkit/checks.py b/src/ros_license_toolkit/checks.py index 7c486ee..1c542e9 100644 --- a/src/ros_license_toolkit/checks.py +++ b/src/ros_license_toolkit/checks.py @@ -18,7 +18,6 @@ from enum import IntEnum -from ros_license_toolkit.license_tag import is_license_name_in_spdx_list from ros_license_toolkit.package import Package, PackageException from ros_license_toolkit.ui_elements import NO_REASON_STR, green, red, yellow @@ -105,34 +104,3 @@ def check(self, package: Package): def _check(self, package: Package): """Check `package`. To be overwritten by subclasses.""" raise NotImplementedError("Overwrite this") - - -class LicenseTagExistsCheck(Check): - """This ensures that a tag defining the license exists.""" - - def _check(self, package: Package): - if len(package.license_tags) == 0: - self._failed("No license tag defined.") - self.verbose_output = red(str(package.package_xml)) - else: - self._success( - f"Found licenses {list(map(str, package.license_tags))}") - - -class LicenseTagIsInSpdxListCheck(Check): - """This ensures that the license tag is in the SPDX list of licenses.""" - - def _check(self, package: Package): - licenses_not_in_spdx_list = [] - for license_tag in package.license_tags.keys(): - if not is_license_name_in_spdx_list( - license_tag): - licenses_not_in_spdx_list.append(license_tag) - if len(licenses_not_in_spdx_list) > 0: - self._warning( - f"Licenses {licenses_not_in_spdx_list} are " - "not in SPDX list of licenses. " - "Make sure to exactly match one of https://spdx.org/licenses/." - ) - else: - self._success("All license tags are in SPDX list of licenses.") diff --git a/src/ros_license_toolkit/license_checks/license_tag_exists_check.py b/src/ros_license_toolkit/license_checks/license_tag_exists_check.py new file mode 100644 index 0000000..75628af --- /dev/null +++ b/src/ros_license_toolkit/license_checks/license_tag_exists_check.py @@ -0,0 +1,33 @@ +# Copyright (c) 2024 - for information on the respective copyright owner +# see the NOTICE file and/or the repository +# https://github.com/boschresearch/ros_license_toolkit + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This Module contains LicenseTagExistsCheck, which implements Check.""" + +from ros_license_toolkit.checks import Check +from ros_license_toolkit.package import Package +from ros_license_toolkit.ui_elements import red + + +class LicenseTagExistsCheck(Check): + """This ensures that a tag defining the license exists.""" + + def _check(self, package: Package): + if len(package.license_tags) == 0: + self._failed("No license tag defined.") + self.verbose_output = red(str(package.package_xml)) + else: + self._success( + f"Found licenses {list(map(str, package.license_tags))}") diff --git a/src/ros_license_toolkit/license_checks/license_tag_is_spdx.py b/src/ros_license_toolkit/license_checks/license_tag_is_spdx.py new file mode 100644 index 0000000..fc9a8fa --- /dev/null +++ b/src/ros_license_toolkit/license_checks/license_tag_is_spdx.py @@ -0,0 +1,40 @@ +# Copyright (c) 2024 - for information on the respective copyright owner +# see the NOTICE file and/or the repository +# https://github.com/boschresearch/ros_license_toolkit + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""This Module contains LicenseTagIsInSpdxListCheck, which implements Check.""" + +from ros_license_toolkit.checks import Check +from ros_license_toolkit.license_tag import is_license_name_in_spdx_list +from ros_license_toolkit.package import Package + + +class LicenseTagIsInSpdxListCheck(Check): + """This ensures that the license tag is in the SPDX list of licenses.""" + + def _check(self, package: Package): + licenses_not_in_spdx_list = [] + for license_tag in package.license_tags.keys(): + if not is_license_name_in_spdx_list( + license_tag): + licenses_not_in_spdx_list.append(license_tag) + if len(licenses_not_in_spdx_list) > 0: + self._warning( + f"Licenses {licenses_not_in_spdx_list} are " + "not in SPDX list of licenses. " + "Make sure to exactly match one of https://spdx.org/licenses/." + ) + else: + self._success("All license tags are in SPDX list of licenses.") diff --git a/src/ros_license_toolkit/main.py b/src/ros_license_toolkit/main.py index b3a9b41..be53be5 100644 --- a/src/ros_license_toolkit/main.py +++ b/src/ros_license_toolkit/main.py @@ -24,12 +24,16 @@ import timeit from typing import Optional, Sequence -from ros_license_toolkit.checks import (LicenseTagExistsCheck, - LicenseTagIsInSpdxListCheck, Status) -from ros_license_toolkit.license_file_referenced_check import \ +from ros_license_toolkit.checks import Status +from ros_license_toolkit.license_checks.license_file_referenced_check import \ LicenseFilesReferencedCheck -from ros_license_toolkit.license_in_code_check import LicensesInCodeCheck -from ros_license_toolkit.license_text_exists_check import \ +from ros_license_toolkit.license_checks.license_in_code_check import \ + LicensesInCodeCheck +from ros_license_toolkit.license_checks.license_tag_exists_check import \ + LicenseTagExistsCheck +from ros_license_toolkit.license_checks.license_tag_is_spdx import \ + LicenseTagIsInSpdxListCheck +from ros_license_toolkit.license_checks.license_text_exists_check import \ LicenseTextExistsCheck from ros_license_toolkit.package import get_packages_in_path from ros_license_toolkit.ui_elements import (FAILURE_STR, SUCCESS_STR,