remove the clean writers
no longer writing a metadata file
This commit is contained in:
parent
a3ad1a5d15
commit
fbdb9153aa
@ -13,8 +13,20 @@ func main() {
|
||||
fmt.Println("Error cleaning asset")
|
||||
panic(err)
|
||||
}
|
||||
defer cleaned.Close()
|
||||
|
||||
writer := cleaned.Writer(os.Stdout)
|
||||
defer writer.Close()
|
||||
gitmedia.Encode(writer, cleaned.Sha)
|
||||
tmpfile := cleaned.File.Name()
|
||||
mediafile := gitmedia.LocalMediaPath(cleaned.Sha)
|
||||
if stat, _ := os.Stat(mediafile); stat != nil {
|
||||
if stat.Size() != cleaned.Size {
|
||||
panic(fmt.Sprintf("Files don't match:\n%s\n%s", mediafile, tmpfile))
|
||||
}
|
||||
} else {
|
||||
if err := os.Rename(tmpfile, mediafile); err != nil {
|
||||
fmt.Printf("Unable to move %s to %s\n", tmpfile, mediafile)
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
gitmedia.Encode(os.Stdout, cleaned.Sha)
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
)
|
||||
|
||||
type CleanedAsset struct {
|
||||
Size int64
|
||||
File *os.File
|
||||
Sha string
|
||||
mediafilepath string
|
||||
@ -22,27 +23,11 @@ func Clean(reader io.Reader) (*CleanedAsset, error) {
|
||||
|
||||
sha1Hash := sha1.New()
|
||||
writer := io.MultiWriter(sha1Hash, tmp)
|
||||
io.Copy(writer, reader)
|
||||
written, _ := io.Copy(writer, reader)
|
||||
|
||||
return &CleanedAsset{tmp, hex.EncodeToString(sha1Hash.Sum(nil)), ""}, nil
|
||||
return &CleanedAsset{written, tmp, hex.EncodeToString(sha1Hash.Sum(nil)), ""}, nil
|
||||
}
|
||||
|
||||
func (a *CleanedAsset) Writer(writer io.Writer) io.WriteCloser {
|
||||
if stat := a.Stat(); stat == nil {
|
||||
return NewWriter(a, writer)
|
||||
}
|
||||
|
||||
return NewExistingWriter(a, writer)
|
||||
}
|
||||
|
||||
func (a *CleanedAsset) Path() string {
|
||||
if len(a.mediafilepath) == 0 {
|
||||
a.mediafilepath = gitmedia.LocalMediaPath(a.Sha)
|
||||
}
|
||||
return a.mediafilepath
|
||||
}
|
||||
|
||||
func (a *CleanedAsset) Stat() os.FileInfo {
|
||||
stat, _ := os.Stat(a.Path())
|
||||
return stat
|
||||
func (a *CleanedAsset) Close() error {
|
||||
return os.Remove(a.File.Name())
|
||||
}
|
||||
|
@ -1,53 +0,0 @@
|
||||
package gitmediafilters
|
||||
|
||||
import (
|
||||
".."
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
)
|
||||
|
||||
// git media clean writer that outputs the large asset meta data to stdin, and
|
||||
// deletes the temp file. This is used directly if the large asset has been
|
||||
// saved to the git media directory already.
|
||||
type ExistingWriter struct {
|
||||
tempfile *os.File
|
||||
writer io.Writer
|
||||
}
|
||||
|
||||
func NewExistingWriter(cleaned *CleanedAsset, writer io.Writer) *ExistingWriter {
|
||||
return &ExistingWriter{cleaned.File, writer}
|
||||
}
|
||||
|
||||
func (w *ExistingWriter) Write(buf []byte) (int, error) {
|
||||
return w.writer.Write(buf)
|
||||
}
|
||||
|
||||
func (w *ExistingWriter) Close() error {
|
||||
return os.Remove(w.tempfile.Name())
|
||||
}
|
||||
|
||||
type Writer struct {
|
||||
*ExistingWriter
|
||||
}
|
||||
|
||||
// a git media clean writer that writes the large asset data to the local
|
||||
// git media directory. Also embeds an ExistingWriter.
|
||||
func NewWriter(cleaned *CleanedAsset, writer io.Writer) *Writer {
|
||||
mediafile := gitmedia.LocalMediaPath(cleaned.Sha)
|
||||
|
||||
if err := os.Rename(cleaned.File.Name(), mediafile); err != nil {
|
||||
fmt.Printf("Unable to move %s to %s\n", cleaned.File.Name(), mediafile)
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return &Writer{NewExistingWriter(cleaned, writer)}
|
||||
}
|
||||
|
||||
func (w *Writer) Write(buf []byte) (int, error) {
|
||||
return w.writer.Write(buf)
|
||||
}
|
||||
|
||||
func (w *Writer) Close() error {
|
||||
return w.ExistingWriter.Close()
|
||||
}
|
Loading…
Reference in New Issue
Block a user