// userEnv returns the user-level environment variables for a snap. // Despite this being a bit snap-specific, this is in helpers.go because it's // used by so many other modules, we run into circular dependencies if it's // somewhere more reasonable like the snappy module. func userEnv(info *snap.Info, home string) map[string]string { return map[string]string{ "HOME": info.UserDataDir(home), "SNAP_USER_COMMON": info.UserCommonDataDir(home), "SNAP_USER_DATA": info.UserDataDir(home), } }
// userEnv returns the user-level environment variables for a snap. // Despite this being a bit snap-specific, this is in helpers.go because it's // used by so many other modules, we run into circular dependencies if it's // somewhere more reasonable like the snappy module. func userEnv(info *snap.Info, home string) map[string]string { result := map[string]string{ "SNAP_USER_COMMON": info.UserCommonDataDir(home), "SNAP_USER_DATA": info.UserDataDir(home), "XDG_RUNTIME_DIR": info.UserXdgRuntimeDir(os.Geteuid()), } // For non-classic snaps, we set HOME but on classic allow snaps to see real HOME if !info.NeedsClassic() { result["HOME"] = info.UserDataDir(home) } return result }
func createUserDataDirs(info *snap.Info) error { usr, err := userCurrent() if err != nil { return fmt.Errorf(i18n.G("cannot get the current user: %v"), err) } // see snapenv.User userData := info.UserDataDir(usr.HomeDir) commonUserData := info.UserCommonDataDir(usr.HomeDir) for _, d := range []string{userData, commonUserData} { if err := os.MkdirAll(d, 0755); err != nil { // TRANSLATORS: %q is the directory whose creation failed, %v the error message return fmt.Errorf(i18n.G("cannot create %q: %v"), d, err) } } return nil }