Skip to content

Commit a6a100d

Browse files
committed
feat: add support for GHC component in query is-affected hsec-tools
1 parent 5709719 commit a6a100d

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

code/hsec-tools/app/Main.hs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,21 +113,25 @@ commandRender =
113113

114114
commandQuery :: Parser (IO ())
115115
commandQuery =
116-
subparser
116+
hsubparser
117117
( command "is-affected" (info isAffected (progDesc "Check if a package/version range is marked vulnerable"))
118118
)
119119
where
120120
isAffected :: Parser (IO ())
121121
isAffected =
122122
go
123-
<$> argument str (metavar "PACKAGE")
123+
<$> argument (parseComponent <$> str) (metavar "PACKAGE|GHC:COMPONENT")
124124
<*> optional (option versionRangeReader (metavar "VERSION-RANGE" <> short 'v' <> long "version-range"))
125125
<*> optional (option str (metavar "ADVISORIES-PATH" <> short 'p' <> long "advisories-path"))
126126
where
127-
go :: T.Text -> Maybe VersionRange -> Maybe FilePath -> IO ()
128-
go packageName versionRange advisoriesPath = do
127+
parseComponent raw =
128+
fromMaybe (Hackage raw) $ do
129+
ghcComponentRaw <- T.stripPrefix "ghc:" $ T.toLower raw
130+
GHC <$> ghcComponentFromText ghcComponentRaw
131+
go :: ComponentIdentifier -> Maybe VersionRange -> Maybe FilePath -> IO ()
132+
go component versionRange advisoriesPath = do
129133
let versionRange' = fromMaybe anyVersion versionRange
130-
maybeAffectedAdvisories <- listVersionRangeAffectedBy (fromMaybe "." advisoriesPath) packageName versionRange'
134+
maybeAffectedAdvisories <- listVersionRangeAffectedBy (fromMaybe "." advisoriesPath) component versionRange'
131135
case maybeAffectedAdvisories of
132136
Validation.Failure errors -> do
133137
T.hPutStrLn stderr "Cannot parse some advisories"

0 commit comments

Comments
 (0)