Change default config directory (fixes #145)

This commit is contained in:
Jakob Borg 2014-04-22 13:24:47 +02:00
parent 5528db9693
commit 90d0896848

View File

@ -109,6 +109,22 @@ func main() {
confDir = expandTilde(confDir) confDir = expandTilde(confDir)
if _, err := os.Stat(confDir); err != nil && confDir == getDefaultConfDir() {
// We are supposed to use the default configuration directory. It
// doesn't exist. In the past our default has been ~/.syncthing, so if
// that directory exists we move it to the new default location and
// continue. We don't much care if this fails at this point, we will
// be checking that later.
oldDefault := expandTilde("~/.syncthing")
if _, err := os.Stat(oldDefault); err == nil {
os.MkdirAll(filepath.Dir(confDir), 0700)
if err := os.Rename(oldDefault, confDir); err == nil {
infoln("Moved config dir", oldDefault, "to", confDir)
}
}
}
// Ensure that our home directory exists and that we have a certificate and key. // Ensure that our home directory exists and that we have a certificate and key.
ensureDir(confDir, 0700) ensureDir(confDir, 0700)
@ -560,39 +576,51 @@ func ensureDir(dir string, mode int) {
} }
} }
func getDefaultConfDir() string {
switch runtime.GOOS {
case "windows":
return filepath.Join(os.Getenv("AppData"), "Syncthing")
case "darwin":
return expandTilde("~/Library/Application Support/Syncthing")
default:
if xdgCfg := os.Getenv("XDG_CONFIG_HOME"); xdgCfg != "" {
return xdgCfg + "/syncthing"
} else {
return expandTilde("~/.config/syncthing")
}
}
}
func expandTilde(p string) string { func expandTilde(p string) string {
if runtime.GOOS == "windows" { if !strings.HasPrefix(p, "~/") {
return p return p
} }
if strings.HasPrefix(p, "~/") { switch runtime.GOOS {
return strings.Replace(p, "~", getUnixHomeDir(), 1) case "windows":
} return p
return p
}
func getUnixHomeDir() string { default:
home := os.Getenv("HOME") return filepath.Join(getHomeDir(), p[2:])
if home == "" {
fatalln("No home directory?")
} }
return home
} }
func getHomeDir() string { func getHomeDir() string {
if runtime.GOOS == "windows" { var home string
home := os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH")
if home == "" {
home = os.Getenv("USERPROFILE")
}
return home
}
return getUnixHomeDir()
}
func getDefaultConfDir() string { switch runtime.GOOS {
if runtime.GOOS == "windows" { case "windows":
return filepath.Join(os.Getenv("AppData"), "syncthing") home = os.Getenv("HomeDrive") + os.Getenv("HomePath")
if home == "" {
home = os.Getenv("UserProfile")
}
default:
home = os.Getenv("HOME")
} }
return expandTilde("~/.syncthing")
if home == "" {
fatalln("No home directory found - set $HOME (or the platform equivalent).")
}
return home
} }