A Debug Adaptor Protocol (DAP) library.
This library can be used for constructing debug adaptors for any programming language.
For a real-world implementation see the haskell-estgi-debugger.
module Main where
import DAP
-- | Runs server in main thread
--
main :: IO ()
main = runDAPServer config mockServerTalk
  where
    capabilities = defaultCapabilities
      { supportsConfigurationDoneRequest      = True
      , supportsHitConditionalBreakpoints     = True
      , supportsModulesRequest                = True
      , additionalModuleColumns               = [ defaultColumnDescriptor
                                                  { columnDescriptorAttributeName = "Extra"
                                                  , columnDescriptorLabel = "Label"
                                                  }
                                                ]
      , supportsValueFormattingOptions        = True
      , supportTerminateDebuggee              = True
      , supportsLoadedSourcesRequest          = True
      }
    config = ServerConfig
      { host = testHost
      , port = testPort
      , serverCapabilities = capabilities
      , debugLogging = False
      }
-- | Mock server communication, used in test runner
--
mockServerTalk
  :: Command
  -> Adaptor app ()
mockServerTalk CommandInitialize = do
  sendInitializeResponse
  sendInitializedEvent
mockServerTalk CommandConfigurationDone = do
  sendConfigurationDoneResponse
  sendStoppedEvent defaultStoppedEvent
-- | Sample port shared amongst client and server
--
testPort :: Int
testPort = 8001
-- | Sample host shared amongst client and server
--
testHost :: String
testHost = "localhost"$ cabal build$ stack build$ nix build$ nix-shell --run ghcid$ cabal test$ stack test$ stack haddock$ cabal haddock