gotaskr
golang-standards/project-layout
Our great sponsors
gotaskr | golang-standards/project-layout | |
---|---|---|
8 | 195 | |
17 | 45,852 | |
- | 2.2% | |
6.9 | 6.4 | |
about 2 months ago | about 2 months ago | |
Go | Makefile | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gotaskr
-
Generic Task Runner in Go -> gotaskr
Feel free to head over to GitHub and check the wiki for more details and I would be happy to get feedback or improvement ideas for gotaskr.
-
Build / Makefile templates for Go monorepo?
I created https://github.com/Roemer/gotaskr for that and we are very happy with it for a very complex build system. Give it a try if you want.
-
Is your makefile supposed to be a justfile?
May I present my alternative https://github.com/Roemer/gotaskr It is kind of similar to magefile but provides some other features similar to cake build and inbuilt tools useful for devops. And also it is a plain go program so no magic compilation in the background. It replaced basically 100 bash files in our rather complex build/deploy setup. Sometimes a declarative approach is just not enough.
-
Unpopular opinion: CI/CD engines are an awful idea
I have used many CI systems on large scale and to be honest, Jenkins is still my favorite. Everything you need is provided and works. You have 100% control over the workflow. With code. All those declarative yaml based ones need sooooo much workarounds to get more complex workflows to run and often you are just stuck with a less optimal solution. Beside the build workflow, we do not write any build logic in the ci engine but use external code runners instead. For .Net I used Cake or Nuke build for example but now my absolute preference for build logic is go. There we use a task runner like gotaskr. This helps having the build logic centralized and usually you can also run different build tasks locally to debug and test them. Also with go, you don‘t need any runtime to run the logic. Just build the task runner once and then you can copy the binary anywhere (eg for parallel build tasks) and just run it. This is optimal to integrate it in Docker base builds so you don‘t need to change the base image at all.
-
Task runner like go-task/task, but in pure Go, no external DSLs
May I present my solution: https://github.com/Roemer/gotaskr Heavily inspired by cake build. It has no compile magic anywhere. Just write your go file and run the tasks in it. Or build it and re-use it in a ci for example.
-
Utility library, most gopher way for namespaces/packages
The current refactoring is in: https://github.com/Roemer/gotaskr/tree/feature/toolsrefactoring
-
Any open source projects need help ?
I'm a go youngling that tried to create a task runner (inspired by cake build for .net) in go as an alternative to magefile. What I would like is to get some feedback about how it is implemented and if there are go-principles that are violated and where the code should be improved. So if you want to do some reviewing, feel free to have a look at https://github.com/Roemer/gotaskr
golang-standards/project-layout
-
The power of the CLI with Golang and Cobra CLI
cmd: here where we will leave the main.go that starts our app.
-
What's your go to literature to build Go libraries?
> https://github.com/golang-standards/project-layout
The name of the repo is really and intentionally misleading. rsc filled an issue there to point this out, but the repo maintainer just disabled issues altogether so now no one can see it.
Even when it would not have such parasitic name, many seasoned Go programmers, me included, consider the self-proclaimed "Standard Go project Layout" as the opposite of what is good and advisable.
Unfortunately, the name just works, so it is being recommended all over the Internet since its inception.
-
"14 Years of Go" by Rob Pike
Your comment makes it look as if you're saying you hate the Go development team, but it seems that isn't the case.
I get a little of what you're saying, I wouldn't say I hate anyone, but I strongly dislike how a lot of projects are organized. I think a lot stems from https://github.com/golang-standards/project-layout , which pretended to be standard and was so (ab)used one of the creators opened an issue about it. If you look at the actual Go src, it's much, much cleaner.
-
Looking for elegant code bases written in GoLang
So you don't get blind sided for self proclaimed "standards" that are not
- I'm coming from Java and I have been told that I'm writing go like I'm writing Java. Basically creating structs, injecting fields, and attaching methods. What else can I do?
- O poder do CLI com Golang e Cobra CLI
- Como deixar o Swagger com tema dark mode usando Swaggo e Golang
-
Can I point a module to a subdirectory?
I am writing a project that has two components: a CLI and a library. I've organised the project as follows (as per organisation instructions):
-
How To Build A Containerized Microservice in Golang: A Step-by-step Guide with Example Use-Case
Familiarity with the standard Golang project structure, which you can find here.
-
Building RESTful API with Hexagonal Architecture in Go
I've been learning how to build web applications using different frameworks and languages for a while now, such as Laravel with its MVC architecture and Node.js following the 'Hapi.js Way'. As I'm trying to create a new portfolio project using Go, I found myself contemplating over the ideal project structure. I wanted something that not only aligns with the standard Go project layout, but also makes the code both easy to write and understand. That's when I stumbled upon the concept of Hexagonal Architecture, as showcased in Netflix's engineering blog. The idea of seamlessly swapping infrastructures with minimal code changes fascinated me, and I decided to implement it in my new project.
What are some alternatives?
weaver - Programming framework for writing and deploying cloud applications.
uber-go-style-guide-kr - Uber's Go Style Guide Official Translation in Korean. Linked to the uber-go/guide as a part of contributions
go-gitlab - GitLab Go SDK
modern-go-application - Modern Go Application example
kertish-dfs - Kertish-dfs is a simple distributed storage platform, implements file storage on a single distributed computer cluster, and provides interfaces for file/folder handling. Kertish-dfs aims primarily for completely distributed operation without a single point of failure, scalable to the exabyte level.
uber-go-style-guide-th - Uber's Go Style Guide Translation in Thai. Linked to the uber-go/guide as a part of contributions https://github.com/uber-go/guide
devtron - Tool integration platform for Kubernetes
go-restful-api - An idiomatic Go REST API starter kit (boilerplate) following the SOLID principles and Clean Architecture
ziti - The parent project for OpenZiti. Here you will find the executables for a fully zero trust, application embedded, programmable network @OpenZiti
cookiecutter-golang - A Go project template
mkdkr - mkdkr = Makefile + Docker
service - Starter-kit for writing services in Go using Kubernetes.