blob: 29a07f17d3089022ee0e2ea1b71339c16707f2dd (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package mill.contrib.bsp
import scala.collection.JavaConverters._
import ch.epfl.scala.bsp4j.{BuildTargetIdentifier, CompileParams, RunParams, TestParams}
/**
* Common trait to represent BSP request parameters that
* have a specific form: include one or more targetIds,
* arguments for the execution of the task, and an optional
* origin id generated by the client.
*/
trait Parameters {
def getTargets: List[BuildTargetIdentifier]
def getArguments: Option[Seq[String]]
def getOriginId: Option[String]
}
case class CParams(compileParams: CompileParams) extends Parameters {
override def getTargets: List[BuildTargetIdentifier] = {
compileParams.getTargets.asScala.toList
}
override def getArguments: Option[Seq[String]] = {
try {
Option(compileParams.getArguments.asScala)
}catch {
case e: Exception => Option.empty[Seq[String]]
}
}
override def getOriginId: Option[String] = {
try {
Option(compileParams.getOriginId)
}catch {
case e: Exception => Option.empty[String]
}
}
}
case class RParams(runParams: RunParams) extends Parameters {
override def getTargets: List[BuildTargetIdentifier] = {
List(runParams.getTarget)
}
override def getArguments: Option[Seq[String]] = {
try {
Option(runParams.getArguments.asScala)
}catch {
case e: Exception => Option.empty[Seq[String]]
}
}
override def getOriginId: Option[String] = {
try {
Option(runParams.getOriginId)
}catch {
case e: Exception => Option.empty[String]
}
}
}
case class TParams(testParams: TestParams) extends Parameters {
override def getTargets: List[BuildTargetIdentifier] = {
testParams.getTargets.asScala.toList
}
override def getArguments: Option[Seq[String]] = {
try {
Option(testParams.getArguments.asScala)
}catch {
case e: Exception => Option.empty[Seq[String]]
}
}
override def getOriginId: Option[String] = {
try {
Option(testParams.getOriginId)
}catch {
case e: Exception => Option.empty[String]
}
}
}
object TaskParameters {
/**
* Convert parameters specific to the compile request
* to the common trait Parameters.
* @param compileParams compile request parameters
* @return general task parameters containing compilation info
*/
def fromCompileParams(compileParams: CompileParams): Parameters = {
CParams(compileParams)
}
/**
* Convert parameters specific to the run request
* to the common trait Parameters.
* @param runParams run request parameters
* @return general task parameters containing running info
*/
def fromRunParams(runParams: RunParams): Parameters = {
RParams(runParams)
}
/**
* Convert parameters specific to the test request
* to the common trait Parameters.
* @param testParams compile request parameters
* @return general task parameters containing testing info
*/
def fromTestParams(testParams: TestParams): Parameters = {
TParams(testParams)
}
}
|