Page MenuHomeMusing Studio

userconfig.go
No OneTemporary

userconfig.go

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 {
}
PostsConfig struct {
Directory string `ini:"directory"`
}
UserConfig struct {
API APIConfig `ini:"api"`
Posts PostsConfig `ini:"posts"`
}
)
func loadConfig() (*UserConfig, error) {
// TODO: load config to var shared across app
cfg, err := ini.LooseLoad(filepath.Join(userDataDir(), userConfigFile))
if err != nil {
return nil, err
}
// Parse INI file
uc := &UserConfig{}
err = cfg.MapTo(uc)
if err != nil {
return nil, err
}
return uc, nil
}
func saveConfig(uc *UserConfig) error {
cfg := ini.Empty()
err := ini.ReflectFrom(cfg, uc)
if err != nil {
return err
}
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
}

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 20, 8:18 AM (1 d, 6 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3632484

Event Timeline