add BuildServerCapabilities

This commit is contained in:
Adrien Piquerez 2020-05-05 17:51:36 +02:00
parent 3ae42ae9c6
commit 068fe2ad0a
10 changed files with 172 additions and 13 deletions

View File

@ -27,7 +27,8 @@ import sjsonnew.support.scalajson.unsafe.Converter
object BuildServerProtocol { object BuildServerProtocol {
import sbt.internal.bsp.codec.JsonProtocol._ import sbt.internal.bsp.codec.JsonProtocol._
private val bspVersion = "2.0.0-M5" private val bspVersion = "2.0.0-M5"
private val capabilities = BuildClientCapabilities(languageIds = Vector("scala")) private val languageIds = Vector("scala")
private val capabilities = BuildServerCapabilities(CompileProvider(languageIds))
lazy val globalSettings: Seq[Def.Setting[_]] = Seq( lazy val globalSettings: Seq[Def.Setting[_]] = Seq(
bspWorkspace := Def.taskDyn { bspWorkspace := Def.taskDyn {

View File

@ -0,0 +1,37 @@
/**
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
*/
// DO NOT EDIT MANUALLY
package sbt.internal.bsp
/** @param compileProvider The languages the server supports compilation via method buildTarget/compile. */
final class BuildServerCapabilities private (
val compileProvider: Option[sbt.internal.bsp.CompileProvider]) extends Serializable {
override def equals(o: Any): Boolean = o match {
case x: BuildServerCapabilities => (this.compileProvider == x.compileProvider)
case _ => false
}
override def hashCode: Int = {
37 * (37 * (17 + "sbt.internal.bsp.BuildServerCapabilities".##) + compileProvider.##)
}
override def toString: String = {
"BuildServerCapabilities(" + compileProvider + ")"
}
private[this] def copy(compileProvider: Option[sbt.internal.bsp.CompileProvider] = compileProvider): BuildServerCapabilities = {
new BuildServerCapabilities(compileProvider)
}
def withCompileProvider(compileProvider: Option[sbt.internal.bsp.CompileProvider]): BuildServerCapabilities = {
copy(compileProvider = compileProvider)
}
def withCompileProvider(compileProvider: sbt.internal.bsp.CompileProvider): BuildServerCapabilities = {
copy(compileProvider = Option(compileProvider))
}
}
object BuildServerCapabilities {
def apply(compileProvider: Option[sbt.internal.bsp.CompileProvider]): BuildServerCapabilities = new BuildServerCapabilities(compileProvider)
def apply(compileProvider: sbt.internal.bsp.CompileProvider): BuildServerCapabilities = new BuildServerCapabilities(Option(compileProvider))
}

View File

@ -21,8 +21,10 @@ package sbt.internal.bsp
- display icons or colors in the user interface. - display icons or colors in the user interface.
Pre-defined tags are listed in `BuildTargetTag` but clients and servers Pre-defined tags are listed in `BuildTargetTag` but clients and servers
are free to define new tags for custom purposes. are free to define new tags for custom purposes.
* @param capabilities The capabilities of this build target.
* @param languageIds The set of languages that this target contains. * @param languageIds The set of languages that this target contains.
The ID string for each language is defined in the LSP. The ID string for each language is defined in the LSP.
* @param dependencies The direct upstream build target dependencies of this build target
* @param dataKind Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified. * @param dataKind Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified.
* @param data Language-specific metadata about this target. * @param data Language-specific metadata about this target.
See ScalaBuildTarget as an example. See ScalaBuildTarget as an example.

View File

@ -0,0 +1,32 @@
/**
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
*/
// DO NOT EDIT MANUALLY
package sbt.internal.bsp
final class CompileProvider private (
val languageIds: Vector[String]) extends Serializable {
override def equals(o: Any): Boolean = o match {
case x: CompileProvider => (this.languageIds == x.languageIds)
case _ => false
}
override def hashCode: Int = {
37 * (37 * (17 + "sbt.internal.bsp.CompileProvider".##) + languageIds.##)
}
override def toString: String = {
"CompileProvider(" + languageIds + ")"
}
private[this] def copy(languageIds: Vector[String] = languageIds): CompileProvider = {
new CompileProvider(languageIds)
}
def withLanguageIds(languageIds: Vector[String]): CompileProvider = {
copy(languageIds = languageIds)
}
}
object CompileProvider {
def apply(languageIds: Vector[String]): CompileProvider = new CompileProvider(languageIds)
}

View File

@ -15,7 +15,7 @@ final class InitializeBuildResult private (
val displayName: String, val displayName: String,
val version: String, val version: String,
val bspVersion: String, val bspVersion: String,
val capabilities: sbt.internal.bsp.BuildClientCapabilities, val capabilities: sbt.internal.bsp.BuildServerCapabilities,
val data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]) extends Serializable { val data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]) extends Serializable {
@ -30,7 +30,7 @@ final class InitializeBuildResult private (
override def toString: String = { override def toString: String = {
"InitializeBuildResult(" + displayName + ", " + version + ", " + bspVersion + ", " + capabilities + ", " + data + ")" "InitializeBuildResult(" + displayName + ", " + version + ", " + bspVersion + ", " + capabilities + ", " + data + ")"
} }
private[this] def copy(displayName: String = displayName, version: String = version, bspVersion: String = bspVersion, capabilities: sbt.internal.bsp.BuildClientCapabilities = capabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue] = data): InitializeBuildResult = { private[this] def copy(displayName: String = displayName, version: String = version, bspVersion: String = bspVersion, capabilities: sbt.internal.bsp.BuildServerCapabilities = capabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue] = data): InitializeBuildResult = {
new InitializeBuildResult(displayName, version, bspVersion, capabilities, data) new InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
} }
def withDisplayName(displayName: String): InitializeBuildResult = { def withDisplayName(displayName: String): InitializeBuildResult = {
@ -42,7 +42,7 @@ final class InitializeBuildResult private (
def withBspVersion(bspVersion: String): InitializeBuildResult = { def withBspVersion(bspVersion: String): InitializeBuildResult = {
copy(bspVersion = bspVersion) copy(bspVersion = bspVersion)
} }
def withCapabilities(capabilities: sbt.internal.bsp.BuildClientCapabilities): InitializeBuildResult = { def withCapabilities(capabilities: sbt.internal.bsp.BuildServerCapabilities): InitializeBuildResult = {
copy(capabilities = capabilities) copy(capabilities = capabilities)
} }
def withData(data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = { def withData(data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = {
@ -54,6 +54,6 @@ final class InitializeBuildResult private (
} }
object InitializeBuildResult { object InitializeBuildResult {
def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildClientCapabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, data) def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildServerCapabilities, data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, data)
def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildClientCapabilities, data: sjsonnew.shaded.scalajson.ast.unsafe.JValue): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, Option(data)) def apply(displayName: String, version: String, bspVersion: String, capabilities: sbt.internal.bsp.BuildServerCapabilities, data: sjsonnew.shaded.scalajson.ast.unsafe.JValue): InitializeBuildResult = new InitializeBuildResult(displayName, version, bspVersion, capabilities, Option(data))
} }

View File

@ -0,0 +1,27 @@
/**
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
*/
// DO NOT EDIT MANUALLY
package sbt.internal.bsp.codec
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait BuildServerCapabilitiesFormats { self: sbt.internal.bsp.codec.CompileProviderFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val BuildServerCapabilitiesFormat: JsonFormat[sbt.internal.bsp.BuildServerCapabilities] = new JsonFormat[sbt.internal.bsp.BuildServerCapabilities] {
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.BuildServerCapabilities = {
__jsOpt match {
case Some(__js) =>
unbuilder.beginObject(__js)
val compileProvider = unbuilder.readField[Option[sbt.internal.bsp.CompileProvider]]("compileProvider")
unbuilder.endObject()
sbt.internal.bsp.BuildServerCapabilities(compileProvider)
case None =>
deserializationError("Expected JsObject but found None")
}
}
override def write[J](obj: sbt.internal.bsp.BuildServerCapabilities, builder: Builder[J]): Unit = {
builder.beginObject()
builder.addField("compileProvider", obj.compileProvider)
builder.endObject()
}
}
}

View File

@ -0,0 +1,27 @@
/**
* This code is generated using [[http://www.scala-sbt.org/contraband/ sbt-contraband]].
*/
// DO NOT EDIT MANUALLY
package sbt.internal.bsp.codec
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait CompileProviderFormats { self: sjsonnew.BasicJsonProtocol =>
implicit lazy val CompileProviderFormat: JsonFormat[sbt.internal.bsp.CompileProvider] = new JsonFormat[sbt.internal.bsp.CompileProvider] {
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.CompileProvider = {
__jsOpt match {
case Some(__js) =>
unbuilder.beginObject(__js)
val languageIds = unbuilder.readField[Vector[String]]("languageIds")
unbuilder.endObject()
sbt.internal.bsp.CompileProvider(languageIds)
case None =>
deserializationError("Expected JsObject but found None")
}
}
override def write[J](obj: sbt.internal.bsp.CompileProvider, builder: Builder[J]): Unit = {
builder.beginObject()
builder.addField("languageIds", obj.languageIds)
builder.endObject()
}
}
}

View File

@ -5,7 +5,7 @@
// DO NOT EDIT MANUALLY // DO NOT EDIT MANUALLY
package sbt.internal.bsp.codec package sbt.internal.bsp.codec
import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError } import _root_.sjsonnew.{ Unbuilder, Builder, JsonFormat, deserializationError }
trait InitializeBuildResultFormats { self: sbt.internal.bsp.codec.BuildClientCapabilitiesFormats with sbt.internal.util.codec.JValueFormats with sjsonnew.BasicJsonProtocol => trait InitializeBuildResultFormats { self: sbt.internal.bsp.codec.BuildServerCapabilitiesFormats with sbt.internal.util.codec.JValueFormats with sjsonnew.BasicJsonProtocol =>
implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.InitializeBuildResult] = new JsonFormat[sbt.internal.bsp.InitializeBuildResult] { implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.InitializeBuildResult] = new JsonFormat[sbt.internal.bsp.InitializeBuildResult] {
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.InitializeBuildResult = { override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.InitializeBuildResult = {
__jsOpt match { __jsOpt match {
@ -14,7 +14,7 @@ implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.Initi
val displayName = unbuilder.readField[String]("displayName") val displayName = unbuilder.readField[String]("displayName")
val version = unbuilder.readField[String]("version") val version = unbuilder.readField[String]("version")
val bspVersion = unbuilder.readField[String]("bspVersion") val bspVersion = unbuilder.readField[String]("bspVersion")
val capabilities = unbuilder.readField[sbt.internal.bsp.BuildClientCapabilities]("capabilities") val capabilities = unbuilder.readField[sbt.internal.bsp.BuildServerCapabilities]("capabilities")
val data = unbuilder.readField[Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]]("data") val data = unbuilder.readField[Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]]("data")
unbuilder.endObject() unbuilder.endObject()
sbt.internal.bsp.InitializeBuildResult(displayName, version, bspVersion, capabilities, data) sbt.internal.bsp.InitializeBuildResult(displayName, version, bspVersion, capabilities, data)

View File

@ -16,6 +16,8 @@ trait JsonProtocol extends sjsonnew.BasicJsonProtocol
with sbt.internal.bsp.codec.DiagnosticFormats with sbt.internal.bsp.codec.DiagnosticFormats
with sbt.internal.bsp.codec.BuildClientCapabilitiesFormats with sbt.internal.bsp.codec.BuildClientCapabilitiesFormats
with sbt.internal.bsp.codec.InitializeBuildParamsFormats with sbt.internal.bsp.codec.InitializeBuildParamsFormats
with sbt.internal.bsp.codec.CompileProviderFormats
with sbt.internal.bsp.codec.BuildServerCapabilitiesFormats
with sbt.internal.bsp.codec.InitializeBuildResultFormats with sbt.internal.bsp.codec.InitializeBuildResultFormats
with sbt.internal.bsp.codec.PublishDiagnosticsParamsFormats with sbt.internal.bsp.codec.PublishDiagnosticsParamsFormats
with sbt.internal.bsp.codec.WorkspaceBuildTargetsResultFormats with sbt.internal.bsp.codec.WorkspaceBuildTargetsResultFormats

View File

@ -28,14 +28,14 @@ type BuildTarget {
## are free to define new tags for custom purposes. ## are free to define new tags for custom purposes.
tags: [String] tags: [String]
# The capabilities of this build target. ## The capabilities of this build target.
capabilities: sbt.internal.bsp.BuildTargetCapabilities! capabilities: sbt.internal.bsp.BuildTargetCapabilities!
## The set of languages that this target contains. ## The set of languages that this target contains.
## The ID string for each language is defined in the LSP. ## The ID string for each language is defined in the LSP.
languageIds: [String] languageIds: [String]
# The direct upstream build target dependencies of this build target ## The direct upstream build target dependencies of this build target
dependencies: [sbt.internal.bsp.BuildTargetIdentifier] dependencies: [sbt.internal.bsp.BuildTargetIdentifier]
## Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified. ## Kind of data to expect in the `data` field. If this field is not set, the kind of data is not specified.
@ -158,12 +158,43 @@ type InitializeBuildResult {
bspVersion: String! bspVersion: String!
## The capabilities of the build server ## The capabilities of the build server
capabilities: sbt.internal.bsp.BuildClientCapabilities! capabilities: sbt.internal.bsp.BuildServerCapabilities!
## Additional metadata about the server ## Additional metadata about the server
data: sjsonnew.shaded.scalajson.ast.unsafe.JValue data: sjsonnew.shaded.scalajson.ast.unsafe.JValue
} }
type BuildServerCapabilities {
## The languages the server supports compilation via method buildTarget/compile.
compileProvider: sbt.internal.bsp.CompileProvider
# The languages the server supports test execution via method buildTarget/test
# testProvider: TestProvider
# The languages the server supports run via method buildTarget/run
# runProvider: RunProvider
# The server can provide a list of targets that contain a
# single text document via the method buildTarget/inverseSources
# inverseSourcesProvider: Boolean
# The server provides sources for library dependencies
# via method buildTarget/dependencySources
# dependencySourcesProvider: Boolean
# The server provides all the resource dependencies
# via method buildTarget/resources
# resourcesProvider: Boolean
# The server sends notifications to the client on build
# target change events via buildTarget/didChange
# buildTargetChangedProvider: Boolean
}
type CompileProvider {
languageIds: [String]
}
## Publish Diagnostics ## Publish Diagnostics
type PublishDiagnosticsParams { type PublishDiagnosticsParams {
## The document where the diagnostics are published. ## The document where the diagnostics are published.
@ -235,10 +266,10 @@ type TaskStartParams {
## Optional message describing the task. ## Optional message describing the task.
message: String message: String
## Kind of data to expect in the `data` field. # Kind of data to expect in the `data` field.
# dataKind: String # dataKind: String
## Optional metadata about the task. # Optional metadata about the task.
# data: Any # data: Any
} }