phoityne-vscode-0.0.21.0: app/Phoityne/VSCode/Argument.hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# OPTIONS_GHC -fno-cse #-}
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Phoityne.VSCode.Argument (
HelpExitException(..)
, ArgData(..)
, getArgData
) where
import Paths_phoityne_vscode (version)
import Phoityne.VSCode.Type
import System.Console.CmdArgs
import qualified Control.Exception.Safe as E
import qualified System.Console.CmdArgs as CMD
import Data.Version
-- |
--
getArgData :: IO ArgData
getArgData = E.catches (CMD.cmdArgs config) handlers
where
handlers = [E.Handler someExcept]
someExcept (e :: E.SomeException) = if
| "ExitSuccess" == show e -> E.throw HelpExitException
| otherwise -> E.throwIO e
-- |
--
config :: ArgData
config = modes [confA]
&= summary sumMsg
&= program "phoityne-vscode"
where
confA = ArgData {
_hackageVersionArgData = showVersion version
&= name "hackage-version"
&= typ "VERSION"
&= explicit
&= help "hackage module version."
} &= name "ModeA"
&= details mdAMsg
&= auto
sumMsg = unlines [
"phoityne-vscode-" ++ showVersion version
]
mdAMsg = [
""
, "Phoityne is a ghci debug adapter for Visual Studio Code. "
, ""
]