1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Remove use of Table from 'docker diff'

Signed-off-by: Doug Davis <dug@us.ibm.com>
This commit is contained in:
Doug Davis 2015-04-02 15:52:34 -07:00
parent 104b20a133
commit 49c72506ac
3 changed files with 22 additions and 20 deletions

View file

@ -1,37 +1,40 @@
package client package client
import ( import (
"encoding/json"
"fmt" "fmt"
"github.com/docker/docker/engine" "github.com/docker/docker/api/types"
"github.com/docker/docker/pkg/archive" "github.com/docker/docker/pkg/archive"
flag "github.com/docker/docker/pkg/mflag" flag "github.com/docker/docker/pkg/mflag"
) )
// CmdDiff shows changes on a container's filesystem. // CmdDiff shows changes on a container's filesystem.
// //
// Each changed file is printed on a separate line, prefixed with a single character that indicates the status of the file: C (modified), A (added), or D (deleted). // Each changed file is printed on a separate line, prefixed with a single
// character that indicates the status of the file: C (modified), A (added),
// or D (deleted).
// //
// Usage: docker diff CONTAINER // Usage: docker diff CONTAINER
func (cli *DockerCli) CmdDiff(args ...string) error { func (cli *DockerCli) CmdDiff(args ...string) error {
cmd := cli.Subcmd("diff", "CONTAINER", "Inspect changes on a container's filesystem", true) cmd := cli.Subcmd("diff", "CONTAINER", "Inspect changes on a container's filesystem", true)
cmd.Require(flag.Exact, 1) cmd.Require(flag.Exact, 1)
cmd.ParseFlags(args, true) cmd.ParseFlags(args, true)
body, _, err := readBody(cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, nil)) rdr, _, err := cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, nil)
if err != nil { if err != nil {
return err return err
} }
outs := engine.NewTable("", 0) changes := []types.ContainerChange{}
if _, err := outs.ReadListFrom(body); err != nil { err = json.NewDecoder(rdr).Decode(&changes)
if err != nil {
return err return err
} }
for _, change := range outs.Data {
for _, change := range changes {
var kind string var kind string
switch change.GetInt("Kind") { switch change.Kind {
case archive.ChangeModify: case archive.ChangeModify:
kind = "C" kind = "C"
case archive.ChangeAdd: case archive.ChangeAdd:
@ -39,7 +42,8 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
case archive.ChangeDelete: case archive.ChangeDelete:
kind = "D" kind = "D"
} }
fmt.Fprintf(cli.out, "%s %s\n", kind, change.Get("Path")) fmt.Fprintf(cli.out, "%s %s\n", kind, change.Path)
} }
return nil return nil
} }

View file

@ -35,3 +35,9 @@ type ContainerWaitResponse struct {
type ContainerCommitResponse struct { type ContainerCommitResponse struct {
ID string `json:"Id"` ID string `json:"Id"`
} }
// GET "/containers/{name:.*}/changes"
type ContainerChange struct {
Kind int
Path string
}

View file

@ -1,6 +1,7 @@
package daemon package daemon
import ( import (
"encoding/json"
"fmt" "fmt"
"github.com/docker/docker/engine" "github.com/docker/docker/engine"
@ -17,21 +18,12 @@ func (daemon *Daemon) ContainerChanges(job *engine.Job) error {
return err return err
} }
outs := engine.NewTable("", 0)
changes, err := container.Changes() changes, err := container.Changes()
if err != nil { if err != nil {
return err return err
} }
for _, change := range changes { if err = json.NewEncoder(job.Stdout).Encode(changes); err != nil {
out := &engine.Env{}
if err := out.Import(change); err != nil {
return err
}
outs.Add(out)
}
if _, err := outs.WriteListTo(job.Stdout); err != nil {
return err return err
} }