docs/pages/development/1-development.rst
.. _nuts-node-development:
Nuts node development
#####################
Requirements
************
.. marker-for-readme
.. |gover| image:: https://img.shields.io/github/go-mod/go-version/nuts-foundation/nuts-node
:alt: GitHub go.mod Go version
|gover| or higher is required.
Building
********
Just use ``go build``.
ES256 Koblitz support
=====================
To enable ES256K (Koblitz) support, you need to build with the ``jwx_es256k`` tag:
.. code-block:: shell
go build -tags jwx_es256k
Building for exotic environments
================================
You can build and run the Nuts node on more exotic environments, e.g. Raspberry Pis:
* 32-bit ARMv6 (Raspberry Pi Zero): ``env GOOS=linux GOARCH=arm GOARM=6 go build``
Running tests
*************
Tests can be run by executing
.. code-block:: shell
go test ./...
Code Generation
***************
Code generation is used for generating mocks, OpenAPI client- and servers, and gRPC services.
Make sure that ``GOPATH/bin`` is available on ``PATH`` and that the dependencies are installed
Install ``protoc``:
| MacOS: ``brew install protobuf``
| Linux: ``apt install -y protobuf-compiler``
Install Go tools:
.. code-block:: shell
make install-tools
Generating code:
To regenerate all code run the ``run-generators`` target from the makefile or use one of the following for a specific group
================ =======================
Group Command
================ =======================
Mocks ``make gen-mocks``
OpenApi ``make gen-api``
Protobuf + gRCP ``make gen-protobuf``
All ``make run-generators``
================ =======================
README
======
The readme is auto-generated from a template and uses the documentation to fill in the blanks.
.. code-block:: shell
make gen-readme
Documentation
=============
The documentation can be build by running the following command from the ``/docs`` directory:
.. code-block:: shell
make html