-
Notifications
You must be signed in to change notification settings - Fork 2
/
Main.hs
39 lines (32 loc) · 990 Bytes
/
Main.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import Xtdo
import System.Environment
import Data.Time.Clock
import Data.List
main :: IO ()
main = do
args <- getArgs
programData <- loadData
now <- getCurrentTime
let today = (utctDay now)
let result = xtdo args (decoratedData programData today) today
format result
saveData $ fst result
where decoratedData programData today =
ProgramData{
tasks = addCategory (tasks programData) today,
recurring = (recurring programData)
}
loadData :: IO ProgramData
loadData = do
environment <- getEnvironment
let path = envPathWithDefault environment
loadYaml path
saveData programData = do
environment <- getEnvironment
let path = envPathWithDefault environment
saveYaml path programData
envPathWithDefault = dataPath . find ((==) "XTDOHS_PATH" . fst)
dataPath :: Maybe (String, String) -> String
dataPath path = dataPath' path
dataPath' Nothing = "tasks.yml"
dataPath' (Just path) = snd path