// Copyright 2020 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: chromiumos/repo_cache_state.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 state of the tree.
type RepoState_State int32

const (
	// Unknown: Treated as if it was DIRTY.
	RepoState_STATE_UNSPECIFIED RepoState_State = 0
	// Clean.  The tree is clean.
	RepoState_STATE_CLEAN RepoState_State = 1
	// Dirty.  The tree is in the process of being updated.
	RepoState_STATE_DIRTY RepoState_State = 2
	// Recovery.  Recovery from DIRTY is in progress.
	RepoState_STATE_RECOVERY RepoState_State = 3
)

// Enum value maps for RepoState_State.
var (
	RepoState_State_name = map[int32]string{
		0: "STATE_UNSPECIFIED",
		1: "STATE_CLEAN",
		2: "STATE_DIRTY",
		3: "STATE_RECOVERY",
	}
	RepoState_State_value = map[string]int32{
		"STATE_UNSPECIFIED": 0,
		"STATE_CLEAN":       1,
		"STATE_DIRTY":       2,
		"STATE_RECOVERY":    3,
	}
)

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

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

func (RepoState_State) Descriptor() protoreflect.EnumDescriptor {
	return file_chromiumos_repo_cache_state_proto_enumTypes[0].Descriptor()
}

func (RepoState_State) Type() protoreflect.EnumType {
	return &file_chromiumos_repo_cache_state_proto_enumTypes[0]
}

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

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

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

	State RepoState_State `protobuf:"varint,1,opt,name=state,proto3,enum=chromiumos.RepoState_State" json:"state,omitempty"`
	// The checked out branch.
	ManifestBranch string `protobuf:"bytes,2,opt,name=manifest_branch,json=manifestBranch,proto3" json:"manifest_branch,omitempty"`
	// The manifest URL.
	ManifestUrl string `protobuf:"bytes,3,opt,name=manifest_url,json=manifestUrl,proto3" json:"manifest_url,omitempty"`
}

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

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

func (*RepoState) ProtoMessage() {}

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

func (x *RepoState) GetState() RepoState_State {
	if x != nil {
		return x.State
	}
	return RepoState_STATE_UNSPECIFIED
}

func (x *RepoState) GetManifestBranch() string {
	if x != nil {
		return x.ManifestBranch
	}
	return ""
}

func (x *RepoState) GetManifestUrl() string {
	if x != nil {
		return x.ManifestUrl
	}
	return ""
}

var File_chromiumos_repo_cache_state_proto protoreflect.FileDescriptor

var file_chromiumos_repo_cache_state_proto_rawDesc = []byte{
	0x0a, 0x21, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x70,
	0x6f, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x22,
	0xe0, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x31, 0x0a,
	0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x63,
	0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x6f, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74,
	0x61, 0x74, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x72, 0x61,
	0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x61, 0x6e, 0x69, 0x66,
	0x65, 0x73, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e,
	0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x55, 0x72, 0x6c, 0x22, 0x54, 0x0a, 0x05,
	0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b,
	0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x01, 0x12, 0x0f, 0x0a,
	0x0b, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x54, 0x59, 0x10, 0x02, 0x12, 0x12,
	0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59,
	0x10, 0x03, 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_repo_cache_state_proto_rawDescOnce sync.Once
	file_chromiumos_repo_cache_state_proto_rawDescData = file_chromiumos_repo_cache_state_proto_rawDesc
)

func file_chromiumos_repo_cache_state_proto_rawDescGZIP() []byte {
	file_chromiumos_repo_cache_state_proto_rawDescOnce.Do(func() {
		file_chromiumos_repo_cache_state_proto_rawDescData = protoimpl.X.CompressGZIP(file_chromiumos_repo_cache_state_proto_rawDescData)
	})
	return file_chromiumos_repo_cache_state_proto_rawDescData
}

var file_chromiumos_repo_cache_state_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_chromiumos_repo_cache_state_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_chromiumos_repo_cache_state_proto_goTypes = []interface{}{
	(RepoState_State)(0), // 0: chromiumos.RepoState.State
	(*RepoState)(nil),    // 1: chromiumos.RepoState
}
var file_chromiumos_repo_cache_state_proto_depIdxs = []int32{
	0, // 0: chromiumos.RepoState.state:type_name -> chromiumos.RepoState.State
	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_repo_cache_state_proto_init() }
func file_chromiumos_repo_cache_state_proto_init() {
	if File_chromiumos_repo_cache_state_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_chromiumos_repo_cache_state_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RepoState); 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_repo_cache_state_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   1,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_chromiumos_repo_cache_state_proto_goTypes,
		DependencyIndexes: file_chromiumos_repo_cache_state_proto_depIdxs,
		EnumInfos:         file_chromiumos_repo_cache_state_proto_enumTypes,
		MessageInfos:      file_chromiumos_repo_cache_state_proto_msgTypes,
	}.Build()
	File_chromiumos_repo_cache_state_proto = out.File
	file_chromiumos_repo_cache_state_proto_rawDesc = nil
	file_chromiumos_repo_cache_state_proto_goTypes = nil
	file_chromiumos_repo_cache_state_proto_depIdxs = nil
}
