Go Service Library
This Open Source project contains a collection of high-quality GO packages.
This package collection forms the base structure for production-ready web-services.
A new service can be generated in seconds by using the command make project CONFIG=project.cfg
.
The new generated project name, description, etc..., can be set in the CONFIG file.
Each package follows the same conventions and they can be individually imported in any project.
- category Library
- license MIT
- link https://github.com/nexmoinc/gosrvlib
This project includes a Makefile that allows you to test and build the project in a Linux-compatible system with simple commands.
All the artifacts and reports produced using this Makefile are stored in the target folder.
All the packages listed in the resources/docker/Dockerfile file are required in order to build and test all the library options in the current environment. Alternatively, everything can be built inside a Docker container using the command "make dbuild".
To see all available options:
make help
To build the project inside a Docker container (requires Docker):
make dbuild
An arbitrary make target can be executed inside a Docker container by specifying the "MAKETARGET" parameter:
MAKETARGET='deps mod qa example' make dbuild
The list of make targets can be obtained by typing make
The base Docker building environment is defined in the following Dockerfile:
resources/docker/Dockerfile.dev
To download all dependencies:
make deps
To update the mod file:
make mod
To execute all the default test builds and generate reports in the current environment:
make qa
To format the code (please use this command before submitting any pull request):
make format
Before committing the code, please format it and check if it passes all tests using
DEVMODE=LOCAL make format clean mod deps generate qa example
Please check the examples
folder for an example of a service based on this library.
The following command generates a new project from the example using the data set in the project.cfg file:
make project CONFIG=project.cfg