1 {-# LANGUAGE DeriveDataTypeable #-}
8 import System.Console.CmdArgs (
28 -- Get the version from Cabal.
29 import Paths_haeredes (version)
30 import Data.Version (showVersion)
32 import Timeout (Timeout(..))
34 -- | Description of the 'NS' mode.
35 ns_description :: String
37 "Confirm delegation of NS records. " ++
38 "This is the default mode."
40 -- | Description of the 'MX' mode.
41 mx_description :: String
42 mx_description = "Confirm delegation of MX records."
44 program_name :: String
45 program_name = "haeredes"
48 my_summary = program_name ++ "-" ++ (showVersion version)
50 no_append_root_help :: String
52 "Don't append a trailing dot to DNS names"
54 -- | Help string for the --server flag.
57 "IP address or hostname of server to query " ++
58 "(will use resolv.conf if not specified)"
60 -- | Help string for the --timeout flag.
61 timeout_help :: String
63 "Query timeout, in seconds (default: " ++ defstr ++ ")"
65 defstr = show $ seconds (def :: Timeout)
67 -- | The Args type represents the possible command-line options. The
68 -- duplication here seems necessary; CmdArgs' magic requires us to
69 -- define some things explicitly.
71 NS { no_append_root :: Bool,
72 server :: Maybe String,
74 delegates :: [String] } |
75 MX { no_append_root :: Bool,
76 server :: Maybe String,
78 delegates :: [String] }
79 deriving (Data, Show, Typeable)
83 modes [ns &= auto, mx]
84 &= program program_name
89 groupname "Common flags"]
90 &= versionArg [explicit,
93 groupname "Common flags"]
95 -- The repetition here is necessary, some CmdArgs magic going on.
99 &= groupname "Common flags"
100 &= help no_append_root_help,
103 &= groupname "Common flags"
108 &= groupname "Common flags"
110 &= help timeout_help,
116 &= details [ns_description]
121 &= groupname "Common flags"
122 &= help no_append_root_help,
125 &= groupname "Common flags"
130 &= groupname "Common flags"
132 &= help timeout_help,
138 &= details [mx_description]
141 get_args = cmdArgs arg_spec