Skip to content

elixir-lsp/dap_codegen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DAPCodegen

Library to generate DAP protocol code for gen_dap.

Usage

For DAP code generation:

elixir -e 'Mix.install([{:dap_codegen, github: "elixir-lsp/dap_codegen"}]); DAPCodegen.generate(System.argv())' -- --path ./path/for/files

Schema Files

DAP Schema

To update the debugAdapterProtocol.json, you can run the following:

curl --location 'https://microsoft.github.io/debug-adapter-protocol/debugAdapterProtocol.json' | jq . > priv/debugAdapterProtocol.json

Schema description

Request

A request in the Debug Adapter Protocol (DAP) is a message sent from the client (IDE) to the debug adapter. It typically includes the following features: Type: The type of message, which is always "request". Seq: A sequence number to identify the message. Command: The specific command being requested (e.g., "initialize", "launch"). Arguments: A set of parameters required for the command.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "type": { "type": "string", "enum": ["request"] },
    "seq": { "type": "integer" },
    "command": { "type": "string" },
    "arguments": { "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ] }
  },
  "required": ["type", "seq", "command"]
}

Event

An event is a notification sent from the debug adapter to the client, indicating a change in state or an occurrence of interest.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "type": { "type": "string", "enum": ["event"] },
    "seq": { "type": "integer" },
    "event": { "type": "string" },
    "body": { "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ] }
  },
  "required": ["type", "seq", "event"]
}

Response

A response is sent from the debug adapter back to the client in reply to a request.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "type": { "type": "string", "enum": ["response"] },
    "seq": { "type": "integer" },
    "request_seq": { "type": "integer" },
    "success": { "type": "boolean" },
    "command": { "type": "string" },
    "message": { "type": "string" },
    "body": { "type": [ "array", "boolean", "integer", "null", "number" , "object", "string" ] }
  },
  "required": ["type", "seq", "request_seq", "success", "command"]
}

Error Response

An error response indicates that a request could not be processed successfully.

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "type": { "type": "string", "enum": ["response"] },
    "seq": { "type": "integer" },
    "request_seq": { "type": "integer" },
    "success": { "type": "boolean", "enum": [false] },
    "command": { "type": "string" },
    "body": {
      "type": "object",
      "properties": {
        "error": {
          "type": "object",
          "properties": {
            "id": { "type": "integer" },
            "format": { "type": "string" }
            "variables": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "sendTelemetry": {
              "type": "boolean"
            },
            "showUser": {
              "type": "boolean"
            },
            "url": {
              "type": "string"
            },
            "urlLabel": {
              "type": "string"
            }
          },
          "required": ["id", "format"]
        }
      },
      "required": ["error"]
    }
  },
  "required": ["type", "seq", "request_seq", "success", "command", "body"]
}

Credits

This library is inspired by lsp_codegen by Mitchell Hanberg.

About

Library to generate DAP protocol code

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages