packages feed

hpack-dhall-0.5.0: exe/dhall-hpack-json/JsonMain.hs

{-# LANGUAGE RecordWildCards #-}

module Main (main) where

import Paths_hpack_dhall (version)
import Data.Version (showVersion)
import Data.Monoid ((<>))
import Data.Foldable (asum)
import qualified Options.Applicative as O
import Options (Options(..), parseOptions, parseNumericVersion, parseVersion)
import Hpack.Dhall (showJson)
import qualified Hpack as H (version)

data Command = NumericVersion | Version | Run Options

parserInfo :: O.ParserInfo Command
parserInfo =
    O.info parser $
        O.fullDesc
        <> O.header "Hpack as JSON"
        <> O.progDesc "Show a package description as JSON."
    where
        parser = asum
            [ NumericVersion <$ parseNumericVersion
            , Version <$ parseVersion
            , Run <$> parseOptions
            ]

main :: IO ()
main = do
    command <- O.execParser parserInfo

    case command of
        NumericVersion ->
            putStrLn $ showVersion version

        Version -> do
            putStrLn $ "dhall-hpack-json-" ++ showVersion version
            putStrLn $ "hpack-" ++ showVersion H.version

        Run Options{..} -> do
            s <- showJson Nothing pkgFile
            putStrLn s
            return ()