git-lfs/gitmedia/uploadqueue.go

61 lines
1017 B
Go
Raw Normal View History

2013-10-21 18:22:02 +00:00
package gitmedia
import (
"github.com/github/git-media/queuedir"
2013-10-21 18:22:02 +00:00
"path/filepath"
)
2014-06-05 18:48:23 +00:00
func QueueUpload(sha, filename string) error {
fileBody := sha
if filename != "" {
fileBody += ":" + filename
}
2014-06-05 18:48:23 +00:00
q, err := UploadQueue()
2013-10-21 18:22:02 +00:00
if err != nil {
2014-06-05 18:48:23 +00:00
return err
2013-10-21 18:22:02 +00:00
}
2014-06-05 18:48:23 +00:00
_, err = q.AddString(fileBody)
return err
2013-10-21 18:22:02 +00:00
}
func WalkQueues(cb func(name string, queue *queuedir.Queue) error) error {
var err error
for name, queuefunc := range queues {
2014-06-05 18:48:23 +00:00
q, err := queuefunc()
if err == nil {
err = cb(name, q)
}
if err != nil {
return err
}
}
return err
}
2014-06-05 18:48:23 +00:00
func UploadQueue() (*queuedir.Queue, error) {
2013-10-21 18:22:02 +00:00
if uploadQueue == nil {
q, err := queueDir.Queue("upload")
if err != nil {
2014-06-05 18:48:23 +00:00
return nil, err
2013-10-21 18:22:02 +00:00
}
uploadQueue = q
}
2014-06-05 18:48:23 +00:00
return uploadQueue, nil
2013-10-21 18:22:02 +00:00
}
func setupQueueDir() *queuedir.QueueDir {
return queuedir.New(filepath.Join(LocalMediaDir, "queue"))
}
var (
2014-06-05 18:48:23 +00:00
queues = map[string]func() (*queuedir.Queue, error){
2013-10-21 18:42:29 +00:00
"upload": UploadQueue,
}
2013-10-21 18:22:02 +00:00
queueDir *queuedir.QueueDir
uploadQueue *queuedir.Queue
)