https://github.com/yangyang5214/blog/issues/1
makefile 很好用,但是有些语法我不会。 go-task yml & shell 不错,推荐
Taskfile.yml
https://github.com/go-task/task/blob/main/.golangci.yml
# 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 modinit: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@latestformat:desc: Format *go codevars: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 -fmtwire:desc: Run wire cmd for appscmds:- for: { var: APPS, as: APP }cmd: cd {{.APP}} && wire ./... && cd -- task formatmod:desc: Downloads and tidy Go modulescmds:- go mod download- go mod tidylint:desc: Run golangci-lintsources:- './**/*.go'- .golangci.ymlcmds:- 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