packages feed

dzen-dhall-1.0.0: src/DzenDhall.hs

module DzenDhall where

import           DzenDhall.App
import           DzenDhall.App.Run (useConfigurations)
import           DzenDhall.Arguments
import           DzenDhall.Commands.Plug
import           DzenDhall.Commands.Unplug
import           DzenDhall.Commands.Validate
import           DzenDhall.Runtime
import           DzenDhall.Extra (waitForever)

import           Lens.Micro
import           Options.Applicative (execParser)
import qualified GHC.IO.Encoding
import qualified System.IO


main :: IO ()
main = do

  GHC.IO.Encoding.setLocaleEncoding System.IO.utf8

  arguments <- execParser argumentsParser
  case arguments ^. mbCommand of
    Nothing -> do
      runtime <- readRuntime arguments
      runApp runtime () $ do
        useConfigurations
        liftIO waitForever

    Just Init -> do
      initCommand arguments

    Just (Plug commandArgs) -> do
      runtime <- readRuntime arguments
      runApp runtime () $
        plugCommand commandArgs

    Just (Unplug commandArgs) -> do
      runtime <- readRuntime arguments
      runApp runtime () $
        unplugCommand commandArgs

    Just (Validate commandArgs) -> do
      runtime <- readRuntime arguments
      runApp runtime () (validateCommand commandArgs)