64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package localstorage
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/git-lfs/git-lfs/config"
|
|
)
|
|
|
|
const (
|
|
tempDirPerms = 0755
|
|
localMediaDirPerms = 0755
|
|
localLogDirPerms = 0755
|
|
)
|
|
|
|
var (
|
|
objects *LocalStorage
|
|
TempDir = filepath.Join(os.TempDir(), "git-lfs")
|
|
checkedTempDir string
|
|
)
|
|
|
|
func Objects() *LocalStorage {
|
|
return objects
|
|
}
|
|
|
|
func ResolveDirs() {
|
|
|
|
config.ResolveGitBasicDirs()
|
|
TempDir = filepath.Join(config.LocalGitDir, "lfs", "tmp") // temp files per worktree
|
|
|
|
objs, err := NewStorage(
|
|
filepath.Join(config.LocalGitStorageDir, "lfs", "objects"),
|
|
filepath.Join(TempDir, "objects"),
|
|
)
|
|
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Error trying to init LocalStorage: %s", err))
|
|
}
|
|
|
|
objects = objs
|
|
config.LocalLogDir = filepath.Join(objs.RootDir, "logs")
|
|
if err := os.MkdirAll(config.LocalLogDir, localLogDirPerms); err != nil {
|
|
panic(fmt.Errorf("Error trying to create log directory in '%s': %s", config.LocalLogDir, err))
|
|
}
|
|
}
|
|
|
|
func TempFile(prefix string) (*os.File, error) {
|
|
if checkedTempDir != TempDir {
|
|
if err := os.MkdirAll(TempDir, tempDirPerms); err != nil {
|
|
return nil, err
|
|
}
|
|
checkedTempDir = TempDir
|
|
}
|
|
|
|
return ioutil.TempFile(TempDir, prefix)
|
|
}
|
|
|
|
func ResetTempDir() error {
|
|
checkedTempDir = ""
|
|
return os.RemoveAll(TempDir)
|
|
}
|