package defaults

import (
	"log"
	"os"
	"path"
)

var (
	// switch between modes
	BaseDataPathType = "homedir" // or "path"
	// default data path
	BaseDataPathValue = "/var/lib/opencloud"
)

func BaseDataPath() string {

	// It is not nice to have hidden / secrete configuration options
	// But how can we update the base path for every occurrence with a flagset option?
	// This is currently not possible and needs a new configuration concept
	p := os.Getenv("OC_BASE_DATA_PATH")
	if p != "" {
		return p
	}

	switch BaseDataPathType {
	case "homedir":
		dir, err := os.UserHomeDir()
		if err != nil {
			// fallback to BaseDatapathValue for users without home
			return BaseDataPathValue
		}
		return path.Join(dir, ".opencloud")
	case "path":
		return BaseDataPathValue
	default:
		log.Fatalf("BaseDataPathType %s not found", BaseDataPathType)
		return ""
	}
}

var (
	// switch between modes
	BaseConfigPathType = "homedir" // or "path"
	// default config path
	BaseConfigPathValue = "/etc/opencloud"
)

func BaseConfigPath() string {

	// It is not nice to have hidden / secrete configuration options
	// But how can we update the base path for every occurrence with a flagset option?
	// This is currently not possible and needs a new configuration concept
	p := os.Getenv("OC_CONFIG_DIR")
	if p != "" {
		return p
	}

	switch BaseConfigPathType {
	case "homedir":
		dir, err := os.UserHomeDir()
		if err != nil {
			// fallback to BaseConfigPathValue for users without home
			return BaseConfigPathValue
		}
		return path.Join(dir, ".opencloud", "config")
	case "path":
		return BaseConfigPathValue
	default:
		log.Fatalf("BaseConfigPathType %s not found", BaseConfigPathType)
		return ""
	}
}