cabal-install-3.10.2.1: The command-line interface for Cabal and Hackage.
Safe HaskellNone
LanguageHaskell2010

Distribution.Client.IndexUtils.ActiveRepos

Synopsis

Documentation

newtype ActiveRepos #

Ordered list of active repositories.

Instances

Instances details
Parsec ActiveRepos #

Note: empty string is not valid ActiveRepos.

>>> simpleParsec "" :: Maybe ActiveRepos
Nothing
>>> simpleParsec ":none" :: Maybe ActiveRepos
Just (ActiveRepos [])
>>> simpleParsec ":rest" :: Maybe ActiveRepos
Just (ActiveRepos [ActiveRepoRest CombineStrategyMerge])
>>> simpleParsec "hackage.haskell.org, :rest, head.hackage:override" :: Maybe ActiveRepos
Just (ActiveRepos [ActiveRepo (RepoName "hackage.haskell.org") CombineStrategyMerge,ActiveRepoRest CombineStrategyMerge,ActiveRepo (RepoName "head.hackage") CombineStrategyOverride])
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Methods

parsec :: CabalParsing m => m ActiveRepos #

Pretty ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Structured ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Generic ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Associated Types

type Rep ActiveRepos 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep ActiveRepos = D1 ('MetaData "ActiveRepos" "Distribution.Client.IndexUtils.ActiveRepos" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'True) (C1 ('MetaCons "ActiveRepos" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ActiveRepoEntry])))
Show ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Binary ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

NFData ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Methods

rnf :: ActiveRepos -> () #

Eq ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep ActiveRepos # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep ActiveRepos = D1 ('MetaData "ActiveRepos" "Distribution.Client.IndexUtils.ActiveRepos" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'True) (C1 ('MetaCons "ActiveRepos" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ActiveRepoEntry])))

filterSkippedActiveRepos :: ActiveRepos -> ActiveRepos #

Note, this does nothing if ActiveRepoRest is present.

data ActiveRepoEntry #

Constructors

ActiveRepoRest CombineStrategy

rest repositories, i.e. not explicitly listed as ActiveRepo

ActiveRepo RepoName CombineStrategy

explicit repository name

Instances

Instances details
Parsec ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Structured ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Generic ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Associated Types

type Rep ActiveRepoEntry 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep ActiveRepoEntry = D1 ('MetaData "ActiveRepoEntry" "Distribution.Client.IndexUtils.ActiveRepos" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ActiveRepoRest" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CombineStrategy)) :+: C1 ('MetaCons "ActiveRepo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RepoName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CombineStrategy)))
Show ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Binary ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

NFData ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Methods

rnf :: ActiveRepoEntry -> () #

Eq ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep ActiveRepoEntry # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep ActiveRepoEntry = D1 ('MetaData "ActiveRepoEntry" "Distribution.Client.IndexUtils.ActiveRepos" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "ActiveRepoRest" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CombineStrategy)) :+: C1 ('MetaCons "ActiveRepo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RepoName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CombineStrategy)))

data CombineStrategy #

Constructors

CombineStrategySkip

skip this repository

CombineStrategyMerge

merge existing versions

CombineStrategyOverride

if later repository specifies a package, all package versions are replaced

Instances

Instances details
Parsec CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Pretty CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Structured CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Bounded CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Enum CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Generic CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Associated Types

type Rep CombineStrategy 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep CombineStrategy = D1 ('MetaData "CombineStrategy" "Distribution.Client.IndexUtils.ActiveRepos" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "CombineStrategySkip" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CombineStrategyMerge" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CombineStrategyOverride" 'PrefixI 'False) (U1 :: Type -> Type)))
Show CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Binary CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

NFData CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

Methods

rnf :: CombineStrategy -> () #

Eq CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep CombineStrategy # 
Instance details

Defined in Distribution.Client.IndexUtils.ActiveRepos

type Rep CombineStrategy = D1 ('MetaData "CombineStrategy" "Distribution.Client.IndexUtils.ActiveRepos" "cabal-install-3.10.2.1-EH6AEtqwlbKE3rh89dIk81" 'False) (C1 ('MetaCons "CombineStrategySkip" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "CombineStrategyMerge" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "CombineStrategyOverride" 'PrefixI 'False) (U1 :: Type -> Type)))

organizeByRepos :: ActiveRepos -> (a -> RepoName) -> [a] -> Either String [(a, CombineStrategy)] #

Sort values RepoName according to ActiveRepos list.

>>> let repos = [RepoName "a", RepoName "b", RepoName "c"]
>>> organizeByRepos (ActiveRepos [ActiveRepoRest CombineStrategyMerge]) id repos
Right [(RepoName "a",CombineStrategyMerge),(RepoName "b",CombineStrategyMerge),(RepoName "c",CombineStrategyMerge)]
>>> organizeByRepos (ActiveRepos [ActiveRepo (RepoName "b") CombineStrategyOverride, ActiveRepoRest CombineStrategyMerge]) id repos
Right [(RepoName "b",CombineStrategyOverride),(RepoName "a",CombineStrategyMerge),(RepoName "c",CombineStrategyMerge)]
>>> organizeByRepos (ActiveRepos [ActiveRepoRest CombineStrategyMerge, ActiveRepo (RepoName "b") CombineStrategyOverride]) id repos
Right [(RepoName "a",CombineStrategyMerge),(RepoName "c",CombineStrategyMerge),(RepoName "b",CombineStrategyOverride)]
>>> organizeByRepos (ActiveRepos [ActiveRepoRest CombineStrategyMerge, ActiveRepo (RepoName "d") CombineStrategyOverride]) id repos
Left "no repository provided d"

Note: currently if ActiveRepoRest is provided more than once, rest-repositories will be multiple times in the output.