@@ -24,27 +24,8 @@ import sjsonnew.support.scalajson.unsafe.{Parser => JsonParser}
24
24
object AnalyzeDependencyGraph {
25
25
26
26
object Model {
27
- sealed trait AnalysisAction {
28
- def name : String
29
- def help : String
30
- }
31
-
32
- object AnalysisAction {
33
- case object Alerts extends AnalysisAction {
34
- val name = " alerts"
35
- val help =
36
- " download and display CVEs alerts from Github (use hub or gh local config or GIT_TOKEN env var to authenticate)"
37
- }
38
- case object Cves extends AnalysisAction {
39
- val name = " cves"
40
- val help =
41
- " analyze CVEs alerts against the dependencies (requires githubGenerateSnapshot and githubAnalyzeDependencies alerts)"
42
- }
43
-
44
- val values : Seq [AnalysisAction ] = Seq (Alerts , Cves )
45
-
46
- def fromString (str : String ): Option [AnalysisAction ] = values.find(_.name == str)
47
- }
27
+ val help =
28
+ " download and display CVEs alerts from Github, and analyze them against dependencies (use hub or gh local config or GIT_TOKEN env var to authenticate, requires githubGenerateSnapshot and githubAnalyzeDependencies alerts)"
48
29
49
30
def blue (str : String ): String = s " \u001b [34m ${str}\u001b [0m "
50
31
@@ -68,7 +49,7 @@ object AnalyzeDependencyGraph {
68
49
s " ${blue(packageId)} [ $vulnerableVersionRange ] fixed: $firstPatchedVersion $coloredSeverity"
69
50
}
70
51
71
- case class AnalysisParams (action : AnalysisAction , arg : Option [String ])
52
+ case class AnalysisParams (arg : Option [String ])
72
53
73
54
sealed trait Vulnerable
74
55
object Good extends Vulnerable
@@ -80,9 +61,9 @@ object AnalyzeDependencyGraph {
80
61
81
62
val AnalyzeDependencies = " githubAnalyzeDependencies"
82
63
private val AnalyzeDependenciesUsage =
83
- s """ $AnalyzeDependencies [ ${ AnalysisAction .values.map(_.name).mkString( " | " )} ] [ pattern]"""
64
+ s """ $AnalyzeDependencies [pattern] """
84
65
private val AnalyzeDependenciesDetail = s """ Analyze the dependencies based on a search pattern:
85
- ${ AnalysisAction .values.map(a => s " ${a.name} : ${a. help} " ).mkString( " \n " )}
66
+ $help
86
67
"""
87
68
88
69
val commands : Seq [Command ] = Seq (
@@ -96,8 +77,8 @@ object AnalyzeDependencyGraph {
96
77
private def extractPattern (state : State ): Parser [AnalysisParams ] =
97
78
Parsers .any.* .map { raw =>
98
79
raw.mkString.trim.split(" " ).toSeq match {
99
- case Seq (action, arg) => AnalysisParams (AnalysisAction .fromString(action).get, Some (arg) )
100
- case Seq (action ) => AnalysisParams (AnalysisAction .fromString(action).get, None )
80
+ case Seq (" " ) | Nil => AnalysisParams (None )
81
+ case Seq (arg ) => AnalysisParams (Some (arg) )
101
82
}
102
83
}.failOnException
103
84
@@ -138,7 +119,7 @@ object AnalyzeDependencyGraph {
138
119
httpResp <- Try (Await .result(http.processFull(request), Duration .Inf ))
139
120
vulnerabilities <- getVulnerabilities(httpResp)
140
121
} yield {
141
- vulnerabilities.foreach(v => println(v.toString) )
122
+ state.log.info( s " Downloaded ${vulnerabilities.size} alerts " )
142
123
state.put(githubAlertsKey, vulnerabilities)
143
124
}
144
125
}
@@ -203,14 +184,7 @@ object AnalyzeDependencyGraph {
203
184
}
204
185
205
186
private def analyzeDependencies (state : State , params : AnalysisParams ): State =
206
- params.action match {
207
- case AnalysisAction .Alerts =>
208
- params.arg.orElse(getGitHubRepo).map(repo => downloadAlerts(state, repo).get).getOrElse(state)
209
- case AnalysisAction .Cves =>
210
- analyzeCves(state)
211
- case _ =>
212
- state
213
- }
187
+ analyzeCves(params.arg.orElse(getGitHubRepo).map(repo => downloadAlerts(state, repo).get).getOrElse(state))
214
188
215
189
private def getVulnerabilities (httpResp : FullResponse ): Try [Seq [Vulnerability ]] = Try {
216
190
httpResp.status match {
0 commit comments