File: Util.hs

package info (click to toggle)
haskell-getopt-generics 0.13.1.0-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 260 kB
  • sloc: haskell: 1,644; makefile: 6
file content (31 lines) | stat: -rw-r--r-- 818 bytes parent folder | download | duplicates (4)
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
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}

module Util where

import           Prelude ()
import           Prelude.Compat

import           WithCli.Modifier
import           WithCli.Pure

parse :: (HasArguments a) => String -> Result a
parse = modsParse []

data Wrapped a
  = Wrap {
    unwrap :: a
  }

modsParse :: forall a . (HasArguments a) => [Modifier] -> String -> Result a
modsParse modifiers args =
  unwrap <$>
  withCliPure "prog-name" modifiers (words args) (Wrap :: a -> Wrapped a)

unsafeModifiers :: [Modifier] -> Modifiers
unsafeModifiers mods = case mkModifiers mods of
  Success x -> x
  Errors errs -> error ("unsafeModifiers: " ++ show errs)
  OutputAndExit msg -> error ("unsafeModifiers: " ++ show msg)