2019-05-10 23:07:36 +02:00
|
|
|
// Package env contains functions for dealing with environment variables
|
|
|
|
package env
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
2020-09-27 12:40:58 +02:00
|
|
|
"os/user"
|
2019-05-10 23:07:36 +02:00
|
|
|
|
|
|
|
homedir "github.com/mitchellh/go-homedir"
|
|
|
|
)
|
|
|
|
|
2020-06-02 12:54:52 +02:00
|
|
|
// ShellExpandHelp describes what ShellExpand does for inclusion into help
|
|
|
|
const ShellExpandHelp = "\n\nLeading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.\n"
|
|
|
|
|
2019-05-10 23:07:36 +02:00
|
|
|
// ShellExpand replaces a leading "~" with the home directory" and
|
|
|
|
// expands all environment variables afterwards.
|
|
|
|
func ShellExpand(s string) string {
|
|
|
|
if s != "" {
|
|
|
|
if s[0] == '~' {
|
|
|
|
newS, err := homedir.Expand(s)
|
|
|
|
if err == nil {
|
|
|
|
s = newS
|
|
|
|
}
|
|
|
|
}
|
|
|
|
s = os.ExpandEnv(s)
|
|
|
|
}
|
|
|
|
return s
|
|
|
|
}
|
2020-09-27 12:40:58 +02:00
|
|
|
|
|
|
|
// CurrentUser finds the current user name or "" if not found
|
|
|
|
func CurrentUser() (userName string) {
|
|
|
|
userName = os.Getenv("USER")
|
|
|
|
// If we are making docs just use $USER
|
|
|
|
if userName == "$USER" {
|
|
|
|
return userName
|
|
|
|
}
|
|
|
|
// Try reading using the OS
|
|
|
|
usr, err := user.Current()
|
|
|
|
if err == nil {
|
|
|
|
return usr.Username
|
|
|
|
}
|
|
|
|
// Fall back to reading $USER then $LOGNAME
|
|
|
|
if userName != "" {
|
|
|
|
return userName
|
|
|
|
}
|
|
|
|
return os.Getenv("LOGNAME")
|
|
|
|
}
|