git-lfs/filters/clean.go

34 lines
626 B
Go
Raw Normal View History

package filters
import (
2013-10-24 16:55:46 +00:00
"crypto/sha256"
"encoding/hex"
"github.com/github/git-media/gitmedia"
"io"
"os"
)
type CleanedAsset struct {
Size int64
File *os.File
Sha string
mediafilepath string
}
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)
2013-10-24 16:55:46 +00:00
return &CleanedAsset{written, tmp, hex.EncodeToString(oidHash.Sum(nil)), ""}, err
}
func (a *CleanedAsset) Close() error {
return os.Remove(a.File.Name())
}