packages feed

yu-launch-0.1.0.0: src/Main.hs

{-# LANGUAGE RecordWildCards #-}

module Main
       ( main
       ) where

import           Control.Applicative       ((<|>))
import           Data.Maybe
import qualified Data.Yaml                 as Y
import           System.Console.CmdArgs
import           System.IO
import qualified Yu.Import.Aeson           as A
import qualified Yu.Import.ByteString      as B
import qualified Yu.Import.ByteString.Lazy as BL
import qualified Yu.Import.Text            as T
import           Yu.Launch


main :: IO ()
main = do
  rain <- createXiao =<< parseCfgFile <$> getContents
  case rain of
    Just r@Xiao{..} -> warp rainPort r
    _               -> hPutStrLn stderr "can not parse"
  return ()


parseCfgFileJSON :: String -> Maybe [XiaoConfig]
parseCfgFileJSON str = A.decode $ BL.pack str
parseCfgFileYAML :: String -> Maybe [XiaoConfig]
parseCfgFileYAML str = Y.decode $  B.pack str
parseCfgFile :: String ->  [XiaoConfig]
parseCfgFile str =  fromMaybe [] $ parseCfgFileYAML str <|> parseCfgFileJSON str