@@ -24,6 +24,7 @@ import App.Fossa.Ficus.Types (
2424 FicusPerStrategyFlag (.. ),
2525 FicusScanStats (.. ),
2626 FicusSnippetScanResults (.. ),
27+ FicusStrategy (FicusStrategyHash , FicusStrategyNoop , FicusStrategySnippetScan , FicusStrategyVendetta ),
2728 FicusVendoredDependency (.. ),
2829 FicusVendoredDependencyScanResults (.. ),
2930 )
@@ -96,12 +97,13 @@ analyzeWithFicus ::
9697 Path Abs Dir ->
9798 Maybe ApiOpts ->
9899 ProjectRevision ->
100+ [FicusStrategy ] ->
99101 Maybe LicenseScanPathFilters ->
100102 Maybe Int ->
101103 Maybe FilePath -> -- Debug directory (if enabled)
102104 m (Maybe FicusAnalysisResults )
103- analyzeWithFicus rootDir apiOpts revision filters snippetScanRetentionDays maybeDebugDir = do
104- Just <$> analyzeWithFicusMain rootDir apiOpts revision filters snippetScanRetentionDays maybeDebugDir
105+ analyzeWithFicus rootDir apiOpts revision strategies filters snippetScanRetentionDays maybeDebugDir = do
106+ Just <$> analyzeWithFicusMain rootDir apiOpts revision strategies filters snippetScanRetentionDays maybeDebugDir
105107
106108analyzeWithFicusMain ::
107109 ( Has Diagnostics sig m
@@ -111,11 +113,12 @@ analyzeWithFicusMain ::
111113 Path Abs Dir ->
112114 Maybe ApiOpts ->
113115 ProjectRevision ->
116+ [FicusStrategy ] ->
114117 Maybe LicenseScanPathFilters ->
115118 Maybe Int ->
116119 Maybe FilePath -> -- Debug directory (if enabled)
117120 m FicusAnalysisResults
118- analyzeWithFicusMain rootDir apiOpts revision filters snippetScanRetentionDays maybeDebugDir = do
121+ analyzeWithFicusMain rootDir apiOpts revision strategies filters snippetScanRetentionDays maybeDebugDir = do
119122 logDebugWithTime " Preparing Ficus analysis configuration..."
120123 ficusResults <- runFicus maybeDebugDir ficusConfig
121124 logDebugWithTime " runFicus completed, processing results..."
@@ -134,6 +137,7 @@ analyzeWithFicusMain rootDir apiOpts revision filters snippetScanRetentionDays m
134137 , ficusConfigRevision = revision
135138 , ficusConfigFlags = [All $ FicusAllFlag SkipHiddenFiles , All $ FicusAllFlag Gitignore ]
136139 , ficusConfigSnippetScanRetentionDays = snippetScanRetentionDays
140+ , ficusConfigOnlyStrategies = strategies
137141 }
138142
139143findingToSnippetScanResult :: FicusFinding -> Maybe FicusSnippetScanResults
@@ -171,7 +175,7 @@ formatFicusScanSummary results =
171175
172176findingToVendoredDependency :: FicusFinding -> Maybe FicusVendoredDependency
173177findingToVendoredDependency (FicusFinding (FicusMessageData strategy payload))
174- | Text. toLower strategy == " vendored " =
178+ | Text. toLower strategy == " vendetta " =
175179 decode (BL. fromStrict $ Text.Encoding. encodeUtf8 payload)
176180findingToVendoredDependency _ = Nothing
177181
@@ -400,11 +404,17 @@ ficusCommand ficusConfig bin = do
400404 pure cmd
401405 where
402406 snippetScanRetentionDays = ficusConfigSnippetScanRetentionDays ficusConfig
403- configArgs endpoint = [" analyze" , " --secret" , secret, " --endpoint" , endpoint, " --locator" , locator, " --set" , " all:skip-hidden-files" , " --set" , " all:gitignore" , " --exclude" , " .git" , " --exclude" , " .git/**" ] ++ configExcludes ++ maybe [] (\ days -> [" --snippet-scan-retention-days" , toText days]) snippetScanRetentionDays ++ [targetDir]
407+ configArgs endpoint = [" analyze" , " --secret" , secret, " --endpoint" , endpoint, " --locator" , locator, " --set" , " all:skip-hidden-files" , " --set" , " all:gitignore" , " --exclude" , " .git" , " --exclude" , " .git/**" ] ++ configExcludes ++ configStrategies ++ maybe [] (\ days -> [" --snippet-scan-retention-days" , toText days]) snippetScanRetentionDays ++ [targetDir]
404408 targetDir = toText $ toFilePath $ ficusConfigRootDir ficusConfig
405409 secret = maybe " " (toText . unApiKey) $ ficusConfigSecret ficusConfig
406410 locator = renderLocator $ Locator " custom" (projectName $ ficusConfigRevision ficusConfig) (Just $ projectRevision $ ficusConfigRevision ficusConfig)
407411 configExcludes = concatMap (\ path -> [" --exclude" , unGlobFilter path]) $ ficusConfigExclude ficusConfig
412+ configStrategies = concatMap (\ strategy -> [" --only" , strategyToArg strategy]) $ ficusConfigOnlyStrategies ficusConfig
413+ strategyToArg = \ case
414+ FicusStrategySnippetScan -> " snippet-scan"
415+ FicusStrategyNoop -> " noop"
416+ FicusStrategyHash -> " hash"
417+ FicusStrategyVendetta -> " vendetta"
408418
409419 maskApiKeyInCommand :: Text -> Text
410420 maskApiKeyInCommand cmdText =
0 commit comments