feat: implemented initial login command
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
)
|
||||
|
||||
const GATOR_CONFIG_FILE = ".gatorconfig.json"
|
||||
|
||||
type Config struct {
|
||||
DbUrl string `json:"db_url"`
|
||||
CurrentUserName string `json:"current_user_name"`
|
||||
}
|
||||
|
||||
func Read() (*Config, error) {
|
||||
config := Config{}
|
||||
|
||||
configFilePath, err := getConfigPath()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
data, err := os.ReadFile(configFilePath)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = json.Unmarshal(data, &config)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &config, nil
|
||||
}
|
||||
|
||||
// TODO: I don't think there should be
|
||||
// hidden I/O in this method call
|
||||
func (c *Config) SetUser(currentUserName string) error {
|
||||
c.CurrentUserName = currentUserName
|
||||
return writeFile(c)
|
||||
}
|
||||
|
||||
func (c *Config) String() string {
|
||||
return fmt.Sprintf("Config { DbUrl = %s, CurrentUserName = %s }", c.DbUrl, c.CurrentUserName)
|
||||
}
|
||||
|
||||
func writeFile(config *Config) error {
|
||||
data, err := json.Marshal(config)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
configFilePath, err := getConfigPath()
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
file, err := os.Create(configFilePath)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer file.Close()
|
||||
|
||||
_, err = file.Write(data)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func getConfigPath() (string, error) {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
configFilePath := path.Join(homeDir, GATOR_CONFIG_FILE)
|
||||
|
||||
return configFilePath, nil
|
||||
}
|
||||
Reference in New Issue
Block a user