diff options
author | 2021-11-10 09:55:20 -0500 | |
---|---|---|
committer | 2021-12-13 13:03:44 -0500 | |
commit | 947fdbfdeee21cbb6490b01f3c2175bb039995c9 (patch) | |
tree | bd1c80236253e3b2cd562d9d78dee8df7e229d1b /shared | |
parent | 484aa2587575006b33cd76b29c79c5aad8358090 (diff) |
Log bp2build_metrics .pb
Also share `Save(pb proto.Message, filepath string)`
Bug: 201539536
Test: bp2build_metrics.pb has expected content & path
Test: m nothing
Test: {bp2build,mixed_{libc,droid}}.sh
Test: CI
Change-Id: I7d8ad87fca6a4b0355010090a527f5ae67b27c88
Diffstat (limited to 'shared')
-rw-r--r-- | shared/Android.bp | 2 | ||||
-rw-r--r-- | shared/proto.go | 41 |
2 files changed, 43 insertions, 0 deletions
diff --git a/shared/Android.bp b/shared/Android.bp index deb17f8f6..3c84f5532 100644 --- a/shared/Android.bp +++ b/shared/Android.bp @@ -9,11 +9,13 @@ bootstrap_go_package { "env.go", "paths.go", "debug.go", + "proto.go", ], testSrcs: [ "paths_test.go", ], deps: [ "soong-bazel", + "golang-protobuf-proto", ], } diff --git a/shared/proto.go b/shared/proto.go new file mode 100644 index 000000000..232656ba4 --- /dev/null +++ b/shared/proto.go @@ -0,0 +1,41 @@ +// Copyright 2021 Google Inc. All rights reserved. +// +// 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. + +package shared + +import ( + "io/ioutil" + "os" + + "google.golang.org/protobuf/proto" +) + +// Save takes a protobuf message, marshals to an array of bytes +// and is then saved to a file. +func Save(pb proto.Message, filepath string) (err error) { + data, err := proto.Marshal(pb) + if err != nil { + return err + } + tempFilepath := filepath + ".tmp" + if err := ioutil.WriteFile(tempFilepath, []byte(data), 0644 /* rw-r--r-- */); err != nil { + return err + } + + if err := os.Rename(tempFilepath, filepath); err != nil { + return err + } + + return nil +} |