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

相关推荐
avilang16 小时前
如何在 Go 1.24+ 中管理 tool 依赖
go
程序员爱钓鱼17 小时前
用 Go 做浏览器自动化?chromedp 带你飞!
后端·go·trae
小信啊啊1 天前
Go语言结构体
golang·go
moxiaoran57532 天前
Go语言的常量
go
武大打工仔2 天前
如何理解 Golang 中的 Context?
go
Java陈序员3 天前
精致简约!一款优雅的开源云盘系统!
mysql·docker·开源·go·云盘
捧 花3 天前
Go语言模板的使用
golang·go·template method·模板·web app
凉凉的知识库3 天前
在Go中读取MySQL Date类型,一不小心就踩坑
mysql·面试·go
51974 天前
goup是一个纯Rust编写的优雅的Go多版本管理工具
go