diff --git a/CHANGELOG.rst b/CHANGELOG.rst index ab830ee..373cf64 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,11 @@ Changelog ========= +v3.1.0 +------ + +*2024-03-14* -- Create ``FingerprintPackage`` addon pipeline for scancode.io + v3.0.0 ------ diff --git a/setup.cfg b/setup.cfg index a29fd68..98c97ce 100644 --- a/setup.cfg +++ b/setup.cfg @@ -77,3 +77,6 @@ docs = [options.entry_points] scancode_post_scan = fingerprint = matchcode_toolkit.plugin_fingerprint:Fingerprint + +scancodeio_pipelines = + fingerprint_package = matchcode_toolkit.pipelines.fingerprint_package:FingerprintPackage diff --git a/src/matchcode_toolkit/pipelines/fingerprint_package.py b/src/matchcode_toolkit/pipelines/fingerprint_package.py new file mode 100644 index 0000000..f714abf --- /dev/null +++ b/src/matchcode_toolkit/pipelines/fingerprint_package.py @@ -0,0 +1,43 @@ +# SPDX-License-Identifier: Apache-2.0 +# +# http://nexb.com and https://github.com/nexB/scancode.io +# The ScanCode.io software is licensed under the Apache License version 2.0. +# Data generated with ScanCode.io is provided as-is without warranties. +# ScanCode is a trademark of nexB Inc. +# +# You may not use this software except in compliance with the License. +# You may obtain a copy of the License at: http://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. +# +# Data Generated with ScanCode.io is provided on an "AS IS" BASIS, WITHOUT WARRANTIES +# OR CONDITIONS OF ANY KIND, either express or implied. No content created from +# ScanCode.io should be considered or used as legal advice. Consult an Attorney +# for any legal advice. +# +# ScanCode.io is a free software code scanning tool from nexB Inc. and others. +# Visit https://github.com/nexB/scancode.io for support and download. + +from scanpipe.pipelines import Pipeline +from scanpipe.pipes import matchcode + + +class FingerprintPackage(Pipeline): + """ + Calculate the directory fingerprints of a Project codebase + """ + + download_inputs = False + is_addon = True + + @classmethod + def steps(cls): + return (cls.fingerprint_codebase,) + + def fingerprint_codebase(self): + """ + Compute directory fingerprints for matching purposes + """ + matchcode.fingerprint_codebase_directories(self.project)