packages feed

bunz-0.0.1: app/Main.hs

{-# LANGUAGE DeriveDataTypeable #-}

module Main where

import qualified Beautifier             as B
import           System.Console.CmdArgs ((&=))
import qualified System.Console.CmdArgs as CA
import qualified System.Posix.IO        as IO
import qualified System.Posix.Terminal  as T

data Args = Args { jsonString :: String }
  deriving (Show, CA.Data, CA.Typeable)


args = Args { jsonString = CA.def &= CA.typ "JSON String" &= CA.argPos 0 }
    &= CA.summary "JSON beautifier tool version 0.0.1"

main :: IO ()
main = T.queryTerminal IO.stdInput >>= run

printBeautified :: String -> IO ()
printBeautified = putStrLn . B.beautify

runFromStdInput :: IO ()
runFromStdInput = getContents >>= printBeautified

runFromArgs :: Args -> IO ()
runFromArgs (Args { jsonString = str }) = printBeautified str

run :: Bool -> IO ()
run False = runFromStdInput
run True = CA.cmdArgs args >>= runFromArgs