aboutsummaryrefslogtreecommitdiffhomepage
path: root/specification/app/Main.hs
blob: 1f2ba80eed5e16cb0a0eeed15f8d888146cbbc9a (plain) (blame)
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
module Main
  ( main
  ) where

import           Text.Edifact.Common  (parseFull)
import           Text.Edifact.D96A    (messageIFCSUM, messageDESADV)
import           Text.Edifact.Inspect (inspect)
import           Text.Edifact.Types   (Value)

import           Control.Monad        ((>=>))
import qualified Data.Text.IO         as TIO (putStrLn, readFile)
import           System.Environment   (getArgs)

main :: IO ()
main = getArgs >>= dispatch

dispatch :: [String] -> IO ()
dispatch ("ifcsum" : filename : _) = readIFCSUM filename
dispatch ("desadv" : filename : _) = readDESADV filename
dispatch _                         = help

readIFCSUM :: FilePath -> IO ()
readIFCSUM =
  let display = either print (TIO.putStrLn . inspect)
  in TIO.readFile >=> display . parseFull messageIFCSUM

readDESADV :: FilePath -> IO ()
readDESADV =
  let display = either print (TIO.putStrLn . inspect)
  in TIO.readFile >=> display . parseFull messageDESADV

help :: IO ()
help = do
  putStrLn "ifcsum <file> : inspect IFCSUM file for revision D96A"
  putStrLn "desadv <file> : inspect DESADV file for revision D96A"
  putStrLn "-h|--help     : this message"