remove the clean writers

no longer writing a metadata file
This commit is contained in:
rick 2013-10-04 11:19:11 -06:00 committed by Rick Olson
parent a3ad1a5d15
commit fbdb9153aa
3 changed files with 20 additions and 76 deletions

@ -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()
}