Explorar el Código

Add "combine" command status reporting

Signed-off-by: Vadim Markovtsev <vadim@sourced.tech>
Vadim Markovtsev hace 6 años
padre
commit
dafb24e28c
Se han modificado 1 ficheros con 18 adiciones y 3 borrados
  1. 18 3
      cmd/hercules/combine.go

+ 18 - 3
cmd/hercules/combine.go

@@ -12,6 +12,7 @@ import (
 
 	"github.com/gogo/protobuf/proto"
 	"github.com/spf13/cobra"
+	progress "gopkg.in/cheggaaa/pb.v1"
 	"gopkg.in/src-d/hercules.v7"
 	"gopkg.in/src-d/hercules.v7/internal/pb"
 )
@@ -32,17 +33,28 @@ var combineCmd = &cobra.Command{
 			io.Copy(os.Stdout, bufio.NewReader(file))
 			return
 		}
-		repos := []string{}
+		var repos []string
 		allErrors := map[string][]string{}
 		mergedResults := map[string]interface{}{}
 		mergedMetadata := &hercules.CommonAnalysisResult{}
-		for _, fileName := range files {
+		var fileName string
+		bar := progress.New(len(files))
+		bar.Callback = func(msg string) {
+			os.Stderr.WriteString("\033[2K\r" + msg + " " + fileName)
+		}
+		bar.NotPrint = true
+		bar.ShowPercent = false
+		bar.ShowSpeed = false
+		bar.SetMaxWidth(80).Start()
+		for _, fileName = range files {
+			bar.Increment()
 			anotherResults, anotherMetadata, errs := loadMessage(fileName, &repos)
 			if anotherMetadata != nil {
 				mergeResults(mergedResults, mergedMetadata, anotherResults, anotherMetadata)
 			}
 			allErrors[fileName] = errs
 		}
+		bar.Finish()
 		printErrors(allErrors)
 		sort.Strings(repos)
 		if mergedMetadata == nil {
@@ -59,8 +71,11 @@ var combineCmd = &cobra.Command{
 		mergedMetadata.FillMetadata(mergedMessage.Header)
 		for key, val := range mergedResults {
 			buffer := bytes.Buffer{}
-			hercules.Registry.Summon(key)[0].(hercules.LeafPipelineItem).Serialize(
+			err := hercules.Registry.Summon(key)[0].(hercules.LeafPipelineItem).Serialize(
 				val, true, &buffer)
+			if err != nil {
+				panic(err)
+			}
 			mergedMessage.Contents[key] = buffer.Bytes()
 		}
 		serialized, err := proto.Marshal(&mergedMessage)