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:
parent
104b20a133
commit
49c72506ac
3 changed files with 22 additions and 20 deletions
|
@ -1,37 +1,40 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/docker/docker/engine"
|
||||
"github.com/docker/docker/api/types"
|
||||
"github.com/docker/docker/pkg/archive"
|
||||
flag "github.com/docker/docker/pkg/mflag"
|
||||
)
|
||||
|
||||
// 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
|
||||
func (cli *DockerCli) CmdDiff(args ...string) error {
|
||||
cmd := cli.Subcmd("diff", "CONTAINER", "Inspect changes on a container's filesystem", true)
|
||||
cmd.Require(flag.Exact, 1)
|
||||
|
||||
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 {
|
||||
return err
|
||||
}
|
||||
|
||||
outs := engine.NewTable("", 0)
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
changes := []types.ContainerChange{}
|
||||
err = json.NewDecoder(rdr).Decode(&changes)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, change := range outs.Data {
|
||||
|
||||
for _, change := range changes {
|
||||
var kind string
|
||||
switch change.GetInt("Kind") {
|
||||
switch change.Kind {
|
||||
case archive.ChangeModify:
|
||||
kind = "C"
|
||||
case archive.ChangeAdd:
|
||||
|
@ -39,7 +42,8 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
|
|||
case archive.ChangeDelete:
|
||||
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
|
||||
}
|
||||
|
|
|
@ -35,3 +35,9 @@ type ContainerWaitResponse struct {
|
|||
type ContainerCommitResponse struct {
|
||||
ID string `json:"Id"`
|
||||
}
|
||||
|
||||
// GET "/containers/{name:.*}/changes"
|
||||
type ContainerChange struct {
|
||||
Kind int
|
||||
Path string
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package daemon
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/docker/docker/engine"
|
||||
|
@ -17,21 +18,12 @@ func (daemon *Daemon) ContainerChanges(job *engine.Job) error {
|
|||
return err
|
||||
}
|
||||
|
||||
outs := engine.NewTable("", 0)
|
||||
changes, err := container.Changes()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, change := range changes {
|
||||
out := &engine.Env{}
|
||||
if err := out.Import(change); err != nil {
|
||||
return err
|
||||
}
|
||||
outs.Add(out)
|
||||
}
|
||||
|
||||
if _, err := outs.WriteListTo(job.Stdout); err != nil {
|
||||
if err = json.NewEncoder(job.Stdout).Encode(changes); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue