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 {
import sbt.internal.bsp.codec.JsonProtocol._
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(
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.
Pre-defined tags are listed in `BuildTargetTag` but clients and servers
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.
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 data Language-specific metadata about this target.
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 version: 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 {
@ -30,7 +30,7 @@ final class InitializeBuildResult private (
override def toString: String = {
"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)
}
def withDisplayName(displayName: String): InitializeBuildResult = {
@ -42,7 +42,7 @@ final class InitializeBuildResult private (
def withBspVersion(bspVersion: String): InitializeBuildResult = {
copy(bspVersion = bspVersion)
}
def withCapabilities(capabilities: sbt.internal.bsp.BuildClientCapabilities): InitializeBuildResult = {
def withCapabilities(capabilities: sbt.internal.bsp.BuildServerCapabilities): InitializeBuildResult = {
copy(capabilities = capabilities)
}
def withData(data: Option[sjsonnew.shaded.scalajson.ast.unsafe.JValue]): InitializeBuildResult = {
@ -54,6 +54,6 @@ final class InitializeBuildResult private (
}
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.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: 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: 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
package sbt.internal.bsp.codec
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] {
override def read[J](__jsOpt: Option[J], unbuilder: Unbuilder[J]): sbt.internal.bsp.InitializeBuildResult = {
__jsOpt match {
@ -14,7 +14,7 @@ implicit lazy val InitializeBuildResultFormat: JsonFormat[sbt.internal.bsp.Initi
val displayName = unbuilder.readField[String]("displayName")
val version = unbuilder.readField[String]("version")
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")
unbuilder.endObject()
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.BuildClientCapabilitiesFormats
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.PublishDiagnosticsParamsFormats
with sbt.internal.bsp.codec.WorkspaceBuildTargetsResultFormats

View File

@ -28,14 +28,14 @@ type BuildTarget {
## are free to define new tags for custom purposes.
tags: [String]
# The capabilities of this build target.
## The capabilities of this build target.
capabilities: sbt.internal.bsp.BuildTargetCapabilities!
## The set of languages that this target contains.
## The ID string for each language is defined in the LSP.
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]
## 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!
## The capabilities of the build server
capabilities: sbt.internal.bsp.BuildClientCapabilities!
capabilities: sbt.internal.bsp.BuildServerCapabilities!
## Additional metadata about the server
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
type PublishDiagnosticsParams {
## The document where the diagnostics are published.
@ -235,10 +266,10 @@ type TaskStartParams {
## Optional message describing the task.
message: String
## Kind of data to expect in the `data` field.
# Kind of data to expect in the `data` field.
# dataKind: String
## Optional metadata about the task.
# Optional metadata about the task.
# data: Any
}