packages feed

zephyr-0.5.3: app/Main.hs

module Main (main) where

import           Data.Version (showVersion)
import qualified Options.Applicative as Opts
import qualified Paths_zephyr as Paths
import           System.Environment (getArgs)
import qualified System.IO as IO

import Command.Run ( runZephyr )
import Command.Options ( parseOptions )


main :: IO ()
main = do
  IO.hSetEncoding IO.stdout IO.utf8
  IO.hSetEncoding IO.stderr IO.utf8
  let pinfo = Opts.info (versionOpt <*> Opts.helper <*> parseOptions)
                        (Opts.progDesc "tree-shaking breeze for PureScript")
  getArgs
    >>= Opts.handleParseResult . execParserPure pinfo
    >>= runZephyr
  where
    execParserPure :: Opts.ParserInfo a -> [String] -> Opts.ParserResult a
    execParserPure pinfo [] = Opts.Failure $
      Opts.parserFailure Opts.defaultPrefs pinfo (Opts.ShowHelpText Nothing) mempty
    execParserPure pinfo args = Opts.execParserPure Opts.defaultPrefs pinfo args

versionOpt :: Opts.Parser (a -> a)
versionOpt = Opts.abortOption (Opts.InfoMsg versionString) $
     Opts.long "version"
  <> Opts.help "Show the version number"
  <> Opts.hidden
  where
  versionString = showVersion Paths.version