Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Commit ee67c3e

Browse files
authored
Merge pull request #100 from nkubala/remove_docker
Remove docker dependency for local images
2 parents 46ffad9 + cd46754 commit ee67c3e

File tree

13 files changed

+452
-44
lines changed

13 files changed

+452
-44
lines changed

Godeps/Godeps.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/BUILD.bazel

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ go_library(
1515
"//util:go_default_library",
1616
"//vendor/github.com/docker/docker/client:go_default_library",
1717
"//vendor/github.com/golang/glog:go_default_library",
18-
"//vendor/github.com/pkg/errors:go_default_library",
1918
"//vendor/github.com/spf13/cobra:go_default_library",
2019
"//vendor/github.com/spf13/pflag:go_default_library",
2120
"//version:go_default_library",

cmd/analyze.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ var analyzeCmd = &cobra.Command{
3434
Long: `Analyzes an image using the specifed analyzers as indicated via flags (see documentation for available ones).`,
3535
Args: func(cmd *cobra.Command, args []string) error {
3636
if err := validateArgs(args, checkAnalyzeArgNum); err != nil {
37-
return errors.New(err.Error())
37+
return err
3838
}
3939
if err := checkIfValidAnalyzer(types); err != nil {
40-
return errors.New(err.Error())
40+
return err
4141
}
4242
return nil
4343
},
@@ -51,21 +51,20 @@ var analyzeCmd = &cobra.Command{
5151

5252
func checkAnalyzeArgNum(args []string) error {
5353
if len(args) != 1 {
54-
return errors.New("'analyze' requires one image as an argument: container analyze [image]")
54+
return errors.New("'analyze' requires one image as an argument: container-diff analyze [image]")
5555
}
5656
return nil
5757
}
5858

5959
func analyzeImage(imageArg string, analyzerArgs []string) error {
6060
analyzeTypes, err := differs.GetAnalyzers(analyzerArgs)
6161
if err != nil {
62-
glog.Error(err.Error())
63-
return errors.New("Could not perform image analysis")
62+
return err
6463
}
6564

6665
cli, err := NewClient()
6766
if err != nil {
68-
return fmt.Errorf("Error getting docker client for differ: %s", err)
67+
return fmt.Errorf("Error getting docker client: %s", err)
6968
}
7069
defer cli.Close()
7170
ip := pkgutil.ImagePrepper{
@@ -78,15 +77,13 @@ func analyzeImage(imageArg string, analyzerArgs []string) error {
7877
defer pkgutil.CleanupImage(image)
7978
}
8079
if err != nil {
81-
glog.Error(err.Error())
82-
return errors.New("Could not perform image analysis")
80+
return fmt.Errorf("Error processing image: %s", err)
8381
}
8482

8583
req := differs.SingleRequest{image, analyzeTypes}
8684
analyses, err := req.GetAnalysis()
8785
if err != nil {
88-
glog.Error(err.Error())
89-
return errors.New("Could not perform image analysis")
86+
return fmt.Errorf("Error performing image analysis: %s", err)
9087
}
9188

9289
glog.Info("Retrieving analyses")

cmd/diff.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ var diffCmd = &cobra.Command{
3535
Long: `Compares two images using the specifed analyzers as indicated via flags (see documentation for available ones).`,
3636
Args: func(cmd *cobra.Command, args []string) error {
3737
if err := validateArgs(args, checkDiffArgNum); err != nil {
38-
return errors.New(err.Error())
38+
return err
3939
}
4040
if err := checkIfValidAnalyzer(types); err != nil {
41-
return errors.New(err.Error())
41+
return err
4242
}
4343
return nil
4444
},
@@ -52,21 +52,20 @@ var diffCmd = &cobra.Command{
5252

5353
func checkDiffArgNum(args []string) error {
5454
if len(args) != 2 {
55-
return errors.New("'diff' requires two images as arguments: container diff [image1] [image2]")
55+
return errors.New("'diff' requires two images as arguments: container-diff diff [image1] [image2]")
5656
}
5757
return nil
5858
}
5959

6060
func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
6161
diffTypes, err := differs.GetAnalyzers(diffArgs)
6262
if err != nil {
63-
glog.Error(err.Error())
64-
return errors.New("Could not perform image diff")
63+
return err
6564
}
6665

6766
cli, err := NewClient()
6867
if err != nil {
69-
return fmt.Errorf("Error getting docker client for differ: %s", err)
68+
return err
7069
}
7170
defer cli.Close()
7271
var wg sync.WaitGroup
@@ -102,8 +101,7 @@ func diffImages(image1Arg, image2Arg string, diffArgs []string) error {
102101
req := differs.DiffRequest{*imageMap[image1Arg], *imageMap[image2Arg], diffTypes}
103102
diffs, err := req.GetDiff()
104103
if err != nil {
105-
glog.Error(err.Error())
106-
return errors.New("Could not perform image diff")
104+
return fmt.Errorf("Could not retrieve diff: %s", err)
107105
}
108106
glog.Info("Retrieving diffs")
109107
outputResults(diffs)

cmd/root.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"github.com/GoogleCloudPlatform/container-diff/util"
2828
"github.com/docker/docker/client"
2929
"github.com/golang/glog"
30-
"github.com/pkg/errors"
3130
"github.com/spf13/cobra"
3231
"github.com/spf13/pflag"
3332
)
@@ -98,9 +97,7 @@ func checkIfValidAnalyzer(flagtypes string) error {
9897
analyzers := strings.Split(flagtypes, ",")
9998
for _, name := range analyzers {
10099
if _, exists := differs.Analyzers[name]; !exists {
101-
errMessage := fmt.Sprintf("Argument %s is not a valid analyzer\n", name)
102-
glog.Errorf(errMessage)
103-
return errors.New(errMessage)
100+
return fmt.Errorf("Argument %s is not a valid analyzer", name)
104101
}
105102
}
106103
return nil

differs/differs.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ limitations under the License.
1717
package differs
1818

1919
import (
20-
"errors"
2120
"fmt"
2221

2322
pkgutil "github.com/GoogleCloudPlatform/container-diff/pkg/util"
@@ -98,16 +97,17 @@ func (req SingleRequest) GetAnalysis() (map[string]util.Result, error) {
9897
return results, err
9998
}
10099

101-
func GetAnalyzers(analyzeNames []string) (analyzeFuncs []Analyzer, err error) {
100+
func GetAnalyzers(analyzeNames []string) ([]Analyzer, error) {
101+
var analyzeFuncs []Analyzer
102102
for _, name := range analyzeNames {
103103
if a, exists := Analyzers[name]; exists {
104104
analyzeFuncs = append(analyzeFuncs, a)
105105
} else {
106-
glog.Errorf("Unknown analyzer/differ specified", name)
106+
return nil, fmt.Errorf("Unknown analyzer/differ specified: %s", name)
107107
}
108108
}
109109
if len(analyzeFuncs) == 0 {
110-
err = errors.New("No known analyzers/differs specified")
110+
return nil, fmt.Errorf("No known analyzers/differs specified")
111111
}
112-
return
112+
return analyzeFuncs, nil
113113
}

pkg/util/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ go_library(
1616
visibility = ["//visibility:public"],
1717
deps = [
1818
"//vendor/github.com/containers/image/docker:go_default_library",
19+
"//vendor/github.com/containers/image/docker/daemon:go_default_library",
1920
"//vendor/github.com/containers/image/docker/tarfile:go_default_library",
2021
"//vendor/github.com/containers/image/pkg/compression:go_default_library",
2122
"//vendor/github.com/containers/image/types:go_default_library",

pkg/util/daemon_prepper.go

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ package util
1818

1919
import (
2020
"context"
21-
"os"
2221
"regexp"
2322

23+
"github.com/containers/image/docker/daemon"
2424
"github.com/golang/glog"
2525
)
2626

@@ -45,29 +45,19 @@ func (p DaemonPrepper) SupportsImage() bool {
4545
}
4646

4747
func (p DaemonPrepper) GetFileSystem() (string, error) {
48-
tarPath, err := saveImageToTar(p.Client, p.Source, p.Source)
48+
ref, err := daemon.ParseReference(p.Source)
4949
if err != nil {
5050
return "", err
5151
}
52-
53-
defer os.Remove(tarPath)
54-
return getImageFromTar(tarPath)
52+
return getFileSystemFromReference(ref, p.Source)
5553
}
5654

5755
func (p DaemonPrepper) GetConfig() (ConfigSchema, error) {
58-
inspect, _, err := p.Client.ImageInspectWithRaw(context.Background(), p.Source)
56+
ref, err := daemon.ParseReference(p.Source)
5957
if err != nil {
6058
return ConfigSchema{}, err
6159
}
62-
63-
config := ConfigObject{
64-
Env: inspect.Config.Env,
65-
}
66-
history := p.GetHistory()
67-
return ConfigSchema{
68-
Config: config,
69-
History: history,
70-
}, nil
60+
return getConfigFromReference(ref, p.Source)
7161
}
7262

7363
func (p DaemonPrepper) GetHistory() []ImageHistoryItem {

pkg/util/tar_utils.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,9 @@ func UnTar(filename string, target string) error {
106106
}
107107

108108
func IsTar(path string) bool {
109-
return filepath.Ext(path) == ".tar"
109+
return filepath.Ext(path) == ".tar" ||
110+
filepath.Ext(path) == ".tar.gz" ||
111+
filepath.Ext(path) == ".tgz"
110112
}
111113

112114
func CheckTar(image string) bool {

vendor/github.com/containers/image/docker/daemon/BUILD.bazel

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/containers/image/docker/daemon/daemon_dest.go

Lines changed: 128 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)