ref: master
config/config.go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
package config import ( "log" "path" "github.com/go-ini/ini" "github.com/kyoh86/xdg" ) type ShareConfig struct { Protocol string `ini:"protocol"` Base string `ini:"base"` Path string `ini:"path"` } type SyncConfig struct { Remote string `ini:"remote"` } type TConfig struct { BasePath string `ini:"base"` Share ShareConfig `ini:"-"` Sync SyncConfig `ini:"-"` } func LoadConfigFromFile(root *string, sharedir string) (*TConfig, error) { // TODO: Handle loading from the default config filename := path.Join(xdg.ConfigHome(), "t", "t.conf") file, err := ini.LoadSources(ini.LoadOptions{ KeyValueDelimiters: "=", }, filename) if err != nil { // TODO: Install if was not installed within the make command log.Fatalln("Can't find config") return nil, err } // TODO: Handle converting ~/ into the user default home directory config := &TConfig{ Share: ShareConfig{ Protocol: "https", Base: "rascunho.eletrotupi.com", Path: "/api/v1", }, Sync: SyncConfig{ Remote: "origin", }, } err = file.MapTo(&config) if err != nil { return nil, err } return config, nil } func LoadBasicConfiguration() (*TConfig, error) { var ( err error ) config, err := LoadConfigFromFile(nil, "") if err != nil { return nil, err } return config, err } func Initialize() (*TConfig, error) { return LoadBasicConfiguration() } |