This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.idea
|
||||||
3
go.mod
Normal file
3
go.mod
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
module github.com/rdarius/boot-dev-blog-aggregator
|
||||||
|
|
||||||
|
go 1.23.6
|
||||||
81
internal/config/config.go
Normal file
81
internal/config/config.go
Normal file
@@ -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
|
||||||
|
}
|
||||||
23
main.go
Normal file
23
main.go
Normal file
@@ -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)
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user