| // Copyright 2021 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package bootstrap |
| |
| import ( |
| "errors" |
| "fmt" |
| "os" |
| "path/filepath" |
| ) |
| |
| var ErrNotInCache = errors.New("not found in cache") |
| |
| func CachedAssets(cache, version string) (string, error) { |
| name := VersionArchiveName(version) |
| if err := os.MkdirAll(cache, os.ModePerm); err != nil { |
| return "", fmt.Errorf("failed to create cache directory: %w", err) |
| } |
| cacheloc := filepath.Join(cache, name) |
| if _, err := os.Lstat(cacheloc); os.IsNotExist(err) { |
| return cacheloc, ErrNotInCache |
| } else if err != nil { |
| return "", fmt.Errorf("failed to check cache: %w", err) |
| } |
| return cacheloc, nil |
| } |
| |
| func CacheDefault() string { |
| cache, err := os.UserCacheDir() |
| if err == nil { |
| cache = filepath.Join(cache, "go-sweet") |
| } |
| return cache |
| } |