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

Commit 5af1d44

Browse files
committed
adding parsing of command line and environment for cache directory
1 parent 6fd2686 commit 5af1d44

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

cmd/root.go

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ var cacheDir string
4343
var LogLevel string
4444
var format string
4545

46+
const containerDiffEnvCacheDir = "CONTAINER_DIFF_CACHEDIR"
47+
4648
type validatefxn func(args []string) error
4749

4850
var RootCmd = &cobra.Command{
@@ -130,23 +132,33 @@ func getImage(imageName string) (pkgutil.Image, error) {
130132
var cachePath string
131133
var err error
132134
if !noCache {
133-
cachePath, err = getCacheDir(imageName, cacheDir)
135+
cachePath, err = getCacheDir(imageName)
134136
if err != nil {
135137
return pkgutil.Image{}, err
136138
}
137139
}
138140
return pkgutil.GetImage(imageName, includeLayers(), cachePath)
139141
}
140142

141-
func getCacheDir(imageName string, cacheDir string) (string, error) {
142-
// If the user has specified a custom cache directory
143-
// TODO: write me
144-
// else
145-
dir, err := homedir.Dir()
146-
if err != nil {
147-
return "", err
148-
}
149-
rootDir := filepath.Join(dir, ".container-diff", "cache")
143+
func getCacheDir(imageName string) (string, error) {
144+
145+
// First preference for cache is set at command line
146+
if cacheDir == "" {
147+
148+
// second preference is environment
149+
cacheDir = os.Getenv(containerDiffEnvCacheDir)
150+
}
151+
152+
// Third preference (default) is set at $HOME
153+
if cacheDir == "" {
154+
dir, err := homedir.Dir()
155+
if err != nil {
156+
return "", err
157+
} else {
158+
cacheDir = dir
159+
}
160+
}
161+
rootDir := filepath.Join(cacheDir, ".container-diff", "cache")
150162
imageName = strings.Replace(imageName, string(os.PathSeparator), "", -1)
151163
return filepath.Join(rootDir, filepath.Clean(imageName)), nil
152164
}
@@ -189,5 +201,6 @@ func addSharedFlags(cmd *cobra.Command) {
189201
cmd.Flags().BoolVarP(&save, "save", "s", false, "Set this flag to save rather than remove the final image filesystems on exit.")
190202
cmd.Flags().BoolVarP(&util.SortSize, "order", "o", false, "Set this flag to sort any file/package results by descending size. Otherwise, they will be sorted by name.")
191203
cmd.Flags().BoolVarP(&noCache, "no-cache", "n", false, "Set this to force retrieval of image filesystem on each run.")
192-
cmd.Flags().StringVar(&cacheDir, "cache", "", "cache directory base to create .container-diff (default is $HOME).")
204+
cmd.Flags().StringVarP(&cacheDir, "cache", "c", "", "cache directory base to create .container-diff (default is $HOME).")
205+
193206
}

0 commit comments

Comments
 (0)