commit d1163ec629dbb0e371ece43c60752c11b5d88cca Author: Darius Rapalis Date: Tue Mar 11 01:32:08 2025 +0200 #1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c4aa268 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module github.com/rdarius/boot-dev-blog-aggregator + +go 1.23.6 diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..4135924 --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,81 @@ +package config + +import ( + "encoding/json" + "os" + "os/user" +) + +const configFileName = ".gatorconfig.json" + +type Config struct { + DbUrl string `json:"db_url"` + CurrentUserName string `json:"current_user_name"` +} + +func Read() (Config, error) { + filePath, err := getConfigFilePath() + if err != nil { + return Config{}, err + } + + // read file + data, err := os.ReadFile(filePath) + if err != nil { + return Config{}, err + } + + cfg := Config{} + err = json.Unmarshal(data, &cfg) + return cfg, nil + +} + +func (config Config) SetUser() error { + usr, err := user.Current() + + if err != nil { + return err + } + + config.CurrentUserName = usr.Username + + err = write(config) + if err != nil { + return err + } + + return nil + +} + +func getConfigFilePath() (string, error) { + homeDir, err := os.UserHomeDir() + if err != nil { + return "", err + } + return homeDir + "/" + configFileName, nil +} + +func write(cfg Config) error { + + filePath, err := getConfigFilePath() + if err != nil { + return err + } + + file, err := os.Create(filePath) + if err != nil { + return err + } + defer file.Close() + + encoder := json.NewEncoder(file) + encoder.SetIndent("", " ") // For pretty printing + err = encoder.Encode(cfg) + if err != nil { + return err + } + + return nil +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..ee426eb --- /dev/null +++ b/main.go @@ -0,0 +1,23 @@ +package main + +import ( + "fmt" + "github.com/rdarius/boot-dev-blog-aggregator/internal/config" + "log" +) + +func main() { + + cfg, err := config.Read() + if err != nil { + log.Fatal(err) + } + cfg.SetUser() + + cfg2, err := config.Read() + if err != nil { + log.Fatal(err) + } + fmt.Printf("%v\n", cfg2) + +}