File: Reform.hs

package info (click to toggle)
haskell-cmdargs 0.10.14-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 348 kB
  • ctags: 1
  • sloc: haskell: 2,972; makefile: 3
file content (42 lines) | stat: -rw-r--r-- 1,199 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{-# LANGUAGE RecordWildCards #-}

module System.Console.CmdArgs.Implicit.Reform(reform) where

import System.Console.CmdArgs.Implicit.Local
import System.Console.CmdArgs.Implicit.Type
import System.Console.CmdArgs.Verbosity

import Data.Generics.Any
import Data.List
import Data.Maybe


reform :: Prog_ -> CmdArgs Any -> Maybe [String]
reform Prog_{..} CmdArgs{..} = Just $
    f "help" progHelpArg (isJust cmdArgsHelp) ++
    f "version" progVersionArg (isJust cmdArgsVersion) ++
    f "verbose" (fst progVerbosityArgs) (cmdArgsVerbosity == Just Loud) ++
    f "quiet" (snd progVerbosityArgs) (cmdArgsVerbosity == Just Quiet)
    where
        f ex (Just x) True = pickArg $ builtinNames x ++ [ex]
        f _ _ _ = []


pickArg :: [String] -> [String]
pickArg xs = case partition ((==) 1 . length) xs of
    (_, x:_) -> ["--" ++ x]
    (x:_, _) -> ["-" ++ x]
    _ -> []

{-

data Prog_ = Prog_
    {progModes :: [Mode_]
    ,progSummary :: Maybe [String]
    ,progProgram :: String
    ,progHelp :: String -- only for multiple mode programs
    ,progVerbosityArgs :: (Maybe Builtin_, Maybe Builtin_)
    ,progHelpArg :: Maybe Builtin_
    ,progVersionArg :: Maybe Builtin_
    } deriving Show
-}