sampler-fork/metadata/storage.go

60 lines
1.2 KiB
Go
Raw Normal View History

2019-05-24 02:58:46 +00:00
package metadata
import (
"github.com/mitchellh/go-homedir"
"io/ioutil"
"log"
"os"
"path/filepath"
"runtime"
)
const (
macOSDir = "/Library/Application Support/Sampler"
linuxDir = "/.config/Sampler"
2019-07-29 00:32:15 +00:00
windowsDir = "Sampler"
)
func fileExists(filename string) bool {
_, err := os.Stat(getPlatformStoragePath(filename))
return !os.IsNotExist(err)
}
func getPlatformStoragePath(filename string) string {
switch runtime.GOOS {
case "darwin":
home, _ := homedir.Dir()
return filepath.Join(home, macOSDir, filename)
case "windows":
2019-07-29 00:32:15 +00:00
cache, _ := os.UserCacheDir()
return filepath.Join(cache, windowsDir, filename)
default:
home, _ := homedir.Dir()
return filepath.Join(home, linuxDir, filename)
}
}
func initStorage() {
err := os.MkdirAll(getPlatformStoragePath(""), os.ModePerm)
if err != nil {
log.Fatalf("Failed to init storage: %v", err)
}
}
func readStorageFile(path string) []byte {
file, err := ioutil.ReadFile(path)
if err != nil {
log.Fatalf("Failed to the read storage file: %s", path)
}
return file
}
func saveStorageFile(file []byte, fileName string) {
err := ioutil.WriteFile(getPlatformStoragePath(fileName), file, os.ModePerm)
if err != nil {
log.Fatalf("Failed to save the storage file: %s %v", fileName, err)
}
}