1 {-# LANGUAGE DeriveDataTypeable #-}
9 import System.Console.CmdArgs (
29 -- Get the version from Cabal.
30 import Paths_haeredes (version)
31 import Data.Version (showVersion)
33 -- | Description of the 'NS' mode.
34 ns_description :: String
36 "Confirm delegation of NS records. " ++
37 "This is the default mode."
39 -- | Description of the 'MX' mode.
40 mx_description :: String
41 mx_description = "Confirm delegation of MX records."
43 program_name :: String
44 program_name = "haeredes"
47 my_summary = program_name ++ "-" ++ (showVersion version)
49 no_append_root_help :: String
51 "Don't append a trailing dot to DNS names"
53 -- | Help string for the --server flag.
56 "IP address or hostname of server to query " ++
57 "(will use resolv.conf if not specified)"
59 -- | The Args type represents the possible command-line options. The
60 -- duplication here seems necessary; CmdArgs' magic requires us to
61 -- define some things explicitly.
63 NS { no_append_root :: Bool,
64 server :: Maybe String,
65 delegates :: [String] } |
66 MX { no_append_root :: Bool,
67 server :: Maybe String,
68 delegates :: [String] }
69 deriving (Data, Show, Typeable)
73 modes [ns &= auto, mx]
74 &= program program_name
79 groupname "Common flags"]
80 &= versionArg [explicit,
83 groupname "Common flags"]
85 -- The repetition here is necessary, some CmdArgs magic going on.
89 &= groupname "Common flags"
90 &= help no_append_root_help,
93 &= groupname "Common flags"
101 &= details [ns_description]
106 &= groupname "Common flags"
107 &= help no_append_root_help,
110 &= groupname "Common flags"
118 &= details [mx_description]
121 get_args = cmdArgs arg_spec