独自yamlに対してvalidation & auto completionを行う
tl;dr
- configに対するJSON Schemaを作成すれば
yaml-language-server
がやってくれる- VSCodeは
vscode-yaml
- VSCodeは
- protoがある場合は
protoc-gen-jsonschema
で JSON Schemaを生成できる
社内ツールとかでconfigがあって、それに対するvalidationとかauto completionがあれば便利だなという時があると思う
わざわざLSPを自作するのは流石に大変だと思うけど、configがyamlの場合は yaml-lanugage-server
が JSON Schema をサポートしているので、configに対するschemaを作成して、読む込むだけでvalidation,auto completionが実現できる
protoからJSON Schemaの生成
ツールの中でgRPCを使っていてprotoファイルが存在している場合は、protocのpluginを使ってprotoファイルからJSON Schemaを生成することができるので楽
syntax = "proto3"; package example; message MyToolConfig { string hello = 1; int32 world = 2; }
こういう config.proto
を使って protoc --jsonschema_out=. config.proto
を実行すると、
{ "$schema": "http://json-schema.org/draft-04/schema#", "properties": { "hello": { "type": "string" }, "world": { "type": "integer" } }, "additionalProperties": true, "type": "object" }
こういう MyToolCofnig.jsonschema
が生成される
あとはさっきの yaml-language-server
の設定で、この JSON を読み込めば良い