feat: use OS conform path for storing cached results

Instead of storing cached values in the config yaml, they are now stored
under these OS specific locations:
* Linux: `~/.cache/k8sgpt`
* MacOS: `~/Library/Caches`
* Windows: `%LocalAppData%\cache`

Additionally a `Cache` package and interface has been introduced.
Currently there are two implementations:
* Noop - Doesn't do anything
* FileBased - Stores data in files under the locations listed above

fixes #323

Signed-off-by: Patrick Pichler <git@patrickpichler.dev>
This commit is contained in:
Patrick Pichler
2023-04-24 18:41:54 +02:00
parent c3cc413e7f
commit 7eddb8f4a6
7 changed files with 133 additions and 35 deletions

15
pkg/cache/cache.go vendored Normal file
View File

@@ -0,0 +1,15 @@
package cache
type ICache interface {
Store(key string, data string) error
Load(key string) (string, error)
Exists(key string) bool
}
func New(noCache bool) ICache {
if noCache {
return &NoopCache{}
}
return &FileBasedCache{}
}