git-lfs/commands/command_push.go

85 lines
1.5 KiB
Go
Raw Normal View History

package commands
2013-10-04 17:09:03 +00:00
import (
"fmt"
"github.com/github/git-media/gitmedia"
"github.com/github/git-media/gitmediaclient"
2014-06-26 20:53:37 +00:00
"github.com/spf13/cobra"
2014-03-12 14:55:01 +00:00
"strings"
2013-10-04 17:09:03 +00:00
)
2014-06-26 20:53:37 +00:00
var (
pushCmd = &cobra.Command{
Use: "push",
2014-06-26 21:22:24 +00:00
Short: "Push files to the media endpoint",
2014-06-26 20:53:37 +00:00
Run: pushCommand,
}
)
2013-10-04 17:09:03 +00:00
2014-06-26 20:53:37 +00:00
func pushCommand(cmd *cobra.Command, args []string) {
2014-06-05 18:48:23 +00:00
q, err := gitmedia.UploadQueue()
if err != nil {
Panic(err, "Error setting up the queue")
}
q.Walk(func(id string, body []byte) error {
2014-03-12 14:55:01 +00:00
fileInfo := string(body)
2014-08-07 17:15:28 +00:00
parts := strings.SplitN(fileInfo, ":", 2)
2014-03-12 14:55:01 +00:00
2014-08-07 17:15:28 +00:00
var oid, filename string
oid = parts[0]
2014-03-12 14:55:01 +00:00
if len(parts) > 1 {
filename = parts[1]
}
2014-08-07 17:15:28 +00:00
if wErr := pushAsset(oid, filename); wErr != nil {
Panic(wErr.Inner, wErr.Message)
}
fmt.Printf("\n")
2013-10-21 18:42:29 +00:00
if err := q.Del(id); err != nil {
2014-08-07 17:15:28 +00:00
Panic(err, "error removing %s from queue", oid)
}
2013-10-21 20:25:24 +00:00
return nil
})
2013-10-04 17:09:03 +00:00
}
2014-08-07 17:15:28 +00:00
func pushAsset(oid, filename string) *wrappedError {
path, err := gitmedia.LocalMediaPath(oid)
if err == nil {
err = gitmediaclient.Options(path)
}
if err == nil {
cb, file, cbErr := gitmedia.CopyCallbackFile("push", filename)
if cbErr != nil {
Error(cbErr.Error())
}
err = gitmediaclient.Put(path, filename, cb)
if file != nil {
file.Close()
}
2014-08-07 17:15:28 +00:00
}
if err != nil {
return &wrappedError{
Message: fmt.Sprintf("error uploading file %s/%s", oid, filename),
Inner: err,
}
}
return nil
}
type wrappedError struct {
Message string
Inner error
}
2013-10-04 17:09:03 +00:00
func init() {
2014-06-26 20:53:37 +00:00
RootCmd.AddCommand(pushCmd)
2013-10-04 17:09:03 +00:00
}