| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Distribution.Client.Glob
Synopsis
- data RootedGlob = RootedGlob FilePathRoot Glob
- isTrivialRootedGlob :: RootedGlob -> Maybe FilePath
- data FilePathRoot
- getFilePathRootDirectory :: FilePathRoot -> FilePath -> IO FilePath
- data Glob
- matchDirFileGlobWithDie :: Verbosity -> (Verbosity -> CabalException -> IO [FilePath]) -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath]
- data GlobSyntaxError
- data GlobResult a
- explainGlobSyntaxError :: FilePath -> GlobSyntaxError -> String
- fileGlobMatches :: CabalSpecVersion -> Glob -> FilePath -> Maybe (GlobResult ())
- isRecursiveInRoot :: Glob -> Bool
- parseFileGlob :: CabalSpecVersion -> FilePath -> Either GlobSyntaxError Glob
- runDirFileGlob :: Verbosity -> Maybe CabalSpecVersion -> FilePath -> Glob -> IO [GlobResult FilePath]
- globMatches :: [GlobResult a] -> [a]
- matchDirFileGlob :: Verbosity -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath]
- data Glob
- data GlobPiece
- = WildCard
- | Literal String
- | Union [GlobPieces]
- type GlobPieces = [GlobPiece]
- matchGlob :: FilePath -> Glob -> IO [FilePath]
- matchGlobPieces :: GlobPieces -> String -> Bool
- matchFileGlob :: FilePath -> RootedGlob -> IO [FilePath]
cabal-install globbing features
data RootedGlob Source #
A file path specified by globbing, relative to some root directory.
Constructors
| RootedGlob | |
Fields
| |
Instances
| Parsec RootedGlob Source # | |||||
Defined in Distribution.Client.Glob Methods parsec :: CabalParsing m => m RootedGlob # | |||||
| Pretty RootedGlob Source # | |||||
Defined in Distribution.Client.Glob | |||||
| Structured RootedGlob Source # | |||||
Defined in Distribution.Client.Glob | |||||
| Binary RootedGlob Source # | |||||
Defined in Distribution.Client.Glob | |||||
| Generic RootedGlob Source # | |||||
Defined in Distribution.Client.Glob Associated Types
| |||||
| Show RootedGlob Source # | |||||
Defined in Distribution.Client.Glob Methods showsPrec :: Int -> RootedGlob -> ShowS # show :: RootedGlob -> String # showList :: [RootedGlob] -> ShowS # | |||||
| Eq RootedGlob Source # | |||||
Defined in Distribution.Client.Glob | |||||
| type Rep RootedGlob Source # | |||||
Defined in Distribution.Client.Glob type Rep RootedGlob = D1 ('MetaData "RootedGlob" "Distribution.Client.Glob" "cabal-install-3.12.1.0-AEyM1PDTd3sCnSdrWcebY5" 'False) (C1 ('MetaCons "RootedGlob" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePathRoot) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Glob))) | |||||
isTrivialRootedGlob :: RootedGlob -> Maybe FilePath Source #
Check if a RootedGlob doesn't actually make use of any globbing and
is in fact equivalent to a non-glob FilePath.
If it is trivial in this sense then the result is the equivalent constant
FilePath. On the other hand, if it is not trivial (so could in principle
match more than one file), then the result is Nothing.
data FilePathRoot Source #
Constructors
| FilePathRelative | |
| FilePathRoot FilePath | e.g. |
| FilePathHomeDir |
Instances
| Parsec FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob Methods parsec :: CabalParsing m => m FilePathRoot # | |||||
| Pretty FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob | |||||
| Structured FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob | |||||
| Binary FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob | |||||
| Generic FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob Associated Types
| |||||
| Show FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob Methods showsPrec :: Int -> FilePathRoot -> ShowS # show :: FilePathRoot -> String # showList :: [FilePathRoot] -> ShowS # | |||||
| Eq FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob | |||||
| type Rep FilePathRoot Source # | |||||
Defined in Distribution.Client.Glob type Rep FilePathRoot = D1 ('MetaData "FilePathRoot" "Distribution.Client.Glob" "cabal-install-3.12.1.0-AEyM1PDTd3sCnSdrWcebY5" 'False) (C1 ('MetaCons "FilePathRelative" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "FilePathRoot" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :+: C1 ('MetaCons "FilePathHomeDir" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
getFilePathRootDirectory Source #
Arguments
| :: FilePathRoot | |
| -> FilePath | root for relative paths |
| -> IO FilePath |
Get the FilePath corresponding to a FilePathRoot.
The FilePath argument is required to supply the path for the
FilePathRelative case.
Additional re-exports
Instances
| Parsec Glob | |||||
Defined in Distribution.Simple.Glob.Internal Methods parsec :: CabalParsing m => m Glob # | |||||
| Pretty Glob | |||||
Defined in Distribution.Simple.Glob.Internal | |||||
| Structured Glob | |||||
Defined in Distribution.Simple.Glob.Internal | |||||
| Binary Glob | |||||
| Generic Glob | |||||
Defined in Distribution.Simple.Glob.Internal Associated Types
| |||||
| Show Glob | |||||
| Eq Glob | |||||
| type Rep Glob | |||||
Defined in Distribution.Simple.Glob.Internal type Rep Glob = D1 ('MetaData "Glob" "Distribution.Simple.Glob.Internal" "Cabal-3.12.1.0-inplace" 'False) ((C1 ('MetaCons "GlobDir" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobPieces) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Glob)) :+: C1 ('MetaCons "GlobDirRecursive" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobPieces))) :+: (C1 ('MetaCons "GlobFile" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobPieces)) :+: C1 ('MetaCons "GlobDirTrailing" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
matchDirFileGlobWithDie :: Verbosity -> (Verbosity -> CabalException -> IO [FilePath]) -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath] #
data GlobSyntaxError #
Constructors
| StarInDirectory | |
| StarInFileName | |
| StarInExtension | |
| NoExtensionOnStar | |
| EmptyGlob | |
| LiteralFileNameGlobStar | |
| VersionDoesNotSupportGlobStar | |
| VersionDoesNotSupportGlob |
Instances
| Show GlobSyntaxError | |
Defined in Distribution.Simple.Glob.Internal Methods showsPrec :: Int -> GlobSyntaxError -> ShowS # show :: GlobSyntaxError -> String # showList :: [GlobSyntaxError] -> ShowS # | |
| Eq GlobSyntaxError | |
Defined in Distribution.Simple.Glob.Internal Methods (==) :: GlobSyntaxError -> GlobSyntaxError -> Bool # (/=) :: GlobSyntaxError -> GlobSyntaxError -> Bool # | |
data GlobResult a #
Constructors
| GlobMatch a | |
| GlobWarnMultiDot a | |
| GlobMissingDirectory a | |
| GlobMatchesDirectory a |
Instances
| Functor GlobResult | |
Defined in Distribution.Simple.Glob.Internal Methods fmap :: (a -> b) -> GlobResult a -> GlobResult b # (<$) :: a -> GlobResult b -> GlobResult a # | |
| Show a => Show (GlobResult a) | |
Defined in Distribution.Simple.Glob.Internal Methods showsPrec :: Int -> GlobResult a -> ShowS # show :: GlobResult a -> String # showList :: [GlobResult a] -> ShowS # | |
| Eq a => Eq (GlobResult a) | |
Defined in Distribution.Simple.Glob.Internal | |
| Ord a => Ord (GlobResult a) | |
Defined in Distribution.Simple.Glob.Internal Methods compare :: GlobResult a -> GlobResult a -> Ordering # (<) :: GlobResult a -> GlobResult a -> Bool # (<=) :: GlobResult a -> GlobResult a -> Bool # (>) :: GlobResult a -> GlobResult a -> Bool # (>=) :: GlobResult a -> GlobResult a -> Bool # max :: GlobResult a -> GlobResult a -> GlobResult a # min :: GlobResult a -> GlobResult a -> GlobResult a # | |
explainGlobSyntaxError :: FilePath -> GlobSyntaxError -> String #
fileGlobMatches :: CabalSpecVersion -> Glob -> FilePath -> Maybe (GlobResult ()) #
isRecursiveInRoot :: Glob -> Bool #
parseFileGlob :: CabalSpecVersion -> FilePath -> Either GlobSyntaxError Glob #
runDirFileGlob :: Verbosity -> Maybe CabalSpecVersion -> FilePath -> Glob -> IO [GlobResult FilePath] #
globMatches :: [GlobResult a] -> [a] #
Constructors
| GlobDir !GlobPieces !Glob | |
| GlobDirRecursive !GlobPieces | |
| GlobFile !GlobPieces | |
| GlobDirTrailing |
Instances
| Parsec Glob | |||||
Defined in Distribution.Simple.Glob.Internal Methods parsec :: CabalParsing m => m Glob # | |||||
| Pretty Glob | |||||
Defined in Distribution.Simple.Glob.Internal | |||||
| Structured Glob | |||||
Defined in Distribution.Simple.Glob.Internal | |||||
| Binary Glob | |||||
| Generic Glob | |||||
Defined in Distribution.Simple.Glob.Internal Associated Types
| |||||
| Show Glob | |||||
| Eq Glob | |||||
| type Rep Glob | |||||
Defined in Distribution.Simple.Glob.Internal type Rep Glob = D1 ('MetaData "Glob" "Distribution.Simple.Glob.Internal" "Cabal-3.12.1.0-inplace" 'False) ((C1 ('MetaCons "GlobDir" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobPieces) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Glob)) :+: C1 ('MetaCons "GlobDirRecursive" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobPieces))) :+: (C1 ('MetaCons "GlobFile" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 GlobPieces)) :+: C1 ('MetaCons "GlobDirTrailing" 'PrefixI 'False) (U1 :: Type -> Type))) | |||||
Constructors
| WildCard | |
| Literal String | |
| Union [GlobPieces] |
Instances
| Structured GlobPiece | |||||
Defined in Distribution.Simple.Glob.Internal | |||||
| Binary GlobPiece | |||||
| Generic GlobPiece | |||||
Defined in Distribution.Simple.Glob.Internal Associated Types
| |||||
| Show GlobPiece | |||||
| Eq GlobPiece | |||||
| type Rep GlobPiece | |||||
Defined in Distribution.Simple.Glob.Internal type Rep GlobPiece = D1 ('MetaData "GlobPiece" "Distribution.Simple.Glob.Internal" "Cabal-3.12.1.0-inplace" 'False) (C1 ('MetaCons "WildCard" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Literal" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String)) :+: C1 ('MetaCons "Union" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GlobPieces])))) | |||||
type GlobPieces = [GlobPiece] #
matchGlobPieces :: GlobPieces -> String -> Bool #
matchFileGlob :: FilePath -> RootedGlob -> IO [FilePath] Source #
Match a RootedGlob against the file system, starting from a given
root directory for relative paths. The results of relative globs are
relative to the given root. Matches for absolute globs are absolute.