File directory-ospath-streaming.cabal of Package ghc-directory-ospath-streaming

cabal-version: 3.0

-- Created : 27 April 2023

name:
  directory-ospath-streaming
version:
  0.2.2
x-revision: 1
synopsis:
  Stream directory entries in constant memory in vanilla IO
description:
  Reading of directory contents in constant memory, i.e. in an iterative
  fashion without storing all directory elements in memory. From another
  perspective, this reading interface allows stopping at any point
  without loading every directory element.

  Also defines general-purpose recursive directory traversals.

  Both Windows and Unix systems are supported.
copyright:
  (c) Sergey Vinokurov 2023
license:
  Apache-2.0
license-file:
  LICENSE
author:
  Sergey Vinokurov
maintainer:
  Sergey Vinokurov <serg.foo@gmail.com>
category:
  File, Streaming

tested-with:
  , GHC == 8.6
  , GHC == 8.8
  , GHC == 8.10
  , GHC == 9.2
  , GHC == 9.4
  , GHC == 9.6
  , GHC == 9.8
  , GHC == 9.10

build-type:
  Simple

extra-source-files:
  test/filesystem/*.txt
  test/filesystem/bin/*.txt

extra-doc-files:
  Changelog.md
  Readme.md

homepage:
  https://github.com/sergv/directory-ospath-streaming

source-repository head
  type: git
  location: https://github.com/sergv/directory-ospath-streaming.git

-- Cabal will pick this flag up automatically during solving. Default to true
-- since that’s what should be picked up for all future filepath versions starting at 1.5.
flag os-string
  description:
    Depend on os-string package, needed for filepath >= 1.5
  default:
    True
  manual:
    False

common ghc-options
  default-language: Haskell2010

  ghc-options:
    -Weverything
    -Wno-all-missed-specialisations
    -Wno-implicit-prelude
    -Wno-missed-specialisations
    -Wno-missing-import-lists
    -Wno-missing-local-signatures
    -Wno-safe
    -Wno-unsafe

  if impl(ghc >= 8.8)
    ghc-options:
      -Wno-missing-deriving-strategies

  if impl(ghc >= 8.10)
    ghc-options:
      -Wno-missing-safe-haskell-mode
      -Wno-prepositive-qualified-module

  if impl(ghc >= 9.2)
    ghc-options:
      -Wno-missing-kind-signatures

  if impl(ghc >= 9.8)
    ghc-options:
      -Wno-missing-role-annotations
      -Wno-missing-poly-kind-signatures

common depends-on-filepath
  if flag(os-string)
    build-depends:
      , filepath >= 1.5
      , os-string >= 2.0
  else
    build-depends:
      , filepath >= 1.4.100 && < 1.5

library
  import: ghc-options, depends-on-filepath
  exposed-modules:
    System.Directory.OsPath.Streaming
    System.Directory.OsPath.Streaming.Internal
    System.Directory.OsPath.Streaming.Internal.Raw
    System.Directory.OsPath.Types
  other-modules:
    System.Directory.OsPath.Contents
    System.Directory.OsPath.FileType
    System.Directory.OsPath.Utils
  hs-source-dirs:
    src
  build-depends:
    , atomic-counter >= 0.1.2
    , base >= 4.12 && < 5
    , deepseq >= 1.4

  if os(windows)
    build-depends:
      , directory >= 1.3.8
      , Win32 >= 2.13.3
  else
    build-depends:
      -- Cannot use lower version because it doesn’t support OsStrings
      , unix >= 2.8

test-suite test
  import: ghc-options, depends-on-filepath
  type:
    exitcode-stdio-1.0
  main-is:
    test/TestMain.hs
  hs-source-dirs:
    .
    test
  build-depends:
    , base >= 4.12
    , directory-ospath-streaming
    , tasty
    , tasty-hunit
  if !os(windows)
    build-depends:
      , directory
      , random
      , unix >= 2.8
  ghc-options:
    -rtsopts
    -main-is TestMain
openSUSE Build Service is sponsored by