proto-filter

command module
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 23, 2019 License: Apache-2.0 Imports: 11 Imported by: 0

README

Proto-filter

Proto-filter is a protobuf pre-processor that allows you to filter out items in a proto file based on terms. This can be useful if you have a service that has private methods that you wish to keep hidden from certain clients. Most of what this tool does can also be achieved by just structuring your proto files differently. It is mostly just an exercise for me to better understand the internals of protocol buffers.

Filtering Rules

The tool will filter items according to the following logic (in this exact order of priority):

  • Items without the option present will be included in the output (never filtered)
  • Items that have the filtered term marked as excluded will be removed
  • Items that have the filtered term marked as included will be included in the output

This means that an exclude rule will take priority over an include rule in case there is a conflict.

Example Usage

Consider the following test.proto file

syntax = "proto3";

package com.test;

import "filter/filter.proto"; // Adds filter option

option go_package = "example.protobuf.test";

message Test {
    string jp_string = 1 [(filter.field) = {exclude: ["NA"]}];
    string na_string = 2 [(filter.field) = {include: ["NA"]}];
    Empty nothing = 3;
}

Processed by the following command

proto-filter -i . -term NA test.proto

Will result in

syntax = "proto3";

package com.test;

import "filter/filter.proto"; // Adds filter option

option go_package = "example.protobuf.test";

message Test {
    string na_string = 2 [(filter.field) = {include: ["NA"]}];
    Empty nothing = 3;
}

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL