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
|
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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue