Move maildir related functionality to own package.
This commit is contained in:
@@ -7,17 +7,19 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"xinu.tv/email"
|
||||
"xinu.tv/email/maildir"
|
||||
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
|
||||
var (
|
||||
dryrun = flag.Bool("dryrun", true, "don't actually rename files, just log actions.")
|
||||
saveFile = flag.String("save", "", "filename to store unread status.")
|
||||
loadFile = flag.String("load", "", "filename to load unread status.")
|
||||
maildir = flag.String("maildir", "", "Maildir root")
|
||||
skipFiles = flag.String("skip", "maildirfolder,log,msgid.cache,razor-agent.log",
|
||||
dryrun = flag.Bool("dryrun", true, "don't actually rename files, just log actions.")
|
||||
saveFile = flag.String("save", "", "filename to store unread status.")
|
||||
loadFile = flag.String("load", "", "filename to load unread status.")
|
||||
maildirPath = flag.String("maildir", "", "Maildir root")
|
||||
skipFiles = flag.String("skip", "maildirfolder,log,msgid.cache,razor-agent.log",
|
||||
"comma separated files to skip")
|
||||
)
|
||||
|
||||
@@ -62,7 +64,7 @@ func (m *Messages) hashMail(path string, info os.FileInfo, err error) error {
|
||||
glog.Infof("%q", err.Error())
|
||||
return nil
|
||||
}
|
||||
md := email.NewInfo(path)
|
||||
md := maildir.NewInfo(path)
|
||||
m.Statuses = append(m.Statuses, Status{
|
||||
Path: path,
|
||||
Hash: h,
|
||||
@@ -82,8 +84,8 @@ func (m *Messages) LoadStatus(statusFile string) error {
|
||||
return dec.Decode(&m.Statuses)
|
||||
}
|
||||
|
||||
func (m *Messages) SaveStatus(maildir, statusFile string) error {
|
||||
if err := filepath.Walk(maildir, m.hashMail); err != nil {
|
||||
func (m *Messages) SaveStatus(maildirPath, statusFile string) error {
|
||||
if err := filepath.Walk(maildirPath, m.hashMail); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -110,13 +112,13 @@ func (m *Messages) SaveStatus(maildir, statusFile string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m Messages) Reconcile(maildir string) error {
|
||||
func (m Messages) Reconcile(maildirPath string) error {
|
||||
hashMap := make(map[string]*Status, len(m.Statuses))
|
||||
for i, msg := range m.Statuses {
|
||||
hashMap[msg.Hash] = &m.Statuses[i]
|
||||
}
|
||||
|
||||
return filepath.Walk(maildir, func(path string, info os.FileInfo, err error) error {
|
||||
return filepath.Walk(maildirPath, func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -144,7 +146,7 @@ func (m Messages) Reconcile(maildir string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
md := email.NewInfo(path)
|
||||
md := maildir.NewInfo(path)
|
||||
s, ok := hashMap[chksum]
|
||||
if !ok {
|
||||
return nil
|
||||
@@ -192,7 +194,7 @@ func main() {
|
||||
Skip: skip,
|
||||
}
|
||||
|
||||
if *maildir == "" {
|
||||
if *maildirPath == "" {
|
||||
fmt.Println("Must specify Maildir with -maildir")
|
||||
os.Exit(1)
|
||||
}
|
||||
@@ -203,7 +205,7 @@ func main() {
|
||||
}
|
||||
|
||||
if *saveFile != "" {
|
||||
if err := m.SaveStatus(*maildir, *saveFile); err != nil {
|
||||
if err := m.SaveStatus(*maildirPath, *saveFile); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
m.PrintStats()
|
||||
@@ -214,7 +216,7 @@ func main() {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
m.PrintStats()
|
||||
if err := m.Reconcile(*maildir); err != nil {
|
||||
if err := m.Reconcile(*maildirPath); err != nil {
|
||||
glog.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user