|
|
|
// Copyright (c) 2013 by Michael Dvorkin. All Rights Reserved.
|
|
|
|
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
|
|
package mop
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"io/ioutil"
|
|
|
|
"os/user"
|
|
|
|
"strings"
|
|
|
|
)
|
|
|
|
|
|
|
|
const rcfile = "/.moprc"
|
|
|
|
|
|
|
|
type Profile struct {
|
|
|
|
MarketRefreshRate int
|
|
|
|
QuotesRefreshRate int
|
|
|
|
Tickers []string
|
|
|
|
SortBy string
|
|
|
|
SortOrder string
|
|
|
|
}
|
|
|
|
|
|
|
|
var profile Profile
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
func LoadProfile() string {
|
|
|
|
data, err := ioutil.ReadFile(defaultProfile())
|
|
|
|
if err != nil {
|
|
|
|
// Set default values.
|
|
|
|
profile.MarketRefreshRate = 12
|
|
|
|
profile.QuotesRefreshRate = 5
|
|
|
|
profile.Tickers = []string{"AAPL", "C", "GOOG", "IBM", "KO", "ORCL", "V"}
|
|
|
|
profile.SortBy = "Ticker"
|
|
|
|
profile.SortOrder = "Desc"
|
|
|
|
profile.Save()
|
|
|
|
} else {
|
|
|
|
json.Unmarshal(data, &profile)
|
|
|
|
}
|
|
|
|
return strings.Join(profile.Tickers, "+")
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
func (profile *Profile) Save() error {
|
|
|
|
if data, err := json.Marshal(profile); err != nil {
|
|
|
|
return err
|
|
|
|
} else {
|
|
|
|
return ioutil.WriteFile(defaultProfile(), data, 0644)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
func defaultProfile() string {
|
|
|
|
usr, err := user.Current()
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
return usr.HomeDir + rcfile
|
|
|
|
}
|