phoityne-0.0.1.0: app/Phoityne/Argument.hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# OPTIONS_GHC -fno-cse #-}
module Phoityne.Argument (
HelpExitException(..)
, ArgData(..)
, config
) where
-- システム
import System.Console.CmdArgs
import qualified Control.Exception as E
-- |
-- ヘルプ表示時の例外
--
data HelpExitException = HelpExitException
deriving (Show, Typeable)
instance E.Exception HelpExitException
-- |
-- コマンドライン引数データ設定
-- モードを使用する場合のサンプル
--
data ArgData = ModeA
{
file :: String
, method :: Method
}
| ModeB
{
file :: String
, value :: Int
} deriving (Data, Typeable, Show, Read, Eq)
-- |
-- アノテーション設定
--
config :: ArgData
config = modes [confA, confB]
&= summary sumMsg
&= program "prj-tpl"
where
confA = ModeA {
file = def
&= name "f"
&= name "file"
&= explicit
&= typFile
&= help "ini file"
, method = enum
[
Get
&= name "get"
&= explicit
&= help "method type Get"
, Post
&= name "post"
&= explicit
&= help " | type Post"
, Put
&= name "put"
&= explicit
&= help " | type Put"
, Delete
&= name "delete"
&= explicit
&= help " | type Delete"
]
} &= name "ModeA"
&= details mdAMsg
&= auto
confB = ModeB {
file = def
&= name "f"
&= name "file"
&= explicit
&= typFile
&= help "ini file"
, value = def
&= name "value"
&= explicit
&= help "integer value"
} &= name "ModeB"
&= details mdBMsg
sumMsg = unlines [
""
, " ☆ サマリ説明 ☆"
, ""
, " ここに簡単な説明を記載する。"
, ""
]
mdAMsg = [
""
, " ★ 詳細説明 ★"
, ""
, " ここにModeAの詳細な説明を記載する。"
, ""
]
mdBMsg = [
""
, " ★ 詳細説明 ★"
, ""
, " ここにModeBの詳細な説明を記載する。"
, ""
]
-- |
-- enum値引数
--
data Method = Get | Post | Put | Delete
deriving (Data, Typeable, Show, Read, Eq)