module Darcs.UI.Options
    ( module Darcs.UI.Options.Core
    , DarcsOption
    , PrimDarcsOption
    , DarcsOptDescr
    , optDescr
    , Config
    ) where

import Darcs.Prelude

import Data.Functor.Compose ( getCompose )
import System.Console.GetOpt ( OptDescr )

import Darcs.UI.Options.All ( DarcsOption )
import Darcs.UI.Options.Core
import Darcs.UI.Options.Util ( DarcsOptDescr, Flag, PrimDarcsOption )
import Darcs.Util.Path ( AbsolutePath )

-- | Instantiate a 'DarcsOptDescr' with an 'AbsolutePath'
optDescr :: AbsolutePath -> DarcsOptDescr f -> OptDescr f
optDescr :: forall f. AbsolutePath -> DarcsOptDescr f -> OptDescr f
optDescr AbsolutePath
path = forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (forall a b. (a -> b) -> a -> b
$ AbsolutePath
path) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k1} {k2} (f :: k1 -> *) (g :: k2 -> k1) (a :: k2).
Compose f g a -> f (g a)
getCompose

type Config = [Flag]