|
|
@@ -1,17 +1,21 @@ |
|
|
|
package main |
|
|
|
|
|
|
|
import ( |
|
|
|
"encoding/json" |
|
|
|
"github.com/writeas/go-writeas" |
|
|
|
"github.com/writeas/writeas-cli/fileutils" |
|
|
|
"gopkg.in/ini.v1" |
|
|
|
"io/ioutil" |
|
|
|
"path/filepath" |
|
|
|
) |
|
|
|
|
|
|
|
const ( |
|
|
|
userConfigFile = "config.ini" |
|
|
|
userFile = "user.json" |
|
|
|
) |
|
|
|
|
|
|
|
type ( |
|
|
|
APIConfig struct { |
|
|
|
Token string `ini:"token"` |
|
|
|
} |
|
|
|
|
|
|
|
UserConfig struct { |
|
|
@@ -43,3 +47,38 @@ func saveConfig(uc *UserConfig) error { |
|
|
|
|
|
|
|
return cfg.SaveTo(filepath.Join(userDataDir(), userConfigFile)) |
|
|
|
} |
|
|
|
|
|
|
|
func loadUser() (*writeas.AuthUser, error) { |
|
|
|
fname := filepath.Join(userDataDir(), userFile) |
|
|
|
userJSON, err := ioutil.ReadFile(fname) |
|
|
|
if err != nil { |
|
|
|
if !fileutils.Exists(fname) { |
|
|
|
// Don't return a file-not-found error |
|
|
|
return nil, nil |
|
|
|
} |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
|
|
|
|
// Parse JSON file |
|
|
|
u := &writeas.AuthUser{} |
|
|
|
err = json.Unmarshal(userJSON, u) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
return u, nil |
|
|
|
} |
|
|
|
|
|
|
|
func saveUser(u *writeas.AuthUser) error { |
|
|
|
// Marshal struct into pretty-printed JSON |
|
|
|
userJSON, err := json.MarshalIndent(u, "", " ") |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
// Save file |
|
|
|
err = ioutil.WriteFile(filepath.Join(userDataDir(), userFile), userJSON, 0600) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |