Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update packageurl-hs package #8

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
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
45 changes: 26 additions & 19 deletions src/Opossum/Opossum.hs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ module Opossum.Opossum
, justExcludeFromNoticeFlags
, Opossum(..)
, writeOpossumStats
, module X
) where

import qualified Data.Aeson as A
Expand All @@ -48,7 +49,7 @@ import qualified Data.Text as T
import Data.UUID (UUID)
import qualified Data.Vector as V
import GHC.Generics
import PURL.PURL
import Purl.Purl as X
import qualified System.FilePath as FP
import System.IO (Handle, hClose, hPutStrLn, stdout)
import qualified System.IO as IO
Expand Down Expand Up @@ -183,17 +184,17 @@ data Coordinates =
, _packageNamespace :: Maybe T.Text
, _packageName :: Maybe T.Text
, _packageVersion :: Maybe T.Text
, _packagePURLAppendix :: Maybe T.Text
, _packagePurlAppendix :: Maybe T.Text
}
deriving (Show, Generic, Eq)

opoossumCoordinatesPreObjectList :: Coordinates -> [A.Pair]
opoossumCoordinatesPreObjectList (Coordinates packageType packageNamespace packageName packageVersion packagePURLAppendix) =
opoossumCoordinatesPreObjectList (Coordinates packageType packageNamespace packageName packageVersion packagePurlAppendix) =
[ "packageType" A..= packageType
, "packageNamespace" A..= packageNamespace
, "packageName" A..= packageName
, "packageVersion" A..= packageVersion
, "packagePURLAppendix" A..= packagePURLAppendix
, "packagePurlAppendix" A..= packagePurlAppendix
]

instance A.ToJSON Coordinates where
Expand All @@ -206,27 +207,33 @@ instance A.FromJSON Coordinates where
packageNamespace <- v A..:? "packageNamespace"
packageName <- v A..:? "packageName"
packageVersion <- v A..:? "packageVersion"
packagePURLAppendix <- v A..:? "packagePURLAppendix"
packagePurlAppendix <- v A..:? "packagePurlAppendix"
return $
Coordinates
packageType
packageNamespace
packageName
packageVersion
packagePURLAppendix

purlToCoordinates :: PURL -> Coordinates
purlToCoordinates (PURL { _PURL_type = type_
, _PURL_namespace = namespace
, _PURL_name = name
, _PURL_version = version
}) =
Coordinates
(fmap (T.pack . show) type_)
(fmap T.pack namespace)
(Just $ T.pack name)
(fmap T.pack version)
Nothing -- TODO: appendix
packagePurlAppendix

purlToCoordinates :: Purl -> Coordinates
purlToCoordinates (purl@Purl { purlType = type_
, purlName = name
, purlVersion = version
}) =
let
packageNamespace = case purlNamespace purl of
"" -> Nothing
ns -> Just (T.pack ns)
packageVersion = case version of
"" -> Nothing
v -> Just (T.pack v)
in Coordinates
((Just . T.pack) type_)
packageNamespace
(Just $ T.pack name)
packageVersion
Nothing -- TODO: appendix

coordinatesAreNotNull :: Coordinates -> Bool
coordinatesAreNotNull (Coordinates Nothing Nothing _ Nothing _) = False
Expand Down
13 changes: 6 additions & 7 deletions src/Opossum/OpossumDependencyCheckUtils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ module Opossum.OpossumDependencyCheckUtils

import Opossum.Opossum
import Opossum.OpossumUtils
import PURL.PURL

import qualified Control.Monad.State as MTL
import qualified Data.Aeson as A
Expand Down Expand Up @@ -125,7 +124,7 @@ instance A.FromJSON DependencyCheckEvidence where
-}
data DependencyCheckPackage =
DependencyCheckPackage
{ _dcp_id :: Either String PURL
{ _dcp_id :: Either String Purl
, _dcp_url :: Maybe T.Text
, _dcp_description :: Maybe String
, _dcp_confidence :: Maybe DependencyCheckConfidence
Expand All @@ -142,7 +141,7 @@ instance A.FromJSON DependencyCheckPackage where
(\case
Just purl -> Right purl
Nothing -> Left raw)
(parsePURL raw))
(parsePurl raw))
(v A..: "id") <*>
v A..:? "url" <*>
v A..:? "description" <*>
Expand Down Expand Up @@ -439,8 +438,8 @@ dependencyCheckPackageToCoordinates (DependencyCheckPackage {_dcp_id = id}) =
Right purl -> purlToCoordinates purl
Left raw -> Coordinates (Just (T.pack raw)) Nothing Nothing Nothing Nothing

