summaryrefslogtreecommitdiff
path: root/shared/env.go
diff options
context:
space:
mode:
author Lukacs T. Berki <lberki@google.com> 2021-02-26 14:27:36 +0100
committer Lukacs T. Berki <lberki@google.com> 2021-03-03 09:14:22 +0100
commit7690c099539884c8c4a94429eed54573586321be (patch)
tree6c947227785120140c4bc8fc1b7083833ae58a21 /shared/env.go
parent3bed960399dad2f97f75ef33e1ab407b84d3e6c7 (diff)
cd to / before running soong_build .
This lets one avoid any decisions as to when to chdir there during its execution and leads to better sandboxing because the pwd doesn't leak to init() functions anymore. Test: Manual. Change-Id: I1560da8ed3a621249426f9e8908aa890c21e13ba
Diffstat (limited to 'shared/env.go')
-rw-r--r--shared/env.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/shared/env.go b/shared/env.go
index 7900daa88..152729ba0 100644
--- a/shared/env.go
+++ b/shared/env.go
@@ -91,6 +91,28 @@ func StaleEnvFile(filepath string, getenv func(string) string) (bool, error) {
return false, nil
}
+// Deserializes and environment serialized by EnvFileContents() and returns it
+// as a map[string]string.
+func EnvFromFile(envFile string) (map[string]string, error) {
+ result := make(map[string]string)
+ data, err := ioutil.ReadFile(envFile)
+ if err != nil {
+ return result, err
+ }
+
+ var contents envFileData
+ err = json.Unmarshal(data, &contents)
+ if err != nil {
+ return result, err
+ }
+
+ for _, entry := range contents {
+ result[entry.Key] = entry.Value
+ }
+
+ return result, nil
+}
+
// Implements sort.Interface so that we can use sort.Sort on envFileData arrays.
func (e envFileData) Len() int {
return len(e)