Skip to content

Commit 4ec7496

Browse files
committed
adding a progress bar.
1 parent 921cc82 commit 4ec7496

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ require (
88
github.com/emersion/go-imap v1.1.0
99
github.com/emersion/go-message v0.15.0
1010
github.com/fatih/color v1.13.0
11+
github.com/schollz/progressbar/v3 v3.8.5
1112
github.com/sirupsen/logrus v1.8.1
1213
github.com/spf13/viper v1.10.1
1314
github.com/urfave/cli v1.22.5

pkg/engine.go

+24-17
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/emersion/go-message"
1414
"github.com/emersion/go-message/charset"
1515
"github.com/emersion/go-message/mail"
16+
"github.com/schollz/progressbar/v3"
1617
"github.com/sirupsen/logrus"
1718
"io"
1819
"io/ioutil"
@@ -30,7 +31,8 @@ type EmailEngine struct {
3031
client *client.Client
3132
configuration config.Interface
3233

33-
report map[string]*model.SenderReport
34+
progressBar *progressbar.ProgressBar
35+
report map[string]*model.SenderReport
3436
}
3537

3638
func New(logger *logrus.Entry, configuration config.Interface) (EmailEngine, error) {
@@ -73,21 +75,25 @@ func (ee *EmailEngine) Start() error {
7375
totalMessages = 0
7476
page := 0
7577

76-
for {
77-
// get latest mailbox information
78-
//https://bitmapcake.blogspot.com/2018/07/gmail-mailbox-names-for-imap-connections.html
79-
mbox, err := ee.client.Select(ee.configuration.GetString("imap-mailbox-name"), false)
80-
if err != nil {
81-
ee.logger.Fatal(err)
82-
}
83-
// Get all messages
84-
totalMessages = mbox.Messages
78+
// get latest mailbox information
79+
//https://bitmapcake.blogspot.com/2018/07/gmail-mailbox-names-for-imap-connections.html
80+
mbox, err := ee.client.Select(ee.configuration.GetString("imap-mailbox-name"), false)
81+
if err != nil {
82+
ee.logger.Fatal(err)
83+
}
84+
// Get count of all messages
85+
totalMessages = mbox.Messages
8586

86-
if totalMessages == 0 {
87-
//if theres no messages to process, break out of the loop
88-
ee.logger.Printf("No messages to process")
89-
break
90-
}
87+
//set a progress bar
88+
ee.progressBar = progressbar.Default(int64(totalMessages))
89+
90+
if totalMessages == 0 {
91+
//if theres no messages to process, break out of the loop
92+
ee.logger.Printf("No messages to process")
93+
return errors.New("No messages to process")
94+
}
95+
96+
for {
9197
// 1-500, 501-1000
9298
from := uint32((page * BATCH_SIZE) + 1)
9399
to := uint32((page + 1) * BATCH_SIZE)
@@ -99,7 +105,7 @@ func (ee *EmailEngine) Start() error {
99105
seqset := new(imap.SeqSet)
100106
seqset.AddRange(from, to)
101107

102-
ee.logger.Printf("Retrieving messages (%d-%d, page: %d, total: %d)", from, to, page, totalMessages)
108+
ee.logger.Debugf("Retrieving messages (%d-%d, page: %d, total: %d)", from, to, page, totalMessages)
103109
ee.retrieveMessages(seqset)
104110

105111
if totalMessages <= to {
@@ -173,6 +179,7 @@ func (ee *EmailEngine) retrieveMessages(seqset *imap.SeqSet) {
173179
if err != nil {
174180
ee.logger.Errorf("error processing message: %v", err)
175181
}
182+
ee.progressBar.Add(1)
176183
}
177184

178185
if err := <-done; err != nil {
@@ -333,7 +340,7 @@ func (ee *EmailEngine) extractBodyUnsubscribe(msg *imap.Message) ([]string, erro
333340
linkTextCompare := strings.ToLower(link.Text())
334341

335342
if strings.Contains(linkTextCompare, "subscribe") {
336-
ee.logger.Infof("body unsubscribe link -> [%s](%s)\n", link.Text(), link.Attrs()["href"])
343+
ee.logger.Debugf("body unsubscribe link -> [%s](%s)\n", link.Text(), link.Attrs()["href"])
337344
unsubscribeUris = append(unsubscribeUris, link.Attrs()["href"])
338345
}
339346
}

0 commit comments

Comments
 (0)