forked from Elara6331/itd
Implement file transfer progress
This commit is contained in:
@@ -24,6 +24,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/cheggaaa/pb/v3"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
@@ -58,16 +59,33 @@ var readCmd = &cobra.Command{
|
||||
|
||||
client := viper.Get("client").(*api.Client)
|
||||
|
||||
err = client.ReadFile(path, args[0])
|
||||
progress, err := client.ReadFile(path, args[0])
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("Error reading remote file")
|
||||
}
|
||||
|
||||
// Create progress bar template
|
||||
barTmpl := `{{counters . }} B {{bar . "|" "-" (cycle .) " " "|"}} {{percent . }} {{rtime . "%s"}}`
|
||||
// Start full bar at 0 total
|
||||
bar := pb.ProgressBarTemplate(barTmpl).Start(0)
|
||||
// Get progress events
|
||||
for event := range progress {
|
||||
// Set total bytes in progress bar
|
||||
bar.SetTotal(int64(event.Total))
|
||||
// Set amount of bytes sent in progress bar
|
||||
bar.SetCurrent(int64(event.Sent))
|
||||
// If transfer finished, break
|
||||
if event.Done {
|
||||
bar.Finish()
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if args[1] == "-" {
|
||||
io.Copy(os.Stdout, tmpFile)
|
||||
os.Stdout.WriteString("\n")
|
||||
os.Stdout.Sync()
|
||||
tmpFile.Close()
|
||||
os.Remove(path)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
@@ -24,6 +24,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/cheggaaa/pb/v3"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
@@ -64,10 +65,27 @@ var writeCmd = &cobra.Command{
|
||||
defer os.Remove(path)
|
||||
}
|
||||
|
||||
err = client.WriteFile(path, args[1])
|
||||
progress, err := client.WriteFile(path, args[1])
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("Error moving file or directory")
|
||||
}
|
||||
|
||||
// Create progress bar template
|
||||
barTmpl := `{{counters . }} B {{bar . "|" "-" (cycle .) " " "|"}} {{percent . }} {{rtime . "%s"}}`
|
||||
// Start full bar at 0 total
|
||||
bar := pb.ProgressBarTemplate(barTmpl).Start(0)
|
||||
// Get progress events
|
||||
for event := range progress {
|
||||
// Set total bytes in progress bar
|
||||
bar.SetTotal(int64(event.Total))
|
||||
// Set amount of bytes sent in progress bar
|
||||
bar.SetCurrent(int64(event.Sent))
|
||||
// If transfer finished, break
|
||||
if event.Done {
|
||||
bar.Finish()
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user