package util import ( "encoding/json" "fmt" "os" "path/filepath" ) type ConfigJSON struct { PhotoPath string } type Config struct { PhotoPath string PhotoCompressPath string } var main_config Config func GetConfig() Config { return main_config } func ReadConfig(path string) (Config, error) { var cfg ConfigJSON // Gathering temp folder basedir, err := os.Getwd() if err != nil { return main_config, err } main_config.PhotoCompressPath = filepath.Join(basedir, ".temp") // Gathering photo path file, err := os.Open(path) if err != nil { return main_config, err } defer file.Close() decoder := json.NewDecoder(file) decoder.DisallowUnknownFields() err = decoder.Decode(&cfg) main_config.PhotoPath = cfg.PhotoPath return main_config, err } func createConfigFile(cfg Config) { data, err := json.MarshalIndent(cfg, "", " ") if err != nil { panic(err) } err = os.WriteFile("config.json", data, 0644) if err != nil { panic(err) } } func CreateConfig() { var cfg Config println("┌ Please Configure your backend !\n│") // Checking PhotoPath var err error = fmt.Errorf("Path") println("├\uf15b Enter photo album path \033[90m(press Enter for './')\033[0m") for err != nil { photopath := InputString("│> ") if photopath == "" { photopath = "./" } _, err = os.ReadDir(photopath) if err != nil { fmt.Println("│\033[31m\u2a2f " + err.Error() + "\033[0m") } else { fmt.Println("│\033[32m\uf00c Path correct.\033[0m") cfg.PhotoPath = photopath } } // Ending configuration println("│\n└ Configuration finished !") createConfigFile(cfg) }