diff --git a/aboutcode/federatedcode/cli.py b/aboutcode/federatedcode/cli.py new file mode 100644 index 0000000..b472b87 --- /dev/null +++ b/aboutcode/federatedcode/cli.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +# +# Copyright (c) nexB Inc. and others. All rights reserved. +# FederatedCode is a trademark of nexB Inc. +# SPDX-License-Identifier: Apache-2.0 +# See http://www.apache.org/licenses/LICENSE-2.0 for the license text. +# See https://github.com/nexB/federatedcode for support or download. +# See https://aboutcode.org for more information about AboutCode.org OSS projects. +# + +import click + +from aboutcode.federatedcode.client import get_package_scan + + +@click.command() +@click.argument("purl") +def handler(purl): + """ + Get package scan for PURL from FederatedCode git repository. + + PURL: PURL to fetch scan result + """ + click.echo(get_package_scan(purl=purl)) + + +if __name__ == "__main__": + handler() diff --git a/aboutcode/federatedcode/client/__init__.py b/aboutcode/federatedcode/client/__init__.py index 0e97de7..3021ab4 100644 --- a/aboutcode/federatedcode/client/__init__.py +++ b/aboutcode/federatedcode/client/__init__.py @@ -18,7 +18,10 @@ load_dotenv() -FEDERATEDCODE_GITHUB_ACCOUNT_NAME = os.getenv("FEDERATEDCODE_GITHUB_ACCOUNT_NAME") +FEDERATEDCODE_GIT_RAW_URL = os.getenv( + "FEDERATEDCODE_GIT_RAW_URL", + "https://raw.githubusercontent.com/aboutcode-org/", +) class ScanNotAvailableError(Exception): @@ -28,8 +31,8 @@ class ScanNotAvailableError(Exception): def get_package_scan(purl: Union[PackageURL, str]): """Return the package scan result for a PURL from the FederatedCode Git repository.""" - if not FEDERATEDCODE_GITHUB_ACCOUNT_NAME: - raise ValueError("Provide ``FEDERATEDCODE_GITHUB_ACCOUNT_NAME`` in .env file.") + if not FEDERATEDCODE_GIT_RAW_URL: + raise ValueError("Provide ``FEDERATEDCODE_GIT_RAW_URL`` in .env file.") if isinstance(purl, str): purl = PackageURL.from_string(purl) @@ -45,9 +48,9 @@ def get_package_scan(purl: Union[PackageURL, str]): version = purl.version file_name = "scancodeio.json" - url_parts = [FEDERATEDCODE_GITHUB_ACCOUNT_NAME, repo_name, package_dir_path, version, file_name] + url_parts = [repo_name, package_dir_path, version, file_name] - file_url = urljoin("https://raw.githubusercontent.com", "/".join(url_parts)) + file_url = urljoin(FEDERATEDCODE_GIT_RAW_URL, "/".join(url_parts)) try: response = requests.get(file_url) diff --git a/pyproject-aboutcode.federatedcode.toml b/pyproject-aboutcode.federatedcode.toml index fea69ec..f6455a6 100644 --- a/pyproject-aboutcode.federatedcode.toml +++ b/pyproject-aboutcode.federatedcode.toml @@ -38,10 +38,14 @@ dependencies = [ "packageurl_python >= 0.15.6", "aboutcode.hashid>=0.1.0", "python-dotenv>=1.0.1", + "click>=8.1.7", + "requests>=2.32.3", ] urls = { Homepage = "https://github.com/aboutcode-org/federatedcode" } +[project.scripts] + federatedcode = "aboutcode.federatedcode.cli:handler" [tool.bumpversion] current_version = "0.1.0"