]> Sergey Matveev's repositories - syncer.git/blobdiff - syncer.go
Pretty output printer
[syncer.git] / syncer.go
index 3a9e68a23a3e1ca3233e4a604aed966fc8ad3ed6..dc48314e044c0dbc731c0dd1bc414b097d9b7d28 100644 (file)
--- a/syncer.go
+++ b/syncer.go
@@ -1,6 +1,6 @@
 /*
 syncer -- stateful file/device data syncer.
-Copyright (C) 2015 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2015-2016 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -45,11 +45,6 @@ type SyncEvent struct {
        data []byte
 }
 
-func prn(s string) {
-       os.Stdout.Write([]byte(s))
-       os.Stdout.Sync()
-}
-
 func main() {
        flag.Parse()
        bs := *blkSize * int64(1<<10)
@@ -155,7 +150,7 @@ func main() {
        syncs := make(chan chan SyncEvent, workers)
 
        // Writer
-       prn("[")
+       prn := NewPrinter(blocks)
        finished := make(chan struct{})
        go func() {
                var event SyncEvent
@@ -188,10 +183,10 @@ func main() {
                        sumState := state[i*blake2b.Size : i*blake2b.Size+blake2b.Size]
                        if bytes.Compare(sumState, sum[:]) != 0 {
                                sync <- SyncEvent{i, buf, buf[:n]}
-                               prn("%")
+                               prn.Changed()
                        } else {
                                sync <- SyncEvent{i, buf, nil}
-                               prn(".")
+                               prn.Unchanged()
                        }
                        copy(sumState, sum[:])
                        close(sync)
@@ -199,7 +194,7 @@ func main() {
        }
        close(syncs)
        <-finished
-       prn("]\n")
+       prn.Output()
 
        log.Println("Saving state")
        stateFile.Write(state)