github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/uniter/runner/context/env.go (about)

     1  // Copyright 2012-2014 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package context
     5  
     6  import (
     7  	"os"
     8  	"path/filepath"
     9  
    10  	jujuos "github.com/juju/utils/os"
    11  )
    12  
    13  // OSDependentEnvVars returns the OS-dependent environment variables that
    14  // should be set for a hook context.
    15  func OSDependentEnvVars(paths Paths) []string {
    16  	switch jujuos.HostOS() {
    17  	case jujuos.Windows:
    18  		return windowsEnv(paths)
    19  	case jujuos.Ubuntu:
    20  		return ubuntuEnv(paths)
    21  	case jujuos.CentOS:
    22  		return centosEnv(paths)
    23  	}
    24  	return nil
    25  }
    26  
    27  func appendPath(paths Paths) []string {
    28  	return []string{
    29  		"PATH=" + paths.GetToolsDir() + ":" + os.Getenv("PATH"),
    30  	}
    31  }
    32  
    33  func ubuntuEnv(paths Paths) []string {
    34  	path := appendPath(paths)
    35  	env := []string{
    36  		"APT_LISTCHANGES_FRONTEND=none",
    37  		"DEBIAN_FRONTEND=noninteractive",
    38  	}
    39  	env = append(env, path...)
    40  	return env
    41  }
    42  
    43  func centosEnv(paths Paths) []string {
    44  	return appendPath(paths)
    45  }
    46  
    47  // windowsEnv adds windows specific environment variables. PSModulePath
    48  // helps hooks use normal imports instead of dot sourcing modules
    49  // its a convenience variable. The PATH variable delimiter is
    50  // a semicolon instead of a colon
    51  func windowsEnv(paths Paths) []string {
    52  	charmDir := paths.GetCharmDir()
    53  	charmModules := filepath.Join(charmDir, "lib", "Modules")
    54  	return []string{
    55  		"Path=" + paths.GetToolsDir() + ";" + os.Getenv("Path"),
    56  		"PSModulePath=" + os.Getenv("PSModulePath") + ";" + charmModules,
    57  	}
    58  }