gte/cmd/cli/command/recur.go

44 lines
956 B
Go

package command
import (
"fmt"
"strconv"
"git.ewintr.nl/gte/cmd/cli/format"
"git.ewintr.nl/gte/internal/configuration"
"git.ewintr.nl/gte/internal/process"
"git.ewintr.nl/gte/internal/storage"
"git.ewintr.nl/gte/pkg/msend"
"git.ewintr.nl/gte/pkg/mstore"
)
type Recur struct {
recurrer *process.Recur
}
func NewRecur(conf *configuration.Configuration, cmdArgs []string) (*Recur, error) {
remote := storage.NewRemoteRepository(mstore.NewIMAP(conf.IMAP()))
disp := storage.NewDispatcher(msend.NewSSLSMTP(conf.SMTP()))
if len(cmdArgs) < 1 {
return &Recur{}, ErrInvalidAmountOfArgs
}
daysAhead, err := strconv.Atoi(cmdArgs[0])
if err != nil {
return &Recur{}, ErrInvalidArg
}
return &Recur{
recurrer: process.NewRecur(remote, disp, daysAhead),
}, nil
}
func (r *Recur) Do() string {
res, err := r.recurrer.Process()
if err != nil {
return format.FormatError(err)
}
return fmt.Sprintf("generated %d tasks\n\n", res.Count)
}