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

package chromiumos

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)
)

// The types of branches that can be created.
type Branch_BranchType int32

const (
	Branch_UNSPECIFIED Branch_BranchType = 0
	Branch_RELEASE     Branch_BranchType = 1
	Branch_FACTORY     Branch_BranchType = 2
	Branch_FIRMWARE    Branch_BranchType = 3
	Branch_STABILIZE   Branch_BranchType = 4
	Branch_CUSTOM      Branch_BranchType = 5
)

// Enum value maps for Branch_BranchType.
var (
	Branch_BranchType_name = map[int32]string{
		0: "UNSPECIFIED",
		1: "RELEASE",
		2: "FACTORY",
		3: "FIRMWARE",
		4: "STABILIZE",
		5: "CUSTOM",
	}
	Branch_BranchType_value = map[string]int32{
		"UNSPECIFIED": 0,
		"RELEASE":     1,
		"FACTORY":     2,
		"FIRMWARE":    3,
		"STABILIZE":   4,
		"CUSTOM":      5,
	}
)

func (x Branch_BranchType) Enum() *Branch_BranchType {
	p := new(Branch_BranchType)
	*p = x
	return p
}

func (x Branch_BranchType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (Branch_BranchType) Descriptor() protoreflect.EnumDescriptor {
	return file_chromiumos_branch_proto_enumTypes[0].Descriptor()
}

func (Branch_BranchType) Type() protoreflect.EnumType {
	return &file_chromiumos_branch_proto_enumTypes[0]
}

func (x Branch_BranchType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use Branch_BranchType.Descriptor instead.
func (Branch_BranchType) EnumDescriptor() ([]byte, []int) {
	return file_chromiumos_branch_proto_rawDescGZIP(), []int{0, 0}
}

// A message to specify branches.
type Branch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Type of branch.
	Type Branch_BranchType `protobuf:"varint,1,opt,name=type,proto3,enum=chromiumos.Branch_BranchType" json:"type,omitempty"`
	// Name of branch.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// Branch descriptor (usually a build target or device name).
	// Optional.
	Descriptor_ string `protobuf:"bytes,3,opt,name=descriptor,proto3" json:"descriptor,omitempty"`
}

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

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

func (*Branch) ProtoMessage() {}

func (x *Branch) ProtoReflect() protoreflect.Message {
	mi := &file_chromiumos_branch_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 Branch.ProtoReflect.Descriptor instead.
func (*Branch) Descriptor() ([]byte, []int) {
	return file_chromiumos_branch_proto_rawDescGZIP(), []int{0}
}

func (x *Branch) GetType() Branch_BranchType {
	if x != nil {
		return x.Type
	}
	return Branch_UNSPECIFIED
}

func (x *Branch) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Branch) GetDescriptor_() string {
	if x != nil {
		return x.Descriptor_
	}
	return ""
}

var File_chromiumos_branch_proto protoreflect.FileDescriptor

var file_chromiumos_branch_proto_rawDesc = []byte{
	0x0a, 0x17, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x62, 0x72, 0x61,
	0x6e, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x63, 0x68, 0x72, 0x6f, 0x6d,
	0x69, 0x75, 0x6d, 0x6f, 0x73, 0x22, 0xd1, 0x01, 0x0a, 0x06, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68,
	0x12, 0x31, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d,
	0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x42, 0x72, 0x61, 0x6e,
	0x63, 0x68, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74,
	0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73,
	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x22, 0x60, 0x0a, 0x0a, 0x42, 0x72, 0x61, 0x6e, 0x63,
	0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x4c, 0x45, 0x41, 0x53,
	0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x02,
	0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x10, 0x03, 0x12, 0x0d,
	0x0a, 0x09, 0x53, 0x54, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x5a, 0x45, 0x10, 0x04, 0x12, 0x0a, 0x0a,
	0x06, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x05, 0x42, 0x36, 0x5a, 0x34, 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, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f,
	0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_chromiumos_branch_proto_rawDescOnce sync.Once
	file_chromiumos_branch_proto_rawDescData = file_chromiumos_branch_proto_rawDesc
)

func file_chromiumos_branch_proto_rawDescGZIP() []byte {
	file_chromiumos_branch_proto_rawDescOnce.Do(func() {
		file_chromiumos_branch_proto_rawDescData = protoimpl.X.CompressGZIP(file_chromiumos_branch_proto_rawDescData)
	})
	return file_chromiumos_branch_proto_rawDescData
}

var file_chromiumos_branch_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_chromiumos_branch_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_chromiumos_branch_proto_goTypes = []interface{}{
	(Branch_BranchType)(0), // 0: chromiumos.Branch.BranchType
	(*Branch)(nil),         // 1: chromiumos.Branch
}
var file_chromiumos_branch_proto_depIdxs = []int32{
	0, // 0: chromiumos.Branch.type:type_name -> chromiumos.Branch.BranchType
	1, // [1:1] is the sub-list for method output_type
	1, // [1:1] is the sub-list for method input_type
	1, // [1:1] is the sub-list for extension type_name
	1, // [1:1] is the sub-list for extension extendee
	0, // [0:1] is the sub-list for field type_name
}

func init() { file_chromiumos_branch_proto_init() }
func file_chromiumos_branch_proto_init() {
	if File_chromiumos_branch_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_chromiumos_branch_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Branch); 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_chromiumos_branch_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_chromiumos_branch_proto_goTypes,
		DependencyIndexes: file_chromiumos_branch_proto_depIdxs,
		EnumInfos:         file_chromiumos_branch_proto_enumTypes,
		MessageInfos:      file_chromiumos_branch_proto_msgTypes,
	}.Build()
	File_chromiumos_branch_proto = out.File
	file_chromiumos_branch_proto_rawDesc = nil
	file_chromiumos_branch_proto_goTypes = nil
	file_chromiumos_branch_proto_depIdxs = nil
}
