Skip to content

Commit 60a1348

Browse files
committed
declare only one command
group "alerts" and "cve" command in one command to make it easier to use.
1 parent 825c4d5 commit 60a1348

File tree

1 file changed

+9
-35
lines changed

1 file changed

+9
-35
lines changed

sbt-plugin/src/main/scala/ch/epfl/scala/AnalyzeDependencyGraph.scala

Lines changed: 9 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,8 @@ import sjsonnew.support.scalajson.unsafe.{Parser => JsonParser}
2424
object AnalyzeDependencyGraph {
2525

2626
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)"
4829

4930
def blue(str: String): String = s"\u001b[34m${str}\u001b[0m"
5031

@@ -68,7 +49,7 @@ object AnalyzeDependencyGraph {
6849
s"${blue(packageId)} [ $vulnerableVersionRange ] fixed: $firstPatchedVersion $coloredSeverity"
6950
}
7051

71-
case class AnalysisParams(action: AnalysisAction, arg: Option[String])
52+
case class AnalysisParams(arg: Option[String])
7253

7354
sealed trait Vulnerable
7455
object Good extends Vulnerable
@@ -80,9 +61,9 @@ object AnalyzeDependencyGraph {
8061

8162
val AnalyzeDependencies = "githubAnalyzeDependencies"
8263
private val AnalyzeDependenciesUsage =
83-
s"""$AnalyzeDependencies [${AnalysisAction.values.map(_.name).mkString("|")}] [pattern]"""
64+
s"""$AnalyzeDependencies [pattern]"""
8465
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
8667
"""
8768

8869
val commands: Seq[Command] = Seq(
@@ -96,8 +77,8 @@ object AnalyzeDependencyGraph {
9677
private def extractPattern(state: State): Parser[AnalysisParams] =
9778
Parsers.any.*.map { raw =>
9879
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))
10182
}
10283
}.failOnException
10384

@@ -138,7 +119,7 @@ object AnalyzeDependencyGraph {
138119
httpResp <- Try(Await.result(http.processFull(request), Duration.Inf))
139120
vulnerabilities <- getVulnerabilities(httpResp)
140121
} yield {
141-
vulnerabilities.foreach(v => println(v.toString))
122+
state.log.info(s"Downloaded ${vulnerabilities.size} alerts")
142123
state.put(githubAlertsKey, vulnerabilities)
143124
}
144125
}
@@ -203,14 +184,7 @@ object AnalyzeDependencyGraph {
203184
}
204185

205186
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))
214188

215189
private def getVulnerabilities(httpResp: FullResponse): Try[Seq[Vulnerability]] = Try {
216190
httpResp.status match {

0 commit comments

Comments
 (0)