Taskfile demo

https://github.com/yangyang5214/blog/issues/1

makefile 很好用,但是有些语法我不会。 go-task yml & shell 不错,推荐

Taskfile.yml

https://github.com/go-task/task/blob/main/.golangci.yml

yaml 复制代码
# go install github.com/go-task/task/v3/cmd/task@latest
version: '3'

vars:
  APPS: { sh: find app -maxdepth 1 -mindepth 1 -type d -print | xargs -L 1 }
  MODULE_NAME: { sh: go list -m }

tasks:
  desc: init go mod
  init:
    cmds:
      - go get -u google.golang.org/protobuf/cmd/protoc-gen-go
      - go get -u google.golang.org/grpc/cmd/protoc-gen-go-grpc
      - go get -u github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2
      - go get -u github.com/google/wire/cmd/wire
      - go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
      - go get -u github.com/envoyproxy/protoc-gen-validate
      - go get -u github.com/go-kratos/kratos/cmd/protoc-gen-go-errors/v2
      - go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
      - go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
      - go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest
      - go install github.com/envoyproxy/protoc-gen-validate@latest
      - go install github.com/google/wire/cmd/wire@latest

  format:
    desc: Format *go code
    vars:
      GO_FILES: "find . ! -path './vendor/*' -type f -name '*.go'"
    cmds:
      - ({{.GO_FILES}} | xargs gofmt -s -w)
      - ({{.GO_FILES}} | xargs gci write --section Standard --section Default --section "Prefix({{.MODULE_NAME}})")
      - ({{.GO_FILES}} | xargs golines -w --max-len=180 --reformat-tags --shorten-comments --ignore-generated)
      - go mod edit -fmt

  wire:
    desc: Run wire cmd for apps
    cmds:
      - for: { var: APPS, as: APP }
        cmd: cd {{.APP}} && wire ./... && cd -
      - task format

  mod:
    desc: Downloads and tidy Go modules
    cmds:
      - go mod download
      - go mod tidy

  lint:
    desc: Run golangci-lint
    sources:
      - './**/*.go'
      - .golangci.yml
    cmds:
      - golangci-lint run

add zsh completion

https://github.com/sawadashota/go-task-completions

Clone the repository inside your oh-my-zsh repo:

复制代码
git clone https://github.com/sawadashota/go-task-completions.git ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/task

Enable it in your .zshrc by adding it to your plugin list and reloading the completion:

复制代码
# ... 是之前已经存在的 plugin 
# 例如我的修改为 plugins=(git task)
plugins=(... task)
autoload -U compinit && compinit

Reference

https://github.com/go-task/task/issues/103 Add Bash, ZSH and Windows command line completion #103

相关推荐
光头闪亮亮16 小时前
ZBar 条码/二维码识别工具介绍及golang通过cmd调用ZBar从图片中批量识别二维码
go
东风t西瓜18 小时前
golang项目开发环境配置
go
zhuyasen2 天前
在某些 Windows 版本,Go 1.25.x 编译出来的 exe 运行报错:此应用无法在你的电脑上运行
windows·go·编译器
用户89535603282202 天前
深入浅出 Go slices 包:类型安全、内存安全与高性能实践
go
王中阳Go2 天前
Python 的 PyPy 能追上 Go 的性能吗?
后端·python·go
gopyer3 天前
180课时吃透Go语言游戏后端开发11:Go语言中的并发编程
golang·go·游戏开发·并发编程
Java陈序员3 天前
简单好用!一款针对 IT 团队开发的文档管理系统!
mysql·docker·go
程序员爱钓鱼3 天前
Go语言实战案例——进阶与部署篇:性能优化与 pprof 性能分析实践
后端·google·go
程序员爱钓鱼4 天前
Go语言实战案例——进阶与部署篇:使用Go编写系统服务(如守护进程)
后端·google·go
n8n5 天前
Go语言GC调优全面指南
go