1
1
{-# LANGUAGE CPP #-}
2
+ {-# LANGUAGE NamedFieldPuns #-}
2
3
3
4
module Cardano.Tracer.Handlers.RTView.System
4
5
( getPathToBackupDir
@@ -22,6 +23,8 @@ import System.Posix.Process (getProcessID)
22
23
import System.Posix.Types (CPid (.. ))
23
24
#endif
24
25
26
+ import Cardano.Tracer.Environment
27
+
25
28
getProcessId :: UI Word32
26
29
getProcessId =
27
30
#if defined(mingw32_HOST_OS)
@@ -31,53 +34,60 @@ getProcessId =
31
34
return $ fromIntegral pid
32
35
#endif
33
36
34
- getPathToChartsConfig , getPathToThemeConfig :: IO FilePath
37
+ getPathToChartsConfig , getPathToThemeConfig :: TracerEnv -> IO FilePath
35
38
getPathToChartsConfig = getPathToConfig " charts"
36
39
getPathToThemeConfig = getPathToConfig " theme"
37
40
38
- getPathToConfig :: FilePath -> IO FilePath
39
- getPathToConfig configName = do
40
- configDir <- getPathToConfigDir
41
+ getPathToConfig :: FilePath -> TracerEnv -> IO FilePath
42
+ getPathToConfig configName TracerEnv {teRTViewStateDir} = do
43
+ configDir <- getPathToConfigDir teRTViewStateDir
41
44
return $ configDir </> configName
42
45
43
- getPathsToSSLCerts :: IO (FilePath , FilePath )
44
- getPathsToSSLCerts = do
45
- configDir <- getPathToConfigDir
46
+ getPathsToSSLCerts :: TracerEnv -> IO (FilePath , FilePath )
47
+ getPathsToSSLCerts TracerEnv {teRTViewStateDir} = do
48
+ configDir <- getPathToConfigDir teRTViewStateDir
46
49
let pathToSSLSubDir = configDir </> " ssl"
47
50
D. createDirectoryIfMissing True pathToSSLSubDir
48
51
return ( pathToSSLSubDir </> " cert.pem"
49
52
, pathToSSLSubDir </> " key.pem"
50
53
)
51
54
52
- getPathsToNotificationsSettings :: IO (FilePath , FilePath )
53
- getPathsToNotificationsSettings = do
54
- configDir <- getPathToConfigDir
55
+ getPathsToNotificationsSettings :: Maybe FilePath -> IO (FilePath , FilePath )
56
+ getPathsToNotificationsSettings rtvSD = do
57
+ configDir <- getPathToConfigDir rtvSD
55
58
let pathToNotifySubDir = configDir </> " notifications"
56
59
D. createDirectoryIfMissing True pathToNotifySubDir
57
60
return ( pathToNotifySubDir </> " email"
58
61
, pathToNotifySubDir </> " events"
59
62
)
60
63
61
- getPathToConfigDir :: IO FilePath
62
- getPathToConfigDir = do
63
- configDir <- D. getXdgDirectory D. XdgConfig " "
64
+ getPathToChartColorsDir :: TracerEnv -> IO FilePath
65
+ getPathToChartColorsDir TracerEnv {teRTViewStateDir} = do
66
+ configDir <- getPathToConfigDir teRTViewStateDir
67
+ let pathToColorsSubDir = configDir </> " color"
68
+ D. createDirectoryIfMissing True pathToColorsSubDir
69
+ return pathToColorsSubDir
70
+
71
+ getPathToConfigDir :: Maybe FilePath -> IO FilePath
72
+ getPathToConfigDir rtvSD = do
73
+ configDir <- getStateDir rtvSD D. XdgConfig
64
74
let pathToRTViewConfigDir = configDir </> rtViewRootDir
65
75
D. createDirectoryIfMissing True pathToRTViewConfigDir
66
76
return pathToRTViewConfigDir
67
77
68
- getPathToBackupDir :: IO FilePath
69
- getPathToBackupDir = do
70
- dataDir <- D. getXdgDirectory D. XdgData " "
78
+ getPathToBackupDir :: TracerEnv -> IO FilePath
79
+ getPathToBackupDir TracerEnv {teRTViewStateDir} = do
80
+ dataDir <- getStateDir teRTViewStateDir D. XdgData
71
81
let pathToRTViewBackupDir = dataDir </> rtViewRootDir </> " backup"
72
82
D. createDirectoryIfMissing True pathToRTViewBackupDir
73
83
return pathToRTViewBackupDir
74
84
75
- getPathToChartColorsDir :: IO FilePath
76
- getPathToChartColorsDir = do
77
- configDir <- getPathToConfigDir
78
- let pathToColorsSubDir = configDir </> " color "
79
- D. createDirectoryIfMissing True pathToColorsSubDir
80
- return pathToColorsSubDir
85
+ getStateDir
86
+ :: Maybe FilePath
87
+ -> D. XdgDirectory
88
+ -> IO FilePath
89
+ getStateDir Nothing xdgDir = D. getXdgDirectory xdgDir " "
90
+ getStateDir ( Just stateDir) _ = return stateDir
81
91
82
92
rtViewRootDir :: FilePath
83
93
rtViewRootDir = " cardano-rt-view"
0 commit comments