diff --git a/cmd/moby/build.go b/cmd/moby/build.go index 110944ce5..dd67b8049 100644 --- a/cmd/moby/build.go +++ b/cmd/moby/build.go @@ -9,7 +9,6 @@ import ( "net/http" "os" "path/filepath" - "strconv" "strings" "github.com/moby/tool/src/moby" @@ -32,27 +31,6 @@ func (f *formatList) Set(value string) error { return nil } -// Parse a string which is either a number in MB, or a number with -// either M (for Megabytes) or G (for GigaBytes) as a suffix and -// returns the number in MB. Return 0 if string is empty. -func getDiskSizeMB(s string) (int, error) { - if s == "" { - return 0, nil - } - sz := len(s) - if strings.HasSuffix(s, "G") { - i, err := strconv.Atoi(s[:sz-1]) - if err != nil { - return 0, err - } - return i * 1024, nil - } - if strings.HasSuffix(s, "M") { - s = s[:sz-1] - } - return strconv.Atoi(s) -} - // Process the build arguments and execute build func build(args []string) { var buildFormats formatList diff --git a/cmd/moby/util.go b/cmd/moby/util.go new file mode 100644 index 000000000..56fd3a231 --- /dev/null +++ b/cmd/moby/util.go @@ -0,0 +1,29 @@ +package main + +import ( + "strconv" + "strings" +) + +// This function parses the "size" parameter of a disk specification +// and returns the size in MB. The "size" parameter defaults to GB, but +// the unit can be explicitly set with either a G (for GB) or M (for +// MB). It returns the disk size in MB. +func getDiskSizeMB(s string) (int, error) { + if s == "" { + return 0, nil + } + sz := len(s) + if strings.HasSuffix(s, "M") { + return strconv.Atoi(s[:sz-1]) + } + if strings.HasSuffix(s, "G") { + s = s[:sz-1] + } + + i, err := strconv.Atoi(s) + if err != nil { + return 0, err + } + return 1024 * i, nil +} diff --git a/src/moby/build.go b/src/moby/build.go index 56892ae18..415c08c5e 100644 --- a/src/moby/build.go +++ b/src/moby/build.go @@ -142,7 +142,7 @@ func outputImage(image *Image, section string, prefix string, m Moby, idMap map[ // Build performs the actual build process func Build(m Moby, w io.Writer, pull bool, tp string) error { if MobyDir == "" { - return fmt.Errorf("MobyDir for temporary storage not set") + MobyDir = defaultMobyConfigDir() } iw := tar.NewWriter(w) diff --git a/src/moby/util.go b/src/moby/util.go index b262e0066..56afefb88 100644 --- a/src/moby/util.go +++ b/src/moby/util.go @@ -1,6 +1,16 @@ package moby +import ( + "path/filepath" +) + var ( - // MobyDir is the location of the cache directory which should be set by the caller + // MobyDir is the location of the cache directory, defaults to ~/.moby MobyDir string ) + +func defaultMobyConfigDir() string { + mobyDefaultDir := ".moby" + home := homeDir() + return filepath.Join(home, mobyDefaultDir) +}