瀏覽代碼

fix docker build and docker events output

Victor Vieux 12 年之前
父節點
當前提交
213365c2d2
共有 2 個文件被更改,包括 9 次插入12 次删除
  1. 5 4
      server.go
  2. 4 8
      utils/utils.go

+ 5 - 4
server.go

@@ -422,7 +422,7 @@ func (srv *Server) pullImage(r *registry.Registry, out io.Writer, imgID, endpoin
 	// FIXME: Launch the getRemoteImage() in goroutines
 	// FIXME: Launch the getRemoteImage() in goroutines
 	for _, id := range history {
 	for _, id := range history {
 		if !srv.runtime.graph.Exists(id) {
 		if !srv.runtime.graph.Exists(id) {
-			out.Write(sf.FormatStatus(utils.TruncateID(id), "Pulling metadata"))
+			out.Write(sf.FormatProgress(utils.TruncateID(id), "Pulling", "metadata"))
 			imgJSON, imgSize, err := r.GetRemoteImageJSON(id, endpoint, token)
 			imgJSON, imgSize, err := r.GetRemoteImageJSON(id, endpoint, token)
 			if err != nil {
 			if err != nil {
 				// FIXME: Keep goging in case of error?
 				// FIXME: Keep goging in case of error?
@@ -434,7 +434,7 @@ func (srv *Server) pullImage(r *registry.Registry, out io.Writer, imgID, endpoin
 			}
 			}
 
 
 			// Get the layer
 			// Get the layer
-			out.Write(sf.FormatStatus(utils.TruncateID(id), "Pulling fs layer"))
+			out.Write(sf.FormatProgress(utils.TruncateID(id), "Pulling", "fs layer"))
 			layer, err := r.GetRemoteImageLayer(img.ID, endpoint, token)
 			layer, err := r.GetRemoteImageLayer(img.ID, endpoint, token)
 			if err != nil {
 			if err != nil {
 				return err
 				return err
@@ -500,7 +500,7 @@ func (srv *Server) pullRepository(r *registry.Registry, out io.Writer, localName
 				errors <- nil
 				errors <- nil
 				return
 				return
 			}
 			}
-			out.Write(sf.FormatStatus(utils.TruncateID(img.ID), "Pulling image (%s) from %s", img.Tag, localName))
+			out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Pulling", fmt.Sprintf("image (%s) from %s", img.Tag, localName)))
 			success := false
 			success := false
 			for _, ep := range repoData.Endpoints {
 			for _, ep := range repoData.Endpoints {
 				if err := srv.pullImage(r, out, img.ID, ep, repoData.Tokens, sf); err != nil {
 				if err := srv.pullImage(r, out, img.ID, ep, repoData.Tokens, sf); err != nil {
@@ -716,11 +716,12 @@ func (srv *Server) pushImage(r *registry.Registry, out io.Writer, remote, imgID,
 	}
 	}
 
 
 	// Send the layer
 	// Send the layer
-	if checksum, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf.FormatProgress("", "Pushing", "%8v/%v (%v)"), sf, true), ep, token, jsonRaw); err != nil {
+	if checksum, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf.FormatProgress("", "Pushing", "%8v/%v (%v)"), sf, false), ep, token, jsonRaw); err != nil {
 		return "", err
 		return "", err
 	} else {
 	} else {
 		imgData.Checksum = checksum
 		imgData.Checksum = checksum
 	}
 	}
+	out.Write(sf.FormatStatus("", ""))
 
 
 	// Send the checksum
 	// Send the checksum
 	if err := r.PushImageChecksumRegistry(imgData, ep, token); err != nil {
 	if err := r.PushImageChecksumRegistry(imgData, ep, token); err != nil {

+ 4 - 8
utils/utils.go

@@ -79,7 +79,6 @@ type progressReader struct {
 func (r *progressReader) Read(p []byte) (n int, err error) {
 func (r *progressReader) Read(p []byte) (n int, err error) {
 	read, err := io.ReadCloser(r.reader).Read(p)
 	read, err := io.ReadCloser(r.reader).Read(p)
 	r.readProgress += read
 	r.readProgress += read
-
 	updateEvery := 1024 * 512 //512kB
 	updateEvery := 1024 * 512 //512kB
 	if r.readTotal > 0 {
 	if r.readTotal > 0 {
 		// Update progress for every 1% read if 1% < 512kB
 		// Update progress for every 1% read if 1% < 512kB
@@ -645,7 +644,6 @@ func (jm *JSONMessage) Display(out io.Writer) error {
 		}
 		}
 		return jm.Error
 		return jm.Error
 	}
 	}
-	fmt.Fprintf(out, "%c[2K", 27)
 	if jm.Time != 0 {
 	if jm.Time != 0 {
 		fmt.Fprintf(out, "[%s] ", time.Unix(jm.Time, 0))
 		fmt.Fprintf(out, "[%s] ", time.Unix(jm.Time, 0))
 	}
 	}
@@ -653,28 +651,26 @@ func (jm *JSONMessage) Display(out io.Writer) error {
 		fmt.Fprintf(out, "%s: ", jm.ID)
 		fmt.Fprintf(out, "%s: ", jm.ID)
 	}
 	}
 	if jm.Progress != "" {
 	if jm.Progress != "" {
+		fmt.Fprintf(out, "%c[2K", 27)
 		fmt.Fprintf(out, "%s %s\r", jm.Status, jm.Progress)
 		fmt.Fprintf(out, "%s %s\r", jm.Status, jm.Progress)
 	} else {
 	} else {
-		fmt.Fprintf(out, "%s\r", jm.Status)
-	}
-	if jm.ID == "" {
-		fmt.Fprintf(out, "\n")
+		fmt.Fprintf(out, "%s\r\n", jm.Status)
 	}
 	}
 	return nil
 	return nil
 }
 }
 
 
 func DisplayJSONMessagesStream(in io.Reader, out io.Writer) error {
 func DisplayJSONMessagesStream(in io.Reader, out io.Writer) error {
 	dec := json.NewDecoder(in)
 	dec := json.NewDecoder(in)
-	jm := JSONMessage{}
 	ids := make(map[string]int)
 	ids := make(map[string]int)
 	diff := 0
 	diff := 0
 	for {
 	for {
+		jm := JSONMessage{}
 		if err := dec.Decode(&jm); err == io.EOF {
 		if err := dec.Decode(&jm); err == io.EOF {
 			break
 			break
 		} else if err != nil {
 		} else if err != nil {
 			return err
 			return err
 		}
 		}
-		if jm.ID != "" {
+		if jm.Progress != "" && jm.ID != "" {
 			line, ok := ids[jm.ID]
 			line, ok := ids[jm.ID]
 			if !ok {
 			if !ok {
 				line = len(ids)
 				line = len(ids)