protoc-go-inject-tag 项目使用教程

protoc-go-inject-tag 项目使用教程

protoc-go-inject-tagInject custom tags to protobuf golang struct项目地址:https://gitcode.com/gh_mirrors/pr/protoc-go-inject-tag

1. 项目的目录结构及介绍

protoc-go-inject-tag/
├── cmd/
│   └── protoc-go-inject-tag/
│       └── main.go
├── internal/
│   └── inject/
│       ├── inject.go
│       ├── inject_test.go
│       └── tag.go
├── go.mod
├── go.sum
└── README.md
  • cmd/: 包含项目的启动文件。
  • internal/: 包含项目的核心逻辑,如标签注入的具体实现。
  • go.modgo.sum: Go 模块文件,用于管理项目的依赖。
  • README.md: 项目的说明文档。

2. 项目的启动文件介绍

项目的启动文件位于 cmd/protoc-go-inject-tag/main.go。该文件主要负责解析命令行参数并调用内部逻辑来注入标签。

package main

import (
    "flag"
    "log"
    "os"

    "github.com/favadi/protoc-go-inject-tag/internal/inject"
)

func main() {
    var (
        input       string
        verbose     bool
        removeTag   bool
        xxxSkipTags string
    )

    flag.StringVar(&input, "input", "", "pattern to match input file(s)")
    flag.BoolVar(&verbose, "verbose", false, "verbose logging")
    flag.BoolVar(&removeTag, "remove_tag_comment", false, "removes tag comments from the generated file(s)")
    flag.StringVar(&xxxSkipTags, "XXX_skip", "", "tags that should be skipped (applies 'tag:\"-\"') for unknown fields (deprecated since protoc-gen-go v1.4.0)")

    flag.Parse()

    if input == "" {
        log.Fatal("input is required")
    }

    if err := inject.Process(input, verbose, removeTag, xxxSkipTags); err != nil {
        log.Fatalf("failed to process: %v", err)
    }
}

3. 项目的配置文件介绍

项目没有传统的配置文件,而是通过命令行参数进行配置。以下是主要的命令行参数:

  • -input: 指定输入文件的模式。
  • -verbose: 启用详细日志输出。
  • -remove_tag_comment: 移除生成的文件中的标签注释。
  • -XXX_skip: 跳过未知字段的标签(已弃用)。

使用示例:

protoc-go-inject-tag -input=./path/to/your/file.pb.go

以上命令将处理指定路径下的 .pb.go 文件,并注入自定义标签。

protoc-go-inject-tagInject custom tags to protobuf golang struct项目地址:https://gitcode.com/gh_mirrors/pr/protoc-go-inject-tag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏滢凝Wayne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值