From ebac8beaaaa74e8d90fd676422cc71dae6603381 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Fri, 21 Sep 2018 22:25:01 -0700 Subject: [PATCH] use stderr for output --- main.go | 37 +++++++++++++++++++++++++++++++++++++ src/recipient/recipient.go | 1 + src/sender/sender.go | 1 + 3 files changed, 39 insertions(+) diff --git a/main.go b/main.go index 183934f..c3fa0f2 100644 --- a/main.go +++ b/main.go @@ -4,8 +4,10 @@ import ( "errors" "fmt" "os" + "path/filepath" "time" + humanize "github.com/dustin/go-humanize" "github.com/schollz/croc/src/croc" "github.com/schollz/utils" "github.com/urfave/cli" @@ -112,6 +114,30 @@ func send(c *cli.Context) error { // generate code phrase codePhrase = utils.GetRandomName() } + + // print the text + finfo, err := os.Stat(fname) + if err != nil { + return err + } + _, filename := filepath.Split(fname) + fileOrFolder := "file" + fsize := finfo.Size() + if finfo.IsDir() { + fileOrFolder = "folder" + fsize, err = dirSize(fname) + if err != nil { + return err + } + } + fmt.Fprintf(os.Stderr, + "Sending %s %s name '%s'\nCode is: %s\nOn the other computer, please run:\n\ncroc %s", + humanize.Bytes(uint64(fsize)), + fileOrFolder, + filename, + codePhrase, + codePhrase, + ) return cr.Send(fname, codePhrase) } @@ -130,3 +156,14 @@ func relay(c *cli.Context) error { cr.CurveType = c.String("curve") return cr.Relay() } + +func dirSize(path string) (int64, error) { + var size int64 + err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error { + if !info.IsDir() { + size += info.Size() + } + return err + }) + return size, err +} diff --git a/src/recipient/recipient.go b/src/recipient/recipient.go index 71e899d..7b2985f 100644 --- a/src/recipient/recipient.go +++ b/src/recipient/recipient.go @@ -101,6 +101,7 @@ func receive(c *websocket.Conn, codephrase string) (err error) { int(fstats.Size), progressbar.OptionSetRenderBlankState(true), progressbar.OptionSetBytes(int(fstats.Size)), + progressbar.OptionSetWriter(os.Stderr), ) c.WriteMessage(websocket.BinaryMessage, []byte("ready")) for { diff --git a/src/sender/sender.go b/src/sender/sender.go index 435b207..1905125 100644 --- a/src/sender/sender.go +++ b/src/sender/sender.go @@ -136,6 +136,7 @@ func send(c *websocket.Conn, fname string, codephrase string) (err error) { int(fstats.Size), progressbar.OptionSetRenderBlankState(true), progressbar.OptionSetBytes(int(fstats.Size)), + progressbar.OptionSetWriter(os.Stderr), ) for { bytesread, err := f.Read(buffer)