Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ v33.0.0 (unreleased)
once.
https://github.com/nexB/scancode.io/issues/646

- Move the ``cyclonedx`` and ``spdx`` root modules into the ``pipes`` module.
https://github.com/nexB/scancode.io/issues/657

- Remove the admin app and views.
https://github.com/nexB/scancode.io/issues/645

Expand Down
7 changes: 6 additions & 1 deletion scanpipe/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@
from rq.job import JobStatus

from scancodeio import __version__ as scancodeio_version
from scanpipe import spdx
from scanpipe import tasks

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -1873,6 +1872,8 @@ def get_spdx_types(self):

def as_spdx(self):
"""Return this CodebaseResource as an SPDX Package entry."""
from scanpipe.pipes import spdx

spdx_license_keys = [license["spdx_license_key"] for license in self.licenses]
copyrights = [copyright["copyright"] for copyright in self.copyrights]
holders = [holder["holder"] for holder in self.holders]
Expand Down Expand Up @@ -2200,6 +2201,8 @@ def get_license_expression_spdx_id(self):

def as_spdx(self):
"""Return this DiscoveredPackage as an SPDX Package entry."""
from scanpipe.pipes import spdx

checksums = [
spdx.Checksum(algorithm=algorithm, value=checksum_value)
for algorithm in ["sha1", "md5"]
Expand Down Expand Up @@ -2496,6 +2499,8 @@ def spdx_id(self):

def as_spdx(self):
"""Return this Package as an SPDX Package entry."""
from scanpipe.pipes import spdx

external_refs = []

if package_url := self.package_url:
Expand Down
24 changes: 12 additions & 12 deletions scanpipe/cyclonedx/__init__.py → scanpipe/pipes/cyclonedx.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,21 +31,21 @@
CyclonedxSoftwareBillOfMaterialsStandard as Bom_1_4,
)

SCHEMAS_PATH = pathlib.Path(__file__).parent / "schemas"

