// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.25.0-devel
// 	protoc        v3.6.1
// source: testplans/common.proto

package testplans

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ProtoBytes struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SerializedProto []byte `protobuf:"bytes,1,opt,name=serialized_proto,json=serializedProto,proto3" json:"serialized_proto,omitempty"`
}

func (x *ProtoBytes) Reset() {
	*x = ProtoBytes{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testplans_common_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ProtoBytes) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProtoBytes) ProtoMessage() {}

func (x *ProtoBytes) ProtoReflect() protoreflect.Message {
	mi := &file_testplans_common_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ProtoBytes.ProtoReflect.Descriptor instead.
func (*ProtoBytes) Descriptor() ([]byte, []int) {
	return file_testplans_common_proto_rawDescGZIP(), []int{0}
}

func (x *ProtoBytes) GetSerializedProto() []byte {
	if x != nil {
		return x.SerializedProto
	}
	return nil
}

type FilePattern struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Bash pattern for matching a file in the chromiumos checkout.
	// This may make use of globstar (i.e. **) notation to match against many
	// subdirectories at once. The pattern will be matched against a full
	// relative path in the chromiumos checkout.
	// e.g.
	// chromite/config/** to match anything under chromite/config/
	// **/OWNERS to match any OWNERS file
	// **/*.md to match any .md file
	// src/somefile.java to match a specific file
	Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"`
	// Bash patterns that exclude files in the chromiumos checkout from a match.
	//
	// A file in the chromiumos checkout is considered a match iff:
	// 1. It matches pattern.
	// 2. It doesn't match any of exclude_patterns.
	//
	// The matching rules of exclude_patterns are the same as patterns, e.g.
	// globstar is allowed.
	ExcludePatterns []string `protobuf:"bytes,2,rep,name=exclude_patterns,json=excludePatterns,proto3" json:"exclude_patterns,omitempty"`
}

func (x *FilePattern) Reset() {
	*x = FilePattern{}
	if protoimpl.UnsafeEnabled {
		mi := &file_testplans_common_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *FilePattern) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*FilePattern) ProtoMessage() {}

func (x *FilePattern) ProtoReflect() protoreflect.Message {
	mi := &file_testplans_common_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use FilePattern.ProtoReflect.Descriptor instead.
func (*FilePattern) Descriptor() ([]byte, []int) {
	return file_testplans_common_proto_rawDescGZIP(), []int{1}
}

func (x *FilePattern) GetPattern() string {
	if x != nil {
		return x.Pattern
	}
	return ""
}

func (x *FilePattern) GetExcludePatterns() []string {
	if x != nil {
		return x.ExcludePatterns
	}
	return nil
}

var File_testplans_common_proto protoreflect.FileDescriptor

var file_testplans_common_proto_rawDesc = []byte{
	0x0a, 0x16, 0x74, 0x65, 0x73, 0x74, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x74, 0x65, 0x73, 0x74, 0x70, 0x6c,
	0x61, 0x6e, 0x73, 0x22, 0x37, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x79, 0x74, 0x65,
	0x73, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x65, 0x72,
	0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x52, 0x0a, 0x0b,
	0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70,
	0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61,
	0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65,
	0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73,
	0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e,
	0x6f, 0x72, 0x67, 0x2f, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x69,
	0x6e, 0x66, 0x72, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65,
	0x73, 0x74, 0x70, 0x6c, 0x61, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_testplans_common_proto_rawDescOnce sync.Once
	file_testplans_common_proto_rawDescData = file_testplans_common_proto_rawDesc
)

func file_testplans_common_proto_rawDescGZIP() []byte {
	file_testplans_common_proto_rawDescOnce.Do(func() {
		file_testplans_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_testplans_common_proto_rawDescData)
	})
	return file_testplans_common_proto_rawDescData
}

var file_testplans_common_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
var file_testplans_common_proto_goTypes = []interface{}{
	(*ProtoBytes)(nil),  // 0: testplans.ProtoBytes
	(*FilePattern)(nil), // 1: testplans.FilePattern
}
var file_testplans_common_proto_depIdxs = []int32{
	0, // [0:0] is the sub-list for method output_type
	0, // [0:0] is the sub-list for method input_type
	0, // [0:0] is the sub-list for extension type_name
	0, // [0:0] is the sub-list for extension extendee
	0, // [0:0] is the sub-list for field type_name
}

func init() { file_testplans_common_proto_init() }
func file_testplans_common_proto_init() {
	if File_testplans_common_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_testplans_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ProtoBytes); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_testplans_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*FilePattern); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_testplans_common_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   2,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_testplans_common_proto_goTypes,
		DependencyIndexes: file_testplans_common_proto_depIdxs,
		MessageInfos:      file_testplans_common_proto_msgTypes,
	}.Build()
	File_testplans_common_proto = out.File
	file_testplans_common_proto_rawDesc = nil
	file_testplans_common_proto_goTypes = nil
	file_testplans_common_proto_depIdxs = nil
}
