packages feed

spreadsheet-0.1.3.6: example/CSVReplace/Option.hs

module CSVReplace.Option where

import qualified Option
import qualified Options.Applicative as OP

import Control.Applicative (pure, (<*>), (<$>))

import Data.Monoid ((<>))


info :: OP.Parser a -> OP.ParserInfo a
info p =
   OP.info
      (OP.helper <*> p)
      (OP.fullDesc <>
       (OP.progDesc $
         "Replace placeholders in a text file according to a CSV table. " ++
         "The CSV file is read from standard input."))

parser :: OP.Parser Option
parser =
   pure Option
   <*> (OP.option (Just <$> OP.str) $
         OP.long "multifile" <>
         OP.metavar "FILEPATTERN" <>
         OP.value Nothing <>
         OP.help "Generate one file per CSV row")
   <*> Option.delimiter
   <*> Option.quotation
   <*> (OP.strArgument $
         OP.metavar "TEMPLATE" <>
         OP.help "Template file")


data Option =
   Option {
      multiFile :: Maybe FilePath,
      delimiter, quotation :: Char,
      template :: FilePath
   }