113 lines
3.7 KiB
Go
Executable File
113 lines
3.7 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"log"
|
|
"strings"
|
|
|
|
"gitea.inhome.blapointe.com/local/args"
|
|
"gitea.inhome.blapointe.com/local/storage"
|
|
)
|
|
|
|
type Uploader int
|
|
|
|
const (
|
|
DeprecatedUploaderTodo = Uploader(iota)
|
|
UploaderLedger
|
|
UploaderPTTodo
|
|
)
|
|
|
|
var uploaders = map[string]Uploader{
|
|
"ledger": UploaderLedger,
|
|
"pttodo": UploaderPTTodo,
|
|
}
|
|
|
|
type Config struct {
|
|
EmailUser string
|
|
EmailPass string
|
|
EmailIMAP string
|
|
EmailLimit int
|
|
TodoAddr string
|
|
TodoTag string
|
|
Uploader Uploader
|
|
Storage storage.DB
|
|
Banks map[Bank]bool
|
|
AccountsPattern string
|
|
AccountsAntiPattern string
|
|
}
|
|
|
|
var config Config
|
|
|
|
func NewConfig() Config {
|
|
as := args.NewArgSet()
|
|
|
|
as.Append(args.STRING, "emailuser", "email username", "breellocaldev@gmail.com")
|
|
as.Append(args.STRING, "emailpass", "email password", "diblloewfncwssof")
|
|
as.Append(args.STRING, "emailimap", "email imap", "imap.gmail.com:993")
|
|
as.Append(args.INT, "emaillimit", "email limit", 0)
|
|
|
|
as.Append(args.STRING, "uploader", "ledger|pttodo", "ledger")
|
|
|
|
as.Append(args.STRING, "todoaddr", "todo addr", "/tmp/email-xactions-to-todo.dat.txt")
|
|
as.Append(args.STRING, "todopass", "todo pass", "gJtEXbbLHLf54yS9EdujtVN2n6Y")
|
|
as.Append(args.STRING, "todotoken", "todo token", "")
|
|
as.Append(args.STRING, "todolist", "todo list", "")
|
|
as.Append(args.STRING, "todotag", "todo tag", "expense")
|
|
|
|
as.Append(args.STRING, "banks", "uccu,citi,chase,bankofamerica,fidelity,americanexpress", "uccu,citi,chase,bankofamerica,fidelity,americanexpress")
|
|
as.Append(args.STRING, "accounts", "regex to include filter accounts", ".*")
|
|
as.Append(args.STRING, "not-accounts", "regex to exclude filter accounts", "zzzzzz")
|
|
|
|
as.Append(args.STRING, "authaddr", "auth addr", "https://auth.remote.blapointe.com")
|
|
as.Append(args.STRING, "store", "store type", "map")
|
|
as.Append(args.STRING, "storeaddr", "store addr", "/tmp/store")
|
|
as.Append(args.STRING, "storeuser", "store user", "")
|
|
as.Append(args.STRING, "storepass", "store pass", "")
|
|
|
|
if err := as.Parse(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
uploader := as.GetString("uploader")
|
|
ul, ok := uploaders[uploader]
|
|
if !ok {
|
|
panic("invalid uploader: " + uploader)
|
|
}
|
|
|
|
storage, err := storage.New(storage.TypeFromString(as.GetString("store")), as.GetString("storeaddr"), as.GetString("storeuser"), as.GetString("storepass"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
config = Config{
|
|
EmailUser: as.GetString("emailuser"),
|
|
EmailPass: as.GetString("emailpass"),
|
|
EmailIMAP: as.GetString("emailimap"),
|
|
EmailLimit: as.GetInt("emaillimit"),
|
|
TodoAddr: as.GetString("todoaddr"),
|
|
TodoTag: as.GetString("todotag"),
|
|
AccountsPattern: as.GetString("accounts"),
|
|
AccountsAntiPattern: as.GetString("not-accounts"),
|
|
Storage: storage,
|
|
Uploader: ul,
|
|
Banks: map[Bank]bool{
|
|
BankOfAmerica: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(BankOfAmerica.String())),
|
|
Chase: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Chase.String())),
|
|
Citi: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Citi.String())),
|
|
UCCU: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(UCCU.String())),
|
|
Fidelity: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Fidelity.String())),
|
|
Amex: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Amex.String())),
|
|
},
|
|
}
|
|
log.Printf("config: %+v", config)
|
|
|
|
return config
|
|
}
|
|
|
|
func getToken(as *args.ArgSet) string {
|
|
panic("DEAD")
|
|
}
|
|
|
|
func getList(as *args.ArgSet, token string) string {
|
|
panic("DEAD")
|
|
}
|