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

相关推荐
刀法如飞8 小时前
Go数组去重的20种实现方式,AI时代解决问题的不同思路
后端·算法·go
AI编程探险者17 小时前
Go 编译的二进制突然跑不起来了?凶手是 macOS 的 syspolicyd
go
用户3983461612020 小时前
10 个示例快速入门 Go-Spring|v1.3.0 正式发布
go
zhouwy1132 天前
Golang 基础与实战笔记:从语法到微服务的全面指南
开发语言·go
日火3 天前
Go:实现基于mutex的环形缓冲区
go
审判长烧鸡4 天前
GO错误处理【7】层层递进,环环相扣
go·报错处理
审判长烧鸡4 天前
Go结构体与指针【3】自动解引用
go·指针·结构体·自动解引用
审判长烧鸡4 天前
【GO VS PHP】之 指针/引用传递
go·php·指针·引用传递
审判长烧鸡4 天前
GO错误处理【4】报错即链条
go·异常处理·错误处理
审判长烧鸡5 天前
GO时区【1】定义与使用
go·时区