packages feed

streamly-process-0.2.0.1: streamly-process.cabal

cabal-version:       2.2
name:                streamly-process
version:             0.2.0.1
synopsis:            Use OS processes as stream transformation functions
description:
    Run operating system processes as stream source, sink or transformation
    functions. Use them seamlessly in a streaming data pipeline in the same way
    as any other Haskell functions.
homepage:            https://streamly.composewell.com
bug-reports:         https://github.com/composewell/streamly-process/issues
license:             Apache-2.0
license-file:        LICENSE
author:              Composewell Technologies
maintainer:          streamly@composewell.com
copyright:           Composewell Technologies
category:            Streamly, Streaming, System
stability:           Experimental
tested-with:         GHC==9.2.1
                   , GHC==9.0.1
                   , GHC==8.10.5
                   , GHC==8.8.4
                   , GHC==8.6.5
                   , GHC==8.4.4
build-type:          Simple
extra-source-files:
  CHANGELOG.md
  NOTICE
  README.md
  design/proposal.md
  test/data/failExec.bat
  test/data/failExec.sh
  test/data/passExec.bat
  test/data/passExec.sh
  test/data/writeTrToError.bat
  test/data/writeTrToError.sh

source-repository head
  type: git
  location: https://github.com/composewell/streamly-process

flag fusion-plugin
  description: Use fusion plugin for benchmarks and executables
  manual: True
  default: False

flag use-gauge
  description: Use gauge instead of tasty-bench for benchmarking
  manual: True
  default: False

common compile-options
  default-language: Haskell2010
  ghc-options:
    -Wall
    -Wcompat
    -Wunrecognised-warning-flags
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wredundant-constraints
    -Wnoncanonical-monad-instances

common optimization-options
  ghc-options:
    -O2
    -fdicts-strict
    -fspec-constr-recursive=16
    -fmax-worker-args=16

library
  import: compile-options, optimization-options
  hs-source-dirs: src
  exposed-modules:
    Streamly.System.Process
    Streamly.Internal.System.Process
  if !os(windows)
    exposed-modules:
      Streamly.Internal.System.Process.Posix
  ghc-options:
    -Wall
    -Wcompat
    -Wunrecognised-warning-flags
    -Widentities
    -Wincomplete-record-updates
    -Wincomplete-uni-patterns
    -Wredundant-constraints
    -Wnoncanonical-monad-instances
  build-depends:
      base              >= 4.8   && < 5
    , process           >= 1.0   && < 1.7
    -- Uses internal APIs
    , streamly          == 0.8.1.* || == 0.8.2.*
    , exceptions        >= 0.8   && < 0.11
  if !os(windows)
    build-depends:
      unix              >= 2.5   && < 2.8

-------------------------------------------------------------------------------
-- Benchmarks
-------------------------------------------------------------------------------

common threading-options
  ghc-options:
    -threaded
    -with-rtsopts=-N

benchmark Benchmark.System.Process
  import: compile-options, optimization-options
  if flag(fusion-plugin) && !impl(ghc < 8.6)
    ghc-options: -fplugin Fusion.Plugin
  type: exitcode-stdio-1.0
  main-is: Benchmark/System/Process.hs
  build-depends:
      streamly-process
    , base              >= 4.8   && < 5
    , directory         >= 1.2.2 && < 1.4
    , process           >= 1.0   && < 1.7
    -- Uses internal APIs
    , streamly          == 0.8.1.* || == 0.8.2.*

  if flag(fusion-plugin) && !impl(ghc < 8.6)
    build-depends:
        fusion-plugin     >= 0.2   && < 0.3
  if flag(use-gauge)
    build-depends:  gauge >= 0.2.4 && < 0.3
  else
    build-depends:    tasty-bench >= 0.2.5 && < 0.4
    mixins: tasty-bench
      (Test.Tasty.Bench as Gauge
      , Test.Tasty.Bench as Gauge.Main
      )

-------------------------------------------------------------------------------
-- Test Suites
-------------------------------------------------------------------------------

test-suite Test.System.Process
  import: compile-options, optimization-options, threading-options
  type: exitcode-stdio-1.0
  main-is: test/Streamly/System/Process.hs
  build-depends:
      streamly-process
    , base              >= 4.8   && < 5
    , directory         >= 1.2.2 && < 1.4
    , exceptions        >= 0.8   && < 0.11
    , hspec             >= 2.0   && < 3
    , process           >= 1.0   && < 1.7
    , QuickCheck        >= 2.10  && < 2.15
    -- Uses internal APIs
    , streamly          == 0.8.1.* || == 0.8.2.*