aerc/worker/worker.go
Ben Burwell 6473848d87 maildir: Watch for new messages
When a directory is opened, start watching its "new" subdirectory for
incoming messages using the fsnotify library. When creation events are
detected, run the Unseen routine to move the message from new to cur and
add new UIDs to the store, updating the UI's list of directory contents
as we go.
2019-07-17 17:29:11 -04:00

41 lines
951 B
Go

package worker
import (
"git.sr.ht/~sircmpwn/aerc/worker/imap"
"git.sr.ht/~sircmpwn/aerc/worker/maildir"
"git.sr.ht/~sircmpwn/aerc/worker/types"
"fmt"
"log"
"net/url"
"strings"
)
// Guesses the appropriate worker type based on the given source string
func NewWorker(source string, logger *log.Logger) (*types.Worker, error) {
u, err := url.Parse(source)
if err != nil {
return nil, err
}
worker := types.NewWorker(logger)
scheme := u.Scheme
if strings.ContainsRune(scheme, '+') {
scheme = scheme[:strings.IndexRune(scheme, '+')]
fmt.Println(scheme)
}
switch scheme {
case "imap":
fallthrough
case "imaps":
worker.Backend = imap.NewIMAPWorker(worker)
case "maildir":
if w, err := maildir.NewWorker(worker); err != nil {
return nil, fmt.Errorf("could not create maildir worker: %v", err)
} else {
worker.Backend = w
}
default:
return nil, fmt.Errorf("Unknown backend %s", u.Scheme)
}
return worker, nil
}