diff --git a/commands/command_queues.go b/commands/command_queues.go new file mode 100644 index 00000000..b754da48 --- /dev/null +++ b/commands/command_queues.go @@ -0,0 +1,32 @@ +package gitmedia + +import ( + ".." + "../queuedir" + "fmt" +) + +type QueuesCommand struct { + *Command +} + +func (c *QueuesCommand) Run() { + err := gitmedia.WalkQueues(func(name string, queue *queuedir.Queue) error { + fmt.Println(name) + return queue.Walk(func(id string, body []byte) error { + fmt.Println(" " + string(body)) + return nil + }) + }) + + if err != nil { + fmt.Println("Error walking queues") + fmt.Println(err) + } +} + +func init() { + registerCommand("queues", func(c *Command) RunnableCommand { + return &QueuesCommand{Command: c} + }) +} diff --git a/queues.go b/queues.go index f6914763..40cc6c04 100644 --- a/queues.go +++ b/queues.go @@ -12,6 +12,17 @@ func QueueUpload(sha string) { } } +func WalkQueues(cb func(name string, queue *queuedir.Queue) error) error { + var err error + for name, queuefunc := range queues { + err = cb(name, queuefunc()) + if err != nil { + return err + } + } + return err +} + func getUploadQueue() *queuedir.Queue { if uploadQueue == nil { q, err := queueDir.Queue("upload") @@ -29,6 +40,9 @@ func setupQueueDir() *queuedir.QueueDir { } var ( + queues = map[string]func() *queuedir.Queue{ + "upload": getUploadQueue, + } queueDir *queuedir.QueueDir uploadQueue *queuedir.Queue )