packages feed

getopt-generics-0.11.0.3: test/Util.hs

{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}

module Util where

import           System.Console.GetOpt.Generics
import           System.Console.GetOpt.Generics.Modifier

parse :: (Generic a, HasDatatypeInfo a, All2 HasArguments (Code a)) =>
  String -> Result a
parse = modsParse []

modsParse :: (Generic a, HasDatatypeInfo a, All2 HasArguments (Code a)) =>
  [Modifier] -> String -> Result a
modsParse modifiers = parseArguments "prog-name" modifiers . words

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