]> git.immae.eu Git - github/fretlink/edi-parser.git/blob - scaffolder/src/Text/Edifact/Fetcher.hs
Release code as open source
[github/fretlink/edi-parser.git] / scaffolder / src / Text / Edifact / Fetcher.hs
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 ]