-
Notifications
You must be signed in to change notification settings - Fork 43
/
crashd_config.go
48 lines (39 loc) · 1.49 KB
/
crashd_config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Copyright (c) 2020 VMware, Inc. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
package starlark
import (
"go.starlark.net/starlark"
"go.starlark.net/starlarkstruct"
)
// addDefaultCrashdConf initalizes a Starlark Dict with default
// crashd_config configuration data
func addDefaultCrashdConf(thread *starlark.Thread) error {
args := []starlark.Tuple{
starlark.Tuple{starlark.String("gid"), starlark.String(getGid())},
starlark.Tuple{starlark.String("uid"), starlark.String(getUid())},
starlark.Tuple{starlark.String("workdir"), starlark.String(defaults.workdir)},
starlark.Tuple{starlark.String("output_path"), starlark.String(defaults.outPath)},
}
_, err := crashdConfigFn(thread, nil, nil, args)
if err != nil {
return err
}
return nil
}
// crashConfig is built-in starlark function that saves and returns the kwargs as a struct value.
// Starlark format: crashd_config(conf0=val0, ..., confN=ValN)
func crashdConfigFn(thread *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) {
var dictionary starlark.StringDict
if kwargs != nil {
dict, err := kwargsToStringDict(kwargs)
if err != nil {
return starlark.None, err
}
dictionary = dict
}
structVal := starlarkstruct.FromStringDict(starlarkstruct.Default, dictionary)
// save values to be used as default
thread.SetLocal(identifiers.crashdCfg, structVal)
// return values as a struct (i.e. config.arg0, ... , config.argN)
return starlark.None, nil
}