git-lfs/pointer/clean.go

34 lines
627 B
Go
Raw Normal View History

package pointer
import (
2013-10-24 16:55:46 +00:00
"crypto/sha256"
"encoding/hex"
"github.com/github/git-media/gitmedia"
"io"
"os"
)
2014-07-28 19:28:05 +00:00
type cleanedAsset struct {
File *os.File
mediafilepath string
*Pointer
}
2014-07-28 19:28:05 +00:00
func Clean(reader io.Reader) (*cleanedAsset, error) {
tmp, err := gitmedia.TempFile("")
if err != nil {
return nil, err
}
2013-10-24 16:55:46 +00:00
oidHash := sha256.New()
writer := io.MultiWriter(oidHash, tmp)
2013-10-24 16:43:48 +00:00
written, err := io.Copy(writer, reader)
pointer := NewPointer(hex.EncodeToString(oidHash.Sum(nil)), written)
2014-07-28 19:28:05 +00:00
return &cleanedAsset{tmp, "", pointer}, err
}
2014-07-28 19:28:05 +00:00
func (a *cleanedAsset) Close() error {
return os.Remove(a.File.Name())
}