Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d9ff256 authored by LaMont Jones's avatar LaMont Jones
Browse files

Generate specific message for build flag declarations artifact

Many of the fields in `flag_artifact` are not valid in
the all_build_flag_definitions artifact.

Bug: 328495189
Test: manual
Change-Id: I00eab1ef76f67f7db2118a6fc0d5771e3dd39fbb
parent 44789260
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ func main() {
		(*flagArtifacts)[*fa.FlagDeclaration.Name] = fa
	}

	message := flagArtifacts.GenerateFlagArtifacts()
	message := flagArtifacts.GenerateFlagDeclarationArtifacts()
	err = rc_lib.WriteFormattedMessage(flags.output, flags.format, message)
	if err != nil {
		errorExit(err)
+20 −11
Original line number Diff line number Diff line
@@ -82,24 +82,33 @@ func FlagArtifactsFactory(artifactsPath string) *FlagArtifacts {
	return &ret
}

func (fa *FlagArtifact) GenerateFlagArtifact() *rc_proto.FlagArtifact {
	ret := &rc_proto.FlagArtifact{FlagDeclaration: fa.FlagDeclaration}
	if fa.Value != nil {
		ret.Value = fa.Value
func (fa *FlagArtifact) GenerateFlagDeclarationArtifact() *rc_proto.FlagDeclarationArtifact {
	ret := &rc_proto.FlagDeclarationArtifact{
		Name:            fa.FlagDeclaration.Name,
		DeclarationPath: fa.Traces[0].Source,
	}
	if len(fa.Traces) > 0 {
		ret.Traces = fa.Traces
	if namespace := fa.FlagDeclaration.GetNamespace(); namespace != "" {
		ret.Namespace = proto.String(namespace)
	}
	if description := fa.FlagDeclaration.GetDescription(); description != "" {
		ret.Description = proto.String(description)
	}
	if workflow := fa.FlagDeclaration.GetWorkflow(); workflow != rc_proto.Workflow_Workflow_Unspecified {
		ret.Workflow = &workflow
	}
	if containers := fa.FlagDeclaration.GetContainers(); containers != nil {
		ret.Containers = containers
	}
	return ret
}

func (fas *FlagArtifacts) GenerateFlagArtifacts() *rc_proto.FlagArtifacts {
	ret := &rc_proto.FlagArtifacts{FlagArtifacts: []*rc_proto.FlagArtifact{}}
func (fas *FlagArtifacts) GenerateFlagDeclarationArtifacts() *rc_proto.FlagDeclarationArtifacts {
	ret := &rc_proto.FlagDeclarationArtifacts{FlagDeclarationArtifacts: []*rc_proto.FlagDeclarationArtifact{}}
	for _, fa := range *fas {
		ret.FlagArtifacts = append(ret.FlagArtifacts, fa.GenerateFlagArtifact())
		ret.FlagDeclarationArtifacts = append(ret.FlagDeclarationArtifacts, fa.GenerateFlagDeclarationArtifact())
	}
	slices.SortFunc(ret.FlagArtifacts, func(a, b *rc_proto.FlagArtifact) int {
		return cmp.Compare(*a.FlagDeclaration.Name, *b.FlagDeclaration.Name)
	slices.SortFunc(ret.FlagDeclarationArtifacts, func(a, b *rc_proto.FlagDeclarationArtifact) int {
		return cmp.Compare(*a.Name, *b.Name)
	})
	return ret
}
+2 −0
Original line number Diff line number Diff line
@@ -24,6 +24,8 @@ bootstrap_go_package {
        "golang-protobuf-runtime-protoimpl",
    ],
    srcs: [
        "build_flags_common.pb.go",
        "build_flags_declarations.pb.go",
        "build_flags_src.pb.go",
        "build_flags_out.pb.go",
    ],
+169 −0
Original line number Diff line number Diff line
//
// Copyright (C) 2024 The Android Open-Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.30.0
// 	protoc        v3.21.12
// source: build_flags_common.proto

package release_config_proto

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 Workflow int32

const (
	Workflow_Workflow_Unspecified Workflow = 0
	// Boolean value flags that progress from false to true.
	Workflow_LAUNCH Workflow = 1
	// String value flags that get updated with new version strings to control
	// prebuilt inclusion.
	Workflow_PREBUILT Workflow = 2
	// Manually managed outside flags.  These are likely to be found in a
	// different directory than flags with other workflows.
	Workflow_MANUAL Workflow = 3
)

// Enum value maps for Workflow.
var (
	Workflow_name = map[int32]string{
		0: "Workflow_Unspecified",
		1: "LAUNCH",
		2: "PREBUILT",
		3: "MANUAL",
	}
	Workflow_value = map[string]int32{
		"Workflow_Unspecified": 0,
		"LAUNCH":               1,
		"PREBUILT":             2,
		"MANUAL":               3,
	}
)

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

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

func (Workflow) Descriptor() protoreflect.EnumDescriptor {
	return file_build_flags_common_proto_enumTypes[0].Descriptor()
}

func (Workflow) Type() protoreflect.EnumType {
	return &file_build_flags_common_proto_enumTypes[0]
}

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

// Deprecated: Do not use.
func (x *Workflow) UnmarshalJSON(b []byte) error {
	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
	if err != nil {
		return err
	}
	*x = Workflow(num)
	return nil
}

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

var File_build_flags_common_proto protoreflect.FileDescriptor

var file_build_flags_common_proto_rawDesc = []byte{
	0x0a, 0x18, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x5f, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x61, 0x6e, 0x64, 0x72,
	0x6f, 0x69, 0x64, 0x2e, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0x4a, 0x0a, 0x08, 0x77, 0x6f, 0x72, 0x6b,
	0x66, 0x6c, 0x6f, 0x77, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77,
	0x5f, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x0a,
	0x0a, 0x06, 0x4c, 0x41, 0x55, 0x4e, 0x43, 0x48, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x52,
	0x45, 0x42, 0x55, 0x49, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55,
	0x41, 0x4c, 0x10, 0x03, 0x42, 0x33, 0x5a, 0x31, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x2f,
	0x73, 0x6f, 0x6f, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x2f, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e,
	0x66, 0x69, 0x67, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
}

var (
	file_build_flags_common_proto_rawDescOnce sync.Once
	file_build_flags_common_proto_rawDescData = file_build_flags_common_proto_rawDesc
)

func file_build_flags_common_proto_rawDescGZIP() []byte {
	file_build_flags_common_proto_rawDescOnce.Do(func() {
		file_build_flags_common_proto_rawDescData = protoimpl.X.CompressGZIP(file_build_flags_common_proto_rawDescData)
	})
	return file_build_flags_common_proto_rawDescData
}

var file_build_flags_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_build_flags_common_proto_goTypes = []interface{}{
	(Workflow)(0), // 0: android.release_config_proto.workflow
}
var file_build_flags_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_build_flags_common_proto_init() }
func file_build_flags_common_proto_init() {
	if File_build_flags_common_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_build_flags_common_proto_rawDesc,
			NumEnums:      1,
			NumMessages:   0,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_build_flags_common_proto_goTypes,
		DependencyIndexes: file_build_flags_common_proto_depIdxs,
		EnumInfos:         file_build_flags_common_proto_enumTypes,
	}.Build()
	File_build_flags_common_proto = out.File
	file_build_flags_common_proto_rawDesc = nil
	file_build_flags_common_proto_goTypes = nil
	file_build_flags_common_proto_depIdxs = nil
}
+36 −0
Original line number Diff line number Diff line
//
// Copyright (C) 2024 The Android Open-Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto2";
package android.release_config_proto;
option go_package = "android/soong/release_config/release_config_proto";

// This protobuf file defines common messages used in the rest of the build flag
// protos.

enum workflow {
  Workflow_Unspecified = 0;

  // Boolean value flags that progress from false to true.
  LAUNCH = 1;

  // String value flags that get updated with new version strings to control
  // prebuilt inclusion.
  PREBUILT = 2;

  // Manually managed outside flags.  These are likely to be found in a
  // different directory than flags with other workflows.
  MANUAL = 3;
}
Loading