Skip to content

Commit 618ada4

Browse files
committed
WIP
1 parent db46e95 commit 618ada4

7 files changed

Lines changed: 337 additions & 0 deletions

File tree

Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# FOSSA CLI Changelog
22

3+
## 3.11.0
4+
5+
- Add a dependency on Ficus, a new internal tool.
6+
37
## 3.10.14
48

59
- gradle: Do not report version constraints, version contraints are contained within an`DependencyResult`, filter out any constraints by checking [`isConstraint()`](https://docs.gradle.org/current/javadoc/org/gradle/api/artifacts/result/DependencyResult.html#isConstraint()). ([#1563](https://github.com/fossas/fossa-cli/pull/1563))

src/App/Fossa/Analyze.hs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ import App.Fossa.Config.Analyze (
5050
)
5151
import App.Fossa.Config.Analyze qualified as Config
5252
import App.Fossa.Config.Common (DestinationMeta (..), destinationApiOpts, destinationMetadata)
53+
import App.Fossa.Ficus.Analyze (analyzeWithFicus)
54+
import App.Fossa.Ficus.Types (FicusResults (..))
5355
import App.Fossa.FirstPartyScan (runFirstPartyScan)
5456
import App.Fossa.Lernie.Analyze (analyzeWithLernie)
5557
import App.Fossa.Lernie.Types (LernieResults (..))
@@ -335,6 +337,14 @@ analyze cfg = Diag.context "fossa-analyze" $ do
335337
if (fromFlag BinaryDiscovery $ Config.binaryDiscoveryEnabled $ Config.vsiOptions cfg)
336338
then analyzeDiscoverBinaries basedir filters
337339
else pure Nothing
340+
maybeFicusResults <-
341+
Diag.errorBoundaryIO . diagToDebug $
342+
if filterIsVSIOnly filters
343+
then do
344+
logInfo "Running in VSI only mode, skipping snippet-scan"
345+
pure Nothing
346+
else Diag.context "snippet-scanning" . runStickyLogger SevInfo $ analyzeWithFicus basedir maybeApiOpts grepOptions $ Config.licenseScanPathFilters vendoredDepsOptions --TODO: fix these options
347+
let ficusResults = join . resultToMaybe $ maybeFicusResults
338348
maybeLernieResults <-
339349
Diag.errorBoundaryIO . diagToDebug $
340350
if filterIsVSIOnly filters

src/App/Fossa/Analyze/Types.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ module App.Fossa.Analyze.Types (
1212

1313
import App.Fossa.Analyze.Project (ProjectResult)
1414
import App.Fossa.Config.Analyze (ExperimentalAnalyzeConfig)
15+
import App.Fossa.Ficus.Types (FicusResults)
1516
import App.Fossa.Lernie.Types (LernieResults)
1617
import App.Fossa.Reachability.Types (SourceUnitReachability (..))
1718
import App.Types (Mode)
@@ -80,6 +81,7 @@ data AnalysisScanResult = AnalysisScanResult
8081
{ analyzersScanResult :: [DiscoveredProjectScan]
8182
, vsiScanResult :: Result (Maybe [SourceUnit])
8283
, binaryDepsScanResult :: Result (Maybe SourceUnit)
84+
, ficusResult :: Result (Maybe FicusResults)
8385
, fossaDepsScanResult :: Result (Maybe SourceUnit)
8486
, dynamicLinkingResult :: Result (Maybe SourceUnit)
8587
, lernieResult :: Result (Maybe LernieResults)

src/App/Fossa/EmbeddedBinary.hs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@
44

55
module App.Fossa.EmbeddedBinary (
66
BinaryPaths,
7+
Ficus,
78
Lernie,
89
ThemisIndex,
910
ThemisBins (..),
1011
toPath,
1112
withThemisAndIndex,
1213
withBerkeleyBinary,
14+
withFicusBinary,
1315
withLernieBinary,
1416
withMillhoneBinary,
1517
withCirceBinary,
@@ -57,6 +59,7 @@ data PackagedBinary
5759
= Themis
5860
| ThemisIndex
5961
| BerkeleyDB
62+
| Ficus
6063
| Lernie
6164
| Millhone
6265
| Circe
@@ -77,6 +80,8 @@ data ThemisIndex
7780

7881
data Lernie
7982

83+
data Ficus
84+
8085
data Circe
8186

8287
data ThemisBins = ThemisBins
@@ -116,6 +121,9 @@ withBerkeleyBinary = withEmbeddedBinary BerkeleyDB
116121
withLernieBinary :: (Has (Lift IO) sig m) => (BinaryPaths -> m c) -> m c
117122
withLernieBinary = withEmbeddedBinary Lernie
118123

124+
withFicusBinary :: (Has (Lift IO) sig m) => (BinaryPaths -> m c) -> m c
125+
withFicusBinary = withEmbeddedBinary Ficus
126+
119127
withMillhoneBinary :: (Has (Lift IO) sig m) => (BinaryPaths -> m c) -> m c
120128
withMillhoneBinary = withEmbeddedBinary Millhone
121129

@@ -148,6 +156,7 @@ writeBinary dest bin = sendIO . writeExecutable dest $ case bin of
148156
Themis -> embeddedBinaryThemis
149157
ThemisIndex -> embeddedBinaryThemisIndex
150158
BerkeleyDB -> embeddedBinaryBerkeleyDB
159+
Ficus -> embeddedBinaryFicus
151160
Lernie -> embeddedBinaryLernie
152161
Millhone -> embeddedBinaryMillhone
153162
Circe -> embeddedBinaryCirce
@@ -163,6 +172,7 @@ extractedPath bin = case bin of
163172
Themis -> $(mkRelFile "themis-cli")
164173
ThemisIndex -> $(mkRelFile "index.gob.xz")
165174
BerkeleyDB -> $(mkRelFile "berkeleydb-plugin")
175+
Ficus -> $(mkRelFile "ficus")
166176
Lernie -> $(mkRelFile "lernie")
167177
Millhone -> $(mkRelFile "millhone")
168178
Circe -> $(mkRelFile "circe")
@@ -211,6 +221,9 @@ embeddedBinaryLernie = $(embedFileIfExists "vendor-bins/lernie")
211221
embeddedBinaryCirce :: ByteString
212222
embeddedBinaryCirce = $(embedFileIfExists "vendor-bins/circe")
213223

224+
embeddedBinaryFicus :: ByteString
225+
embeddedBinaryFicus = $(embedFileIfExists "vendor-bins/ficus")
226+
214227
-- To build this, run `make build` or `cargo build --release`.
215228
#ifdef mingw32_HOST_OS
216229
embeddedBinaryMillhone :: ByteString

0 commit comments

Comments
 (0)