golang-cli-template

A general purpose golang CLI template for Github and Gitlab

View the Project on GitHub FalcoSuessgott/golang-cli-template

golang-cli-template

A general purpose project template for golang CLI applications

This template serves as a starting point for golang commandline applications it is based on golang projects that I consider high quality and various other useful blog posts that helped me understanding golang better.

drawing drawing drawing drawing drawing drawing drawing

Table of Contents

Features

Project Layout

How to use this template

bash <(curl -s https://raw.githubusercontent.com/FalcoSuessgott/golang-cli-template/master/install.sh)

In order to make the CI work you will need to have the following Secrets in your repository defined:

Repository -> Settings -> Secrets & variables -> CODECOV_TOKEN, DOCKERHUB_TOKEN & DOCKERHUB_USERNAME

Demo Application

$> golang-cli-template -h
golang-cli project template demo application

Usage:
  golang-cli-template [flags]
  golang-cli-template [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  example     example subcommand which adds or multiplies two given integers
  help        Help about any command
  version     golang-cli-template version

Flags:
  -h, --help   help for golang-cli-template

Use "golang-cli-template [command] --help" for more information about a command.
$> golang-cli-template example 2 5 --add
7

$> golang-cli-template example 2 5 --multiply
10

Makefile Targets

$> make
bootstrap                      install build deps
build                          build golang binary
clean                          clean up environment
cover                          display test coverage
docker-build                   dockerize golang application
fmt                            format go files
help                           list makefile targets
install                        install golang binary
lint                           lint go files
pre-commit                     run pre-commit hooks
run                            run the app
test                           display test coverage

Contribute

If you find issues in that setup or have some nice features / improvements, I would welcome an issue or a PR :)