2024-05-08 06:35:50 +03:00
|
|
|
// Copyright 2024 The Go Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
//go:generate go run ../../doc/generate
|
|
|
|
|
|
|
|
// The doc package provides JSON metadata that documents gopls' public
|
|
|
|
// interfaces.
|
|
|
|
package doc
|
|
|
|
|
|
|
|
import _ "embed"
|
|
|
|
|
2024-05-04 01:53:37 +03:00
|
|
|
// JSON is a JSON encoding of value of type API.
|
2024-05-08 06:35:50 +03:00
|
|
|
// The 'gopls api-json' command prints it.
|
|
|
|
//
|
|
|
|
//go:embed api.json
|
|
|
|
var JSON string
|
|
|
|
|
|
|
|
// API is a JSON-encodable representation of gopls' public interfaces.
|
|
|
|
//
|
|
|
|
// TODO(adonovan): document these data types.
|
|
|
|
type API struct {
|
|
|
|
Options map[string][]*Option
|
|
|
|
Lenses []*Lens
|
|
|
|
Analyzers []*Analyzer
|
|
|
|
Hints []*Hint
|
|
|
|
}
|
|
|
|
|
|
|
|
type Option struct {
|
|
|
|
Name string
|
2024-06-20 18:24:18 +03:00
|
|
|
Type string // T = bool | string | int | enum | any | []T | map[T]T | time.Duration
|
2024-05-08 06:35:50 +03:00
|
|
|
Doc string
|
|
|
|
EnumKeys EnumKeys
|
|
|
|
EnumValues []EnumValue
|
|
|
|
Default string
|
|
|
|
Status string
|
|
|
|
Hierarchy string
|
|
|
|
}
|
|
|
|
|
|
|
|
type EnumKeys struct {
|
|
|
|
ValueType string
|
|
|
|
Keys []EnumKey
|
|
|
|
}
|
|
|
|
|
|
|
|
type EnumKey struct {
|
2024-06-19 20:25:38 +03:00
|
|
|
Name string // in JSON syntax (quoted)
|
2024-05-08 06:35:50 +03:00
|
|
|
Doc string
|
|
|
|
Default string
|
|
|
|
}
|
|
|
|
|
|
|
|
type EnumValue struct {
|
2024-06-19 20:25:38 +03:00
|
|
|
Value string // in JSON syntax (quoted)
|
|
|
|
Doc string // doc comment; always starts with `Value`
|
2024-05-08 06:35:50 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type Lens struct {
|
2024-05-16 21:11:17 +03:00
|
|
|
FileType string // e.g. "Go", "go.mod"
|
|
|
|
Lens string
|
|
|
|
Title string
|
|
|
|
Doc string
|
|
|
|
Default bool
|
2024-05-08 06:35:50 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
type Analyzer struct {
|
|
|
|
Name string
|
2024-05-20 21:25:32 +03:00
|
|
|
Doc string // from analysis.Analyzer.Doc ("title: summary\ndescription"; not Markdown)
|
2024-05-08 06:35:50 +03:00
|
|
|
URL string
|
|
|
|
Default bool
|
|
|
|
}
|
|
|
|
|
|
|
|
type Hint struct {
|
|
|
|
Name string
|
|
|
|
Doc string
|
|
|
|
Default bool
|
|
|
|
}
|