packages feed

typescript-docs-0.0.1: src/Main.hs

-----------------------------------------------------------------------------
--
-- Module      :  Main
-- Copyright   :  (c) DICOM Grid Inc. 2013
-- License     :  MIT
--
-- Maintainer  :  Phillip Freeman <paf31@cantab.net>
-- Stability   :  experimental
-- Portability :
--
-- |
--
-----------------------------------------------------------------------------

module Main (
    main
) where

import Language.TypeScript
import Language.TypeScript.Docs
import System.Console.CmdTheLine
import Control.Applicative
import System.Exit (exitSuccess, exitFailure)
import System.FilePath (pathSeparator)
import System.FilePath.Find
import qualified System.IO.UTF8 as U

docGen :: [FilePath] -> Maybe FilePath -> IO ()
docGen inputFiles outputFile = do
  tds <- fmap concat $ mapM U.readFile inputFiles
  case convertDeclarationsToHtml tds of
    Left err -> do
      U.putStrLn err
      exitFailure
    Right html -> do
      case outputFile of
        Just path -> U.writeFile path html
        Nothing -> U.putStrLn html
      exitSuccess

inputFiles :: Term [FilePath]
inputFiles = nonEmpty $ posAny [] $ posInfo
     { posDoc = "The input .d.ts file" }

outputFile :: Term (Maybe FilePath)
outputFile = value $ opt Nothing $ (optInfo [ "o", "output" ])
     { optDoc = "The output .html file" }

term :: Term (IO ())
term = docGen <$> inputFiles <*> outputFile

termInfo :: TermInfo
termInfo = defTI
  { termName = "typescript-docs"
  , version  = "0.0.1"
  , termDoc  = "Converts TypeScript Declaration files into HTML format"
  }

main = run (term, termInfo)