github.com/kekek/gb@v0.4.5-0.20170222120241-d4ba64b0b297/cmd/env.go (about)

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