Make PointerSmudgeObject only download to the media directory

This commit is contained in:
rubyist 2015-05-21 10:29:17 -04:00
parent 1d87b73ef0
commit f905afa270
2 changed files with 13 additions and 26 deletions

@ -2,12 +2,9 @@ package lfs
import (
"fmt"
"os"
"path/filepath"
"github.com/cheggaaa/pb"
"sync"
"sync/atomic"
"github.com/cheggaaa/pb"
)
type Downloadable struct {
@ -166,21 +163,12 @@ func (q *DownloadQueue) Process() {
go func(n int) {
for d := range q.downloadc {
fullPath := filepath.Join(LocalWorkingDir, d.Pointer.Name)
output, err := os.Create(fullPath)
if err != nil {
q.errorc <- Error(err)
f := atomic.AddInt64(&q.finished, 1)
q.bar.Prefix(fmt.Sprintf("(%d of %d files) ", f, q.files))
q.wg.Done()
continue
}
cb := func(total, read int64, current int) error {
q.bar.Add(current)
return nil
}
if err := PointerSmudgeObject(output, d.Pointer.Pointer, d.Object, cb); err != nil {
if err := PointerSmudgeObject(d.Pointer.Pointer, d.Object, cb); err != nil {
q.errorc <- Error(err)
}

@ -42,7 +42,9 @@ func PointerSmudge(writer io.Writer, ptr *Pointer, workingfile string, cb CopyCa
return nil
}
func PointerSmudgeObject(writer io.Writer, ptr *Pointer, obj *objectResource, cb CopyCallback) error {
// PointerSmudgeObject uses a Pointer and objectResource to download the object to the
// media directory. It does not write the file to the working directory.
func PointerSmudgeObject(ptr *Pointer, obj *objectResource, cb CopyCallback) error {
mediafile, err := LocalMediaPath(obj.Oid)
if err != nil {
return err
@ -58,23 +60,20 @@ func PointerSmudgeObject(writer io.Writer, ptr *Pointer, obj *objectResource, cb
}
}
var wErr *WrappedError
if statErr != nil || stat == nil {
wErr = downloadObject(writer, ptr, obj, mediafile, cb)
} else {
wErr = readLocalFile(writer, ptr, mediafile, cb)
}
wErr := downloadObject(ptr, obj, mediafile, cb)
if wErr != nil {
sendApiEvent(apiEventFail)
return &SmudgeError{obj.Oid, mediafile, wErr}
if wErr != nil {
sendApiEvent(apiEventFail)
return &SmudgeError{obj.Oid, mediafile, wErr}
}
}
sendApiEvent(apiEventSuccess)
return nil
}
func downloadObject(writer io.Writer, ptr *Pointer, obj *objectResource, mediafile string, cb CopyCallback) *WrappedError {
func downloadObject(ptr *Pointer, obj *objectResource, mediafile string, cb CopyCallback) *WrappedError {
reader, size, wErr := DownloadObject(obj)
if reader != nil {
defer reader.Close()
@ -105,7 +104,7 @@ func downloadObject(writer io.Writer, ptr *Pointer, obj *objectResource, mediafi
return Errorf(err, "Error buffering media file.")
}
return readLocalFile(writer, ptr, mediafile, nil)
return nil
}
func downloadFile(writer io.Writer, ptr *Pointer, workingfile, mediafile string, cb CopyCallback) *WrappedError {