{-# 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)