diff --git a/config.go b/config.go index f7b3068..e1bc707 100755 --- a/config.go +++ b/config.go @@ -24,16 +24,17 @@ var uploaders = map[string]Uploader{ } type Config struct { - EmailUser string - EmailPass string - EmailIMAP string - TodoAddr string - TodoToken string - TodoList string - TodoTag string - Uploader Uploader - Storage storage.DB - Banks map[Bank]bool + EmailUser string + EmailPass string + EmailIMAP string + TodoAddr string + TodoToken string + TodoList string + TodoTag string + Uploader Uploader + Storage storage.DB + Banks map[Bank]bool + AccountsPattern string } var config Config @@ -52,7 +53,9 @@ func NewConfig() Config { 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", "uccu,citi,chase") + as.Append(args.STRING, "accounts", "regex to filter accounts", ".*") as.Append(args.STRING, "authaddr", "auth addr", "https://auth.remote.blapointe.com") as.Append(args.STRING, "store", "store type", "map") @@ -76,13 +79,14 @@ func NewConfig() Config { } config = Config{ - EmailUser: as.GetString("emailuser"), - EmailPass: as.GetString("emailpass"), - EmailIMAP: as.GetString("emailimap"), - TodoAddr: as.GetString("todoaddr"), - TodoTag: as.GetString("todotag"), - Storage: storage, - Uploader: ul, + EmailUser: as.GetString("emailuser"), + EmailPass: as.GetString("emailpass"), + EmailIMAP: as.GetString("emailimap"), + TodoAddr: as.GetString("todoaddr"), + TodoTag: as.GetString("todotag"), + AccountsPattern: as.GetString("accounts"), + Storage: storage, + Uploader: ul, Banks: map[Bank]bool{ Chase: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Chase.String())), Citi: strings.Contains(strings.ToLower(as.GetString("banks")), strings.ToLower(Citi.String())), diff --git a/main.go b/main.go index 15ac082..2903312 100755 --- a/main.go +++ b/main.go @@ -3,6 +3,7 @@ package main import ( "local/sandbox/contact/contact" "log" + "regexp" ) func main() { @@ -16,12 +17,16 @@ func main() { if err != nil { panic(err) } + patterns := regexp.MustCompile(config.AccountsPattern) for email := range emails { transactions, err := Scrape(email, config.Banks) if err != nil { log.Println("failed to scrape email:", err) } for _, transaction := range transactions { + if !patterns.MatchString(transaction.Account) { + log.Printf("skipping unmatching account pattern %q vs %q", config.AccountsPattern, transaction.Account) + } if _, err := config.Storage.Get(transaction.ID); err == nil { log.Println("skipping duplicate transaction:", transaction) } else {