...
1 package entrypoint
2
3 import (
4 "context"
5 "encoding/json"
6 "os"
7 "strings"
8
9 "github.com/datawire/dlib/dexec"
10 )
11
12 func envbool(name string) bool {
13 return os.Getenv(name) != ""
14 }
15
16 func env(name, defaultValue string) string {
17 value := os.Getenv(name)
18 if value != "" {
19 return value
20 } else {
21 return defaultValue
22 }
23 }
24
25 func ensureDir(dirname string) error {
26 err := os.MkdirAll(dirname, 0700)
27 if err != nil && os.IsExist(err) {
28 err = nil
29 }
30 return err
31 }
32
33 func cidsForLabel(ctx context.Context, label string) ([]string, error) {
34 bs, err := dexec.CommandContext(ctx, "docker", "ps", "-q", "-f", "label="+label).CombinedOutput()
35 if err != nil {
36 return nil, err
37 }
38 return strings.Fields(string(bs)), nil
39 }
40
41 func subcommand(ctx context.Context, command string, args ...string) *dexec.Cmd {
42 cmd := dexec.CommandContext(ctx, command, args...)
43 cmd.Stdin = os.Stdin
44 cmd.Stdout = os.Stdout
45 cmd.Stderr = os.Stderr
46 return cmd
47 }
48
49 func convert(in interface{}, out interface{}) error {
50 if out == nil {
51 return nil
52 }
53
54 jsonBytes, err := json.Marshal(in)
55 if err != nil {
56 return err
57 }
58
59 err = json.Unmarshal(jsonBytes, out)
60 if err != nil {
61 return err
62 }
63
64 return nil
65 }
66
View as plain text