// addtoqueue is a test helper which adds a queue item directly to the queue
// directory, behind chasquid's back.
//
// Note that chasquid does NOT support this, we do it before starting up the
// daemon for testing purposes only.
//
//go:build ignore
package main
import (
"flag"
"fmt"
"io"
"os"
"time"
"blitiri.com.ar/go/chasquid/internal/queue"
)
var (
queueDir = flag.String("queue_dir", ".queue", "queue directory")
id = flag.String("id", "mid1234", "Message ID")
from = flag.String("from", "from", "Mail from")
rcpt = flag.String("rcpt", "rcpt", "Rcpt to")
rcptType = flag.String("rcpt_type", "EMAIL",
"Recipient type (EMAIL, PIPE, FORWARD)")
)
func main() {
flag.Parse()
rType, ok := queue.Recipient_Type_value[*rcptType]
if !ok {
fmt.Printf("unknown recipient type %q\n", *rcptType)
os.Exit(1)
}
data, err := io.ReadAll(os.Stdin)
if err != nil {
fmt.Printf("error reading data: %v\n", err)
os.Exit(1)
}
item := &queue.Item{
Message: queue.Message{
ID: *id,
From: *from,
To: []string{*rcpt},
Rcpt: []*queue.Recipient{
{
Address: *rcpt,
Type: queue.Recipient_Type(rType),
Status: queue.Recipient_PENDING,
},
},
Data: data,
},
CreatedAt: time.Now(),
}
os.MkdirAll(*queueDir, 0700)
err = item.WriteTo(*queueDir)
if err != nil {
fmt.Printf("error writing item: %v\n", err)
os.Exit(1)
}
}