ProductPromotion
Logo

Go.Lang

made by https://0x3d.site

GitHub - kcmvp/gob: Golang project boot
Golang project boot. Contribute to kcmvp/gob development by creating an account on GitHub.
Visit Site

GitHub - kcmvp/gob: Golang project boot

GitHub - kcmvp/gob: Golang project boot

Introduction

Although the Golang programming ecosystem is becoming more and more mature, these tools and frameworks exist independently to solve specific problems. Whenever a new Golang project is started, it requires a series of initialization; What’s worse is that whenever your switch the development environment, same process have to be repeated! This project is built to solve this problem by providing a tool named gbc*, which is similar to Maven or Gradle in the Java ecosystem together with a framework(glue) similar to SpringBoot. Please refer documents for details

Features

  1. Everything is a plugin, you can use any tool you like as a plugin to customize your build process!
  2. Model driver SQL database DAO(data access object).
  3. IoC Container support via samber/do.
  4. Code generation for most popular frameworks scaffolding.
  5. Environment sensitive profile. application.yml for no-test environment and application-test.yml for test environment
  6. Friendly help messages
  7. More ....

What's a gob based project looks like?

Just likeSpringBoot, the most important part of a gob project is the configurations which define your project. There are two main configurations

  1. gob.yaml : it acts as the same as settings.gradle.kts( Gradle) or pom.xml(Maven), you can define any thrid party tool as a plugin in this file.
  2. application.yaml: it acts as the same application.yaml of SpringBoot

Quick Start

  1. Install gbc with below command
    go install github.com/kcmvp/gob/cmd/gbc@latest
  1. Initialize project with below command(in the project home directory)
  gbc init
Git Hooks Dependency Tree

How gbc works

gbc takes everything defined in the gob.yaml as plugin.

flowchart TD
        gbc --> gob.yaml 
        gob.yaml --> plugin1
        gob.yaml --> plugin2
        gob.yaml --> plugin3

You just need to tell gbc 3W(where,when and what)

  1. Where : where to download the tool
  2. When : when to execute to command
  3. What : what to do with the tool

Commands

Build Commands

Plugin Commands

Setup Commands

gbc init

gbc init

Initialize gbc for the project, it will do following initializations

  1. generate file gob.yaml
  2. generate file .golangci.yaml, which is the configuration for golangci-lint
  3. setup git hooks(if project in the source control.)
    1. commit-msg
    2. pre-commit
    3. pre-push

This command can be executed at any time.

Content of gob.yaml

exec:
    commit-msg-hook: ^#[0-9]+:\s*.{10,}$
    pre-commit-hook:
        - lint
        - test
    pre-push-hook:
        - test
plugins:
    golangci-lint:
        alias: lint #When : when issue `gbc lint`
        args: run ./... #What: execute `golangci-lint run ./...`
        url: github.com/golangci/golangci-lint/cmd/[email protected] #Where: where to download the plugin
    gotestsum:
        alias: test
        args: --format testname -- -coverprofile=target/cover.out ./...
        url: gotest.tools/[email protected]

in most cases you don't need to edit the configuration manually. you can achieve this by plugin commands

gbc build

gbc build

This command would build all the candidate binaries(main methods in main packages) to the target folder.

  1. Final binary name is same as go source file name which contains main method
  2. Would fail if there are same name go main source file

gbc clean

gbc clean

This command would clean target folder

gbc test

gbc test

This command would run all tests for the project and generate coverage report at target/cover.html

gbc lint

gbc lint

Run golangci-lint against project based on the configuration, a report named target/lint.log will be generated if there are any violations

gbc deps

gbc deps

List project dependencies tree and indicate there are updates for a specific dependency

gbc plugin install

gbc plugin install github.com/golangci/golangci-lint/cmd/[email protected] lint run ./...

It is an advanced version of go install, which supports multi-version.(eg:golangci-lint-v1.55.2, golangci-lint-v1.55.1)

  1. Install the versioned tool(just the same as go install)
  2. Set up the tool as plugin in gob.yaml
  3. You can update adjust the parameters of the plugin by editing gob.yaml

gob plugin list

gob plugin list

List all the installed plugins

gob setup version

gob setup version

This command will generate file version.go in infra folder, and project version information will be injected into buildVersion when build the project with command gob build

// buildVersion don't change this
var buildVersion string

FAQ

`

Articles
to learn more about the golang concepts.

Resources
which are currently available to browse on.

mail [email protected] to add your project or resources here 🔥.

FAQ's
to know more about the topic.

mail [email protected] to add your project or resources here 🔥.

Queries
or most google FAQ's about GoLang.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory