-- |
-- Module      : Test.DocTest.Gen
-- Copyright   : (c) 2017 Hexirp
--
-- License     : BSD 3-clause "New" or "Revised" License
-- Maintainer  : https://github.com/Hexirp/doctest-driver-gen/issues
-- Stability   : experimental
-- Portability : portable
--
-- Provide doctest-driver-gen's functions.
module Test.DocTest.Gen where
 import Prelude

 -- | Run doctest-driver-gen with given list of arguments.
 ddgen :: [String] -> IO ()
 ddgen :: [String] -> IO ()
ddgen (String
src : String
inp : String
out : [String]
opts) = String -> String -> String -> [String] -> IO ()
ddgen_run String
src String
inp String
out [String]
opts
 ddgen [String]
_                        = IO ()
ddgen_usage

 -- | Run doctest-driver-gen with correct arguments.
 ddgen_run
  :: String -- ^ Name of the original source file.
  -> String -- ^ Name of the file holding the input.
  -> String -- ^ Name of the file where this should write its output to.
  -> [String] -- ^ Options for doctest.
  -> IO ()
 ddgen_run :: String -> String -> String -> [String] -> IO ()
ddgen_run String
_ String
_ String
out [String]
opts = String -> [String] -> IO ()
ddgen_output String
out [String]
opts

 -- | Output driver file.
 ddgen_output :: String -> [String] -> IO ()
 ddgen_output :: String -> [String] -> IO ()
ddgen_output String
out [String]
opts = String -> String -> IO ()
writeFile String
out (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unlines [
  String
"import Prelude",
  String
"import Test.DocTest",
  String
"",
  String
"main :: IO ()",
  String
"main = doctest " String -> String -> String
forall a. [a] -> [a] -> [a]
++ [String] -> String
forall a. Show a => a -> String
show [String]
opts]

 -- | Print doctest-driver-gen's usage.
 ddgen_usage :: IO ()
 ddgen_usage :: IO ()
ddgen_usage = String -> IO ()
putStrLn (String -> IO ()) -> String -> IO ()
forall a b. (a -> b) -> a -> b
$ [String] -> String
unlines [
  String
"Usage:",
  String
"  {-# OPTIONS_GHC -F -pgmF doctest-driver-gen [-optF DOCTEST_OPTION]... #-}",
  String
"",
  String
"Make your driver file with the content."]