diff --git a/cmd/moby/main.go b/cmd/moby/main.go index 33a262585..f7e169863 100644 --- a/cmd/moby/main.go +++ b/cmd/moby/main.go @@ -17,6 +17,9 @@ var ( // GitCommit hash, set at compile time GitCommit = "unknown" + + // MobyDir is the location of the cache directory ~/.moby by default + MobyDir string ) // infoFormatter overrides the default format for Info() log events to @@ -37,6 +40,13 @@ func version() { os.Exit(0) } +const mobyDefaultDir string = ".moby" + +func defaultMobyConfigDir() string { + home := homeDir() + return filepath.Join(home, mobyDefaultDir) +} + func main() { flag.Usage = func() { fmt.Printf("USAGE: %s [options] COMMAND\n\n", filepath.Base(os.Args[0])) @@ -53,9 +63,13 @@ func main() { flagQuiet := flag.Bool("q", false, "Quiet execution") flagVerbose := flag.Bool("v", false, "Verbose execution") + // config and cache directory + flagConfigDir := flag.String("config", defaultMobyConfigDir(), "Configuration directory") + // Set up logging log.SetFormatter(new(infoFormatter)) log.SetLevel(log.InfoLevel) + flag.Parse() if *flagQuiet && *flagVerbose { fmt.Printf("Can't set quiet and verbose flag at the same time\n") @@ -77,6 +91,12 @@ func main() { os.Exit(1) } + MobyDir = *flagConfigDir + err := os.MkdirAll(MobyDir, 0755) + if err != nil { + log.Fatalf("Could not create config directory [%s]: %v", MobyDir, err) + } + switch args[0] { case "build": build(args[1:]) diff --git a/cmd/moby/util_unix.go b/cmd/moby/util_unix.go new file mode 100644 index 000000000..a71eba8c0 --- /dev/null +++ b/cmd/moby/util_unix.go @@ -0,0 +1,11 @@ +// +build !windows + +package main + +import ( + "os" +) + +func homeDir() string { + return os.Getenv("HOME") +} diff --git a/cmd/moby/util_windows.go b/cmd/moby/util_windows.go new file mode 100644 index 000000000..11b32ecd2 --- /dev/null +++ b/cmd/moby/util_windows.go @@ -0,0 +1,9 @@ +package main + +import ( + "os" +) + +func homeDir() string { + return os.Getenv("USERPROFILE") +}