ducktape
follows a standard fork and pull model for contributions via GitHub pull requests.
ducktape
is cross-built for Scala JVM, Scala.js and Scala Native which means you should have sbt, Node.js and LLVM/Clang.
ducktape
is split between 3 platform-specific subprojects ducktapeJVM
, ducktapeJS
and ducktapeNative
all of which share the same codebase (ei. there's no platform-specific source files).
The easiest way to actually develop is to pick the JVM subproject in sbt
with project/ducktapeJVM
, you won't have to recompile all of the other stuff on each change which should save you some time.
Run sbt
and then use any of the following commands:
compile
: compiles the code for all platformstest
: runs the tests for all platformsdocs/mdoc
: compiles and recreates theREADME.md
filescalafmtAll
: formats the codescalafmtSbt
: formats the build definitionscalafixAll
: runs all scalafix rules
The README.md file in the root of the repository is generated using docs/mdoc
- to actually change this file you need to modify docs/readme.md
and rerun docs/mdoc
- after this task is done running you should be able to navigate documentation/target/mdoc/readme.md
to access the modified file and copy it over to README.md
in the root of the project. This process is pretty manual and cumbersome but I just can't be bothered to automate it.
If you want to iterate on the process you can use docs/mdoc --watch
to start a server that will automatically reload the docs after a change to a file.