mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Implement docker diff with standalone client lib.
Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
parent
136e8fef64
commit
e562ac42f4
2 changed files with 26 additions and 10 deletions
|
@ -1,10 +1,8 @@
|
||||||
package client
|
package client
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/docker/docker/api/types"
|
|
||||||
Cli "github.com/docker/docker/cli"
|
Cli "github.com/docker/docker/cli"
|
||||||
"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"
|
||||||
|
@ -27,18 +25,11 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
|
||||||
return fmt.Errorf("Container name cannot be empty")
|
return fmt.Errorf("Container name cannot be empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
serverResp, err := cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, nil)
|
changes, err := cli.client.ContainerDiff(cmd.Arg(0))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
defer serverResp.body.Close()
|
|
||||||
|
|
||||||
changes := []types.ContainerChange{}
|
|
||||||
if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, change := range changes {
|
for _, change := range changes {
|
||||||
var kind string
|
var kind string
|
||||||
switch change.Kind {
|
switch change.Kind {
|
||||||
|
|
25
api/client/lib/diff.go
Normal file
25
api/client/lib/diff.go
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
package lib
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ContainerDiff shows differences in a container filesystem since it was started.
|
||||||
|
func (cli *Client) ContainerDiff(containerID string) ([]types.ContainerChange, error) {
|
||||||
|
var changes []types.ContainerChange
|
||||||
|
|
||||||
|
serverResp, err := cli.GET("/containers/"+containerID+"/changes", url.Values{}, nil)
|
||||||
|
if err != nil {
|
||||||
|
return changes, err
|
||||||
|
}
|
||||||
|
defer serverResp.body.Close()
|
||||||
|
|
||||||
|
if err := json.NewDecoder(serverResp.body).Decode(&changes); err != nil {
|
||||||
|
return changes, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return changes, nil
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue