diff options
Diffstat (limited to 'config.go')
-rw-r--r-- | config.go | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/config.go b/config.go new file mode 100644 index 0000000..43f7689 --- /dev/null +++ b/config.go @@ -0,0 +1,76 @@ +package main + +import ( + "io/ioutil" + "os" + "path/filepath" + + "github.com/teddywing/timetasker/timetask" + + "github.com/BurntSushi/toml" + "github.com/goulash/xdg" +) + +type Config struct { + Auth struct { + Username string + PasswordCmd string `toml:"password_cmd"` + } + Profile timetask.Profile + Projects map[string]timetask.Project +} + +const emptyConfig = `[auth] +username = "" +password_cmd = "" + + +[profile] +person_id = # ADD PERSON ID + + +[projects.example] +client = # ADD CLIENT ID +project = # ADD PROJECT ID +module = # ADD MODULE ID +task = 0 +work_type = # ADD WORK TYPE ID +billable = true +` + +func configDir() string { + return filepath.Join(xdg.ConfigHome, "timetasker") +} + +func configFile() string { + return filepath.Join(configDir(), "config.toml") +} + +func maybeWriteConfig() error { + path := xdg.FindConfig("timetasker/config.toml") + + if path == "" { + path = configDir() + if _, err := os.Stat(path); os.IsNotExist(err) { + os.Mkdir(path, 0700) + } + + config_path := configFile() + err := ioutil.WriteFile(config_path, []byte(emptyConfig), 0644) + if err != nil { + return err + } + } + + return nil +} + +func loadConfig() error { + config = Config{} + _, err := toml.DecodeFile("config2.toml", &config) + if err != nil { + return err + } + + return nil +} |