From fbdb9153aa8fb960f379c88fbf993297dd0e2e4f Mon Sep 17 00:00:00 2001 From: rick Date: Fri, 4 Oct 2013 11:19:11 -0600 Subject: [PATCH] remove the clean writers no longer writing a metadata file --- cmd/git-media-clean.go | 18 +++++++++++--- filters/clean.go | 25 ++++---------------- filters/writers.go | 53 ------------------------------------------ 3 files changed, 20 insertions(+), 76 deletions(-) delete mode 100644 filters/writers.go diff --git a/cmd/git-media-clean.go b/cmd/git-media-clean.go index 4c29eb4e..b8edce5e 100644 --- a/cmd/git-media-clean.go +++ b/cmd/git-media-clean.go @@ -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) } diff --git a/filters/clean.go b/filters/clean.go index 08d1a4a1..5810f651 100644 --- a/filters/clean.go +++ b/filters/clean.go @@ -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()) } diff --git a/filters/writers.go b/filters/writers.go deleted file mode 100644 index afa76758..00000000 --- a/filters/writers.go +++ /dev/null @@ -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() -}