internal/langserver/handlers/execute_command.go (34 lines of code) (raw):

package handlers import ( "context" "fmt" "github.com/Azure/azapi-lsp/internal/langserver/handlers/command" lsp "github.com/Azure/azapi-lsp/internal/protocol" ) var handlerMap = map[string]command.CommandHandler{} const CommandConvertJsonToAzapi = "azapi.convertJsonToAzapi" const CommandAztfMigrate = "azapi.aztfmigrate" const CommandTelemetry = "azapi.telemetry" func availableCommands() []string { return []string{CommandConvertJsonToAzapi, CommandAztfMigrate, CommandTelemetry} } func init() { handlerMap = make(map[string]command.CommandHandler) handlerMap[CommandConvertJsonToAzapi] = command.ConvertJsonCommand{} handlerMap[CommandAztfMigrate] = command.AztfMigrateCommand{} handlerMap[CommandTelemetry] = command.TelemetryCommand{} } func (svc *service) WorkspaceExecuteCommand(ctx context.Context, params lsp.ExecuteCommandParams) (interface{}, error) { if params.Command == "editor.action.triggerSuggest" { // If this was actually received by the server, it means the client // does not support explicit suggest triggering, so we fail silently // TODO: Revisit once https://github.com/microsoft/language-server-protocol/issues/1117 is addressed return nil, nil } handler, ok := handlerMap[params.Command] if !ok { return nil, fmt.Errorf("command %q not found", params.Command) } out, err := handler.Handle(ctx, params.Arguments) if err != nil { return nil, fmt.Errorf("error handling command %q: %w", params.Command, err) } return out, nil }