github.com/seh/gb@v0.4.4-0.20160724065125-065d2b2b1ba1/cmd/env.go (about)

     1  package cmd
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"os"
     7  	"strings"
     8  )
     9  
    10  func MustGetwd() string {
    11  	wd, err := os.Getwd()
    12  	if err != nil {
    13  		log.Fatalf("unable to determine current working directory: %v", err)
    14  	}
    15  	return wd
    16  }
    17  
    18  // MergeEnv merges args into env, overwriting entries.
    19  func MergeEnv(env []string, args map[string]string) []string {
    20  	m := make(map[string]string)
    21  	for _, e := range env {
    22  		v := strings.SplitN(e, "=", 2)
    23  		m[v[0]] = v[1]
    24  	}
    25  	for k, v := range args {
    26  		m[k] = v
    27  	}
    28  	env = make([]string, 0, len(m))
    29  	for k, v := range m {
    30  		env = append(env, fmt.Sprintf("%s=%s", k, v))
    31  	}
    32  	return env
    33  }