{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TypeOperators #-}
module Main (main) where
import Control.Monad (void, join, liftM)
import Data.Concrete.Services.Store (makeTarStore, storeDirect)
import Data.Concrete.Services.Fetch (makeTarFetch, makeZipFetch, fetchDirect)
import Data.Concrete.Autogen.Communication_Types (Communication(..))
import Data.Concrete.Autogen.Graph_Types
import Data.Concrete.Autogen.AnnotateCommunicationService_Client (annotate)
import Options.Generic
import Conduit
import System.FilePath (takeExtension)
data Parameters w = Parameters { inputFile :: w ::: String <?> "Input tar file"
, outputFile :: w ::: String <?> "Output tar file"
, identifier :: w ::: String <?> "Section that is used to identify a node"
, child :: w ::: Maybe String <?> "Section that identifies a node's child"
, parent :: w ::: Maybe String <?> "Section that identifies a node's parent"
} deriving (Generic)
instance ParseRecord (Parameters Wrapped)
deriving instance Show (Parameters Unwrapped)
main = do
ps <- unwrapRecord "Transform a file of Communications into a MultiGraph based on a particular link"
--ih <- makeTarFetch $ inputFile ps
cs <- join $ case takeExtension (inputFile ps) of
".zip" -> (liftM fetchDirect . makeZipFetch) (inputFile ps)
".tar" -> (liftM fetchDirect . makeTarFetch) (inputFile ps)
-- ".tar" -> fetchDirect <$> makeTarFetch $ inputFile ps --(liftM decompress . BS.hGetContents) stdin
--foldOver (\x -> print x >> return ()) ih
--cs <- fetchDirect ih
--cs' <- runConduit $ yieldMany cs .| takeC 10 .| sinkList
print $ length cs