OSDN Git Service

fix
authorHAOYUatHZ <haoyu@protonmail.com>
Sat, 17 Aug 2019 07:25:12 +0000 (15:25 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Sat, 17 Aug 2019 07:25:12 +0000 (15:25 +0800)
toolbar/precog/monitor/monitor.go

index 038e891..a6294a8 100644 (file)
@@ -2,6 +2,7 @@ package monitor
 
 import (
        "fmt"
+       "io/ioutil"
        "os"
        "os/user"
        "strings"
@@ -42,22 +43,17 @@ func NewMonitor(cfg *config.Config, db *gorm.DB) *monitor {
        //TODO: for test
        cfg.CheckFreqSeconds = 1
 
-       usr, err := user.Current()
+       dir, err := makePath()
        if err != nil {
                log.Fatal(err)
        }
 
-       folderPath := usr.HomeDir + "/.precog"
-       if err := os.MkdirAll(folderPath, os.ModePerm); err != nil {
-               log.Fatalf("failed to create data folder: %v", err)
-       }
-
        nodeCfg := &vaporCfg.Config{
                BaseConfig: vaporCfg.DefaultBaseConfig(),
                P2P:        vaporCfg.DefaultP2PConfig(),
                Federation: vaporCfg.DefaultFederationConfig(),
        }
-       nodeCfg.DBPath = folderPath
+       nodeCfg.DBPath = dir
        nodeCfg.ChainID = "mainnet"
        discvCh := make(chan *dht.Node)
        privKey, err := signlib.NewPrivKey()
@@ -81,6 +77,25 @@ func NewMonitor(cfg *config.Config, db *gorm.DB) *monitor {
        }
 }
 
+func makePath() (string, error) {
+       usr, err := user.Current()
+       if err != nil {
+               return "", err
+       }
+
+       dataPath := usr.HomeDir + "/.precog"
+       if err := os.MkdirAll(dataPath, os.ModePerm); err != nil {
+               return "", err
+       }
+
+       tmpDir, err := ioutil.TempDir(dataPath, "")
+       if err != nil {
+               return "", err
+       }
+
+       return tmpDir, nil
+}
+
 func (m *monitor) Run() {
        defer os.RemoveAll(m.nodeCfg.DBPath)