evidenceToPURLs :: Map.Map String [DependencyCheckEvidence] -> [PURL]
evidenceToPURLs evidence =
evidenceToPurls :: Map.Map String [DependencyCheckEvidence] -> [Purl]
evidenceToPurls evidence =
let findBestFromEvidences :: [DependencyCheckEvidence] -> Maybe String
findBestFromEvidences [] = Nothing
findBestFromEvidences (e:_) = Just $ _dce_value e
Expand All @@ -452,14 +451,14 @@ evidenceToPURLs evidence =
in maybeToList $
fmap
(\product' ->
PURL Nothing Nothing vendor product' version Nothing Nothing)
Purl Nothing Nothing vendor product' version Nothing Nothing)
product

evidenceToPackages ::
Map.Map String [DependencyCheckEvidence] -> [DependencyCheckPackage]
evidenceToPackages =
map (\purl -> DependencyCheckPackage (Right purl) Nothing Nothing Nothing) .
evidenceToPURLs
evidenceToPurls

dependencyCheckDependencyToOpossum :: DependencyCheckDependency -> IO Opossum
dependencyCheckDependencyToOpossum (dcd@DependencyCheckDependency { _dcd_isVirtual = isVirtual
Expand Down
1 change: 0 additions & 1 deletion src/Opossum/OpossumExiftoolUtils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ module Opossum.OpossumExiftoolUtils

import Opossum.Opossum
import Opossum.OpossumUtils
import PURL.PURL

import qualified Control.Monad.State as MTL
import qualified Data.Aeson as A
Expand Down
9 changes: 4 additions & 5 deletions src/Opossum/OpossumScancodeUtils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ module Opossum.OpossumScancodeUtils

import Opossum.Opossum
import Opossum.OpossumUtils
import PURL.PURL

import qualified Control.Monad.State as MTL
import qualified Data.Aeson as A
Expand Down Expand Up @@ -144,7 +143,7 @@ renderLicense licenses =
-}
data ScancodePackage =
ScancodePackage
{ _scp_purl :: Maybe PURL
{ _scp_purl :: Maybe Purl
, _scp_licenses :: SPDX.MaybeLicenseExpression
, _scp_copyright :: Maybe String
, _scp_dependencies :: [ScancodePackage]
Expand All @@ -157,7 +156,7 @@ instance A.FromJSON ScancodePackage where
purl <-
v A..:? "purl" >>=
(\case
Just purl -> return $ parsePURL purl
Just purl -> return $ parsePurl purl
Nothing -> return Nothing)
dependencies <-
(v A..:? "dependencies" >>=
Expand Down Expand Up @@ -275,12 +274,12 @@ opossumFromScancodePackage scp@(ScancodePackage { _scp_purl = purl
}) providedPath =
let typeFromPurl =
case purl of
Just (PURL {_PURL_type = t}) -> maybe "generic" show t
Just (Purl {_Purl_type = t}) -> maybe "generic" show t
_ -> "generic"
pathFromPurl =
typeFromPurl FP.</>
case purl of
Just (PURL {_PURL_namespace = ns, _PURL_name = n, _PURL_version = v}) ->
Just (Purl {_Purl_namespace = ns, _Purl_name = n, _Purl_version = v}) ->
foldl1 (FP.</>) $
maybeToList ns ++ [intercalate "@" $ n : maybeToList v]
_ -> "UNKNOWN"
Expand Down
5 changes: 2 additions & 3 deletions src/Opossum/OpossumScanossUtils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ module Opossum.OpossumScanossUtils

import Opossum.Opossum
import Opossum.OpossumUtils
import PURL.PURL

import qualified Control.Monad.State as MTL
import qualified Data.Aeson as A
Expand Down Expand Up @@ -178,7 +177,7 @@ data ScanossFinding =
ScanossFinding
{ _ScanossFinding_id :: String
, _ScanossFinding_matched :: String
, _ScanossFinding_purl :: [PURL]
, _ScanossFinding_purl :: [Purl]
, _ScanossFinding_vendor :: Maybe T.Text
, _ScanossFinding_component :: Maybe T.Text
, _ScanossFinding_version :: Maybe T.Text
Expand Down Expand Up @@ -218,7 +217,7 @@ instance A.FromJSON ScanossFinding where
AKM.filterWithKey (\key -> const (not (key `elem` keysToFilter))))
v
ScanossFinding <$> v A..: "id" <*> v A..: "matched" <*>
(fmap (Maybe.mapMaybe (parsePURL)) $ v A..: "purl") <*>
(fmap (Maybe.mapMaybe (parsePurl)) $ v A..: "purl") <*>
v A..:? "vendor" <*>
v A..:? "component" <*>
v A..:? "version" <*>
Expand Down
2 changes: 1 addition & 1 deletion stack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ extra-deps:
- git: https://github.com/maxhbr/spdx-tools-hs
commit: cbf3583bdb6af620f54285af3662dc2d89c88568
- git: https://github.com/maxhbr/packageurl-hs
commit: 81d3701a1a630e529862d3c639a69e09848f7cf6
commit: 73af4872a0c019a77249e7beb5e2ee1068a59548
- git: https://github.com/phadej/spdx
commit: ef1807e08299150e4b42dfb33e87e2982be8d49c

Loading