package env

import (
	"os"
	"path/filepath"
	"strings"

	"git.apinb.com/bsm-sdk/core/types"
	"git.apinb.com/bsm-sdk/core/utils"
)

var Runtime *types.RuntimeEnv = nil

// get system env.
func NewEnv() *types.RuntimeEnv {
	if Runtime == nil {
		Runtime = &types.RuntimeEnv{
			Workspace:    GetEnvDefault("BSM_Workspace", "def"),
			JwtSecretKey: GetEnvDefault("BSM_JwtSecretKey", "Cblocksmesh2022C"),
			Mode:         strings.ToLower(GetEnvDefault("BSM_RuntimeMode", "dev")),
			LicencePath:  strings.ToLower(GetEnvDefault("BSM_Licence", "")),
		}

		if Runtime.Mode == "dev" {
			Runtime.Prefix = GetEnvDefault("BSM_Prefix", utils.GetCurrentPath())
		} else {
			Runtime.Prefix = GetEnvDefault("BSM_Prefix", "/usr/local/bsm")
		}

		if Runtime.LicencePath == "" {
			Runtime.LicencePath = filepath.Join(Runtime.Prefix, "etc")
		}
	}
	return Runtime
}

func GetEnvDefault(key string, def string) string {
	value := os.Getenv(key)
	if value == "" {
		return def
	}
	return value
}