package settings import ( "encoding/json" "os" "path/filepath" ) const ( Local FileSystemType = iota ) type FileSystemType int type Settings struct { Endpoint string Token string FileSystem FileSystemSettings } type FileSystemSettings struct { Type FileSystemType BasePath string } func ParseSettings(data []byte) Settings { settings := Settings{} json.Unmarshal(data, &settings) return settings } func LoadSettings() Settings { workingDirectory, _ := os.Getwd() path := filepath.Join(workingDirectory, "settings.json") // Load file and parse file data, err := os.ReadFile(path) if err == nil { return ParseSettings(data) } // If file does not exist, create default settings defaultSettings := Settings{ Endpoint: "127.0.0.1:8000", Token: "changeme", FileSystem: FileSystemSettings{ Type: Local, BasePath: "assets", }, } serializedSettings, err := json.Marshal(defaultSettings) os.WriteFile(path, serializedSettings, os.ModePerm) return defaultSettings }