commit 75e0959931ba60092179cb5ddb535c2dd0791353 Author: V Date: Sun Oct 5 18:59:35 2025 +0100 Initial commit diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..3f079e7 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module k3gtpi.jumpingcrab.com/go-learning/gator_rss + +go 1.24.5 diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..90fcbd3 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,65 @@ +package config + +import ( + "encoding/json" + "fmt" + "os" +) + +type Config struct { + DBURL string `json:"db_url"` + CurrentUsername string `json:"current_user_name"` +} + +func getConfigFilePath() (string, error) { + const configFileName = ".gatorconfig.json" + homeDir, err := os.UserHomeDir() + if err != nil { + return "", err + } + configFilePath := homeDir + "/" + configFileName + return configFilePath, nil +} + +func write(cfg *Config) error { + configFilePath, err := getConfigFilePath() + if err != nil { + return err + } + configPretty, err := json.MarshalIndent(cfg, "", " ") + if err != nil { + return err + } + err = os.WriteFile(configFilePath, configPretty, 0644) + if err != nil { + return err + } + return nil +} + +func (cfg *Config) Read() Config { + configFilePath, err := getConfigFilePath() + if err != nil { + panic(err) + } + configFile, err := os.ReadFile(configFilePath) + if err != nil { + panic(err) + } + var configData Config + if err := json.Unmarshal(configFile, &configData); err != nil { + panic(err) + } + return configData +} + +func (cfg *Config) SetUser(userName string) error { + if userName == "" { + return fmt.Errorf("username cannot be empty string") + } + cfg.CurrentUsername = userName + if err := write(cfg); err != nil { + return fmt.Errorf("could not set current user! Err: %w", err) + } + return nil +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..a2c5c86 --- /dev/null +++ b/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "encoding/json" + "fmt" + + "k3gtpi.jumpingcrab.com/go-learning/gator_rss/internal/config" +) + +func main() { + configData := config.Config{} + configData = configData.Read() + configData.SetUser("vlad") + configData = configData.Read() + prettyConfig, _ := json.MarshalIndent(configData, "", "") + fmt.Print(string(prettyConfig)) +}