Cabal-3.10.1.0: A framework for packaging Haskell software

Copyright | Isaac Jones Simon Marlow 2003-2004
License | BSD3 portions Copyright (c) 2007, Galois Inc.
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | Safe-Inferred
Language | Haskell2010

Distribution.Simple.Glob

Description

Simple file globbing.

Synopsis

- data GlobSyntaxError
  - = StarInDirectory
  - | StarInFileName
  - | StarInExtension
  - | NoExtensionOnStar
  - | EmptyGlob
  - | LiteralFileNameGlobStar
  - | VersionDoesNotSupportGlobStar
  - | VersionDoesNotSupportGlob
- data GlobResult a
  - = GlobMatch a
  - | GlobWarnMultiDot a
  - | GlobMissingDirectory FilePath
- matchDirFileGlob :: Verbosity -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath]
- matchDirFileGlobWithDie :: Verbosity -> (Verbosity -> String -> IO [FilePath]) -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath]
- runDirFileGlob :: Verbosity -> FilePath -> Glob -> IO [GlobResult FilePath]
- fileGlobMatches :: Glob -> FilePath -> Maybe (GlobResult FilePath)
- parseFileGlob :: CabalSpecVersion -> FilePath -> Either GlobSyntaxError Glob
- explainGlobSyntaxError :: FilePath -> GlobSyntaxError -> String
- isRecursiveInRoot :: Glob -> Bool
- data Glob

# Documentation

data GlobSyntaxError Source #

Constructors

StarInDirectory |
StarInFileName |
StarInExtension |
NoExtensionOnStar |
EmptyGlob |
LiteralFileNameGlobStar |
VersionDoesNotSupportGlobStar |
VersionDoesNotSupportGlob |

#### Instances

Instances details

Show GlobSyntaxError Source # |
Instance details Defined in Distribution.Simple.Glob Methods showsPrec :: Int -> GlobSyntaxError -> ShowS Source # show :: GlobSyntaxError -> String Source # showList :: [GlobSyntaxError] -> ShowS Source #
Eq GlobSyntaxError Source # |
Instance details Defined in Distribution.Simple.Glob Methods (==) :: GlobSyntaxError -> GlobSyntaxError -> Bool # (/=) :: GlobSyntaxError -> GlobSyntaxError -> Bool #

data GlobResult a Source #

Constructors

GlobMatch a | The glob matched the value supplied.
GlobWarnMultiDot a | The glob did not match the value supplied because the cabal-version is too low and the extensions on the file did not precisely match the glob's extensions, but rather the glob was a proper suffix of the file's extensions; i.e., if not for the low cabal-version, it would have matched.
GlobMissingDirectory FilePath | The glob couldn't match because the directory named doesn't exist. The directory will be as it appears in the glob (i.e., relative to the directory passed to `matchDirFileGlob`, and, for 'data-files', relative to 'data-dir').

#### Instances

Instances details

Functor GlobResult Source # |
Instance details Defined in Distribution.Simple.Glob Methods fmap :: (a -> b) -> GlobResult a -> GlobResult b Source # (<$) :: a -> GlobResult b -> GlobResult a Source #
Show a => Show (GlobResult a) Source # |
Instance details Defined in Distribution.Simple.Glob Methods showsPrec :: Int -> GlobResult a -> ShowS Source # show :: GlobResult a -> String Source # showList :: [GlobResult a] -> ShowS Source #
Eq a => Eq (GlobResult a) Source # |
Instance details Defined in Distribution.Simple.Glob Methods (==) :: GlobResult a -> GlobResult a -> Bool # (/=) :: GlobResult a -> GlobResult a -> Bool #
Ord a => Ord (GlobResult a) Source # |

Instance details

Defined in Distribution.Simple.Glob

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 #

matchDirFileGlob :: Verbosity -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath] Source #

This will `die'` when the glob matches no files, or if the glob refers to a missing directory, or if the glob fails to parse.

The `Version` argument must be the spec version of the package description being processed, as globs behave slightly differently in different spec versions.

The first `FilePath` argument is the directory that the glob is relative to. It must be a valid directory (and hence it can't be the empty string). The returned values will not include this prefix.

The second `FilePath` is the glob itself.

matchDirFileGlobWithDie :: Verbosity -> (Verbosity -> String -> IO [FilePath]) -> CabalSpecVersion -> FilePath -> FilePath -> IO [FilePath] Source #

Like `matchDirFileGlob` but with customizable `die`

Since: Cabal-3.6.0.0

runDirFileGlob :: Verbosity -> FilePath -> Glob -> IO [GlobResult FilePath] Source #

Match files against a pre-parsed glob, starting in a directory.

The `Version` argument must be the spec version of the package description being processed, as globs behave slightly differently in different spec versions.

The `FilePath` argument is the directory that the glob is relative to. It must be a valid directory (and hence it can't be the empty string). The returned values will not include this prefix.

fileGlobMatches :: Glob -> FilePath -> Maybe (GlobResult FilePath) Source #

Returns `Nothing` if the glob didn't match at all, or `Just` the result if the glob matched (or would have matched with a higher cabal-version).

parseFileGlob :: CabalSpecVersion -> FilePath -> Either GlobSyntaxError Glob Source #

explainGlobSyntaxError :: FilePath -> GlobSyntaxError -> String Source #

isRecursiveInRoot :: Glob -> Bool Source #

data Glob Source #