]>
Commit | Line | Data |
---|---|---|
a9d77a20 FM |
1 | module Text.Edifact.Fetcher |
2 | ( fetch | |
3 | , FetchingEnv(..) | |
4 | , readSelectMessages | |
5 | ) where | |
6 | ||
7 | import Text.Edifact.Fetcher.Commons (Fetcher, | |
8 | getSpecificationHome, | |
9 | runFetcher) | |
10 | import Text.Edifact.Fetcher.Configuration | |
11 | ||
12 | import Text.Edifact.Fetcher.Composites (compositesDirectory, | |
13 | fetchComposites) | |
14 | import Text.Edifact.Fetcher.Messages (fetchMessages, | |
15 | messagesDirectory) | |
16 | import Text.Edifact.Fetcher.Segments (fetchSegments, | |
17 | segmentsDirectory) | |
18 | import Text.Edifact.Fetcher.Simples (fetchSimples, | |
19 | simplesDirectory) | |
20 | ||
21 | import Control.Monad.IO.Class (liftIO) | |
22 | import Data.Foldable (traverse_) | |
23 | import System.Directory (createDirectoryIfMissing) | |
24 | import System.FilePath ((</>)) | |
25 | ||
26 | fetch :: FetchingEnv -> IO () | |
27 | fetch = runFetcher (setupDirectories >> fetchAll) | |
28 | ||
29 | fetchAll :: Fetcher () | |
30 | fetchAll = fetchMessages >>= fetchSegments >>= fetchComposites >>= fetchSimples | |
31 | ||
32 | setupDirectories :: Fetcher () | |
33 | setupDirectories = do | |
34 | home <- getSpecificationHome | |
35 | let mkdir d = liftIO (createDirectoryIfMissing True (home </> d)) | |
36 | traverse_ mkdir directories | |
37 | ||
38 | directories :: [FilePath] | |
39 | directories = | |
40 | [ compositesDirectory | |
41 | , messagesDirectory | |
42 | , segmentsDirectory | |
43 | , simplesDirectory | |
44 | ] |