diff.go 922 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package client
  2. import (
  3. "fmt"
  4. "github.com/docker/docker/engine"
  5. "github.com/docker/docker/pkg/archive"
  6. flag "github.com/docker/docker/pkg/mflag"
  7. "github.com/docker/docker/utils"
  8. )
  9. func (cli *DockerCli) CmdDiff(args ...string) error {
  10. cmd := cli.Subcmd("diff", "CONTAINER", "Inspect changes on a container's filesystem", true)
  11. cmd.Require(flag.Exact, 1)
  12. utils.ParseFlags(cmd, args, true)
  13. body, _, err := readBody(cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, false))
  14. if err != nil {
  15. return err
  16. }
  17. outs := engine.NewTable("", 0)
  18. if _, err := outs.ReadListFrom(body); err != nil {
  19. return err
  20. }
  21. for _, change := range outs.Data {
  22. var kind string
  23. switch change.GetInt("Kind") {
  24. case archive.ChangeModify:
  25. kind = "C"
  26. case archive.ChangeAdd:
  27. kind = "A"
  28. case archive.ChangeDelete:
  29. kind = "D"
  30. }
  31. fmt.Fprintf(cli.out, "%s %s\n", kind, change.Get("Path"))
  32. }
  33. return nil
  34. }