CYCLONEDX_SPEC_VERSION = "1.4"
CYCLONEDX_JSON_SCHEMA_LOCATION = "bom-1.4.schema.json"
CYCLONEDX_JSON_SCHEMA_PATH = (
pathlib.Path(__file__).parent / CYCLONEDX_JSON_SCHEMA_LOCATION
)
CYCLONEDX_JSON_SCHEMA_URL = (
CYCLONEDX_SCHEMA_NAME = "bom-1.4.schema.json"
CYCLONEDX_SCHEMA_PATH = SCHEMAS_PATH / CYCLONEDX_SCHEMA_NAME
CYCLONEDX_SCHEMA_URL = (
"https://raw.githubusercontent.com/"
"CycloneDX/specification/master/schema/bom-1.4.schema.json"
)

SPDX_JSON_SCHEMA_LOCATION = "spdx.schema.json"
SPDX_JSON_SCHEMA_PATH = pathlib.Path(__file__).parent / SPDX_JSON_SCHEMA_LOCATION
SPDX_SCHEMA_NAME = "spdx.schema.json"
SPDX_SCHEMA_PATH = SCHEMAS_PATH / SPDX_SCHEMA_NAME

JSF_JSON_SCHEMA_LOCATION = "jsf-0.82.schema.json"
JSF_JSON_SCHEMA_PATH = pathlib.Path(__file__).parent / JSF_JSON_SCHEMA_LOCATION
JSF_SCHEMA_NAME = "jsf-0.82.schema.json"
JSF_SCHEMA_PATH = SCHEMAS_PATH / JSF_SCHEMA_NAME


def get_bom(cyclonedx_document):
Expand Down Expand Up @@ -152,7 +152,7 @@ def get_properties_data(component):
return properties_data


def validate_document(document, schema=CYCLONEDX_JSON_SCHEMA_PATH):
def validate_document(document, schema=CYCLONEDX_SCHEMA_PATH):
"""Check the validity of this CycloneDX document."""
if isinstance(document, str):
document = json.loads(document)
Expand All @@ -163,8 +163,8 @@ def validate_document(document, schema=CYCLONEDX_JSON_SCHEMA_PATH):
if isinstance(schema, str):
schema = json.loads(schema)

spdx_schema = SPDX_JSON_SCHEMA_PATH.read_text()
jsf_schema = JSF_JSON_SCHEMA_PATH.read_text()
spdx_schema = SPDX_SCHEMA_PATH.read_text()
jsf_schema = JSF_SCHEMA_PATH.read_text()

store = {
"http://cyclonedx.org/schema/spdx.schema.json": json.loads(spdx_schema),
Expand Down
2 changes: 1 addition & 1 deletion scanpipe/pipes/output.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@

from scancodeio import SCAN_NOTICE
from scancodeio import __version__ as scancodeio_version
from scanpipe import spdx
from scanpipe.pipes import spdx

scanpipe_app = apps.get_app_config("scanpipe")

Expand Down
4 changes: 2 additions & 2 deletions scanpipe/pipes/resolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
from packageurl import PackageURL
from python_inspector.resolve_cli import resolver_api

from scanpipe import cyclonedx
from scanpipe import spdx
from scanpipe.models import DiscoveredPackage
from scanpipe.pipes import cyclonedx
from scanpipe.pipes import spdx

"""
Resolve packages from manifest, lockfile, and SBOM.
Expand Down
8 changes: 4 additions & 4 deletions scanpipe/spdx/__init__.py → scanpipe/pipes/spdx.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@

SPDX_SPEC_VERSION = "2.3"
SPDX_LICENSE_LIST_VERSION = "3.18"
SPDX_JSON_SCHEMA_LOCATION = "spdx-schema-2.3.json"
SPDX_JSON_SCHEMA_PATH = pathlib.Path(__file__).parent / SPDX_JSON_SCHEMA_LOCATION
SPDX_JSON_SCHEMA_URL = (
SPDX_SCHEMA_NAME = "spdx-schema-2.3.json"
SPDX_SCHEMA_PATH = pathlib.Path(__file__).parent / "schemas" / SPDX_SCHEMA_NAME
SPDX_SCHEMA_URL = (
"https://raw.githubusercontent.com/spdx/spdx-spec/v2.3/schemas/spdx-schema.json"
)

Expand Down Expand Up @@ -612,7 +612,7 @@ def validate(self, schema):
return validate_document(document=self.as_dict(), schema=schema)


def validate_document(document, schema=SPDX_JSON_SCHEMA_PATH):
def validate_document(document, schema=SPDX_SCHEMA_PATH):
"""
SPDX document validation.
Requires the `jsonschema` library.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@
from hoppr_cyclonedx_models.cyclonedx_1_4 import LicenseChoice
from hoppr_cyclonedx_models.cyclonedx_1_4 import LicenseChoice1

from scanpipe import cyclonedx
from scanpipe.pipes import cyclonedx


class CycloneDXUnitTest(TestCase):
bom_file = Path(__file__).parent / "data/cyclonedx/nested.bom.json"
class ScanPipeCycloneDXPipesTest(TestCase):
bom_file = Path(__file__).parent.parent / "data/cyclonedx/nested.bom.json"
bom_json = bom_file.read_text()
bom_parsed = json.loads(bom_json)
bom = Bom_1_4(**bom_parsed)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,14 @@
# 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.

import pathlib
from unittest import TestCase

from scanpipe import spdx
from scanpipe.pipes import spdx


class SPDXTestCase(TestCase):
class ScanPipeSPDXPipesTest(TestCase):
def setUp(self):
spdx_module_location = pathlib.Path(spdx.__file__).parent
spdx_schema_location = spdx_module_location / spdx.SPDX_JSON_SCHEMA_LOCATION
self.schema = spdx_schema_location.read_text()
self.schema = spdx.SPDX_SCHEMA_PATH.read_text()

self.creation_info_data = {
"person_name": "John Doe",
Expand Down