diff --git a/flake.nix b/flake.nix index 0d630c6..a665510 100644 --- a/flake.nix +++ b/flake.nix @@ -70,12 +70,12 @@ haskellPackages.haskell-language-server haskellPackages.fourmolu haskellPackages.hspec-discover + haskellPackages.doctest cabal-install ghcid nixfmt hpack hlint - haskellPackages.doctest ]; }; }); diff --git a/hcat.cabal b/hcat.cabal index f84a895..9c3766b 100644 --- a/hcat.cabal +++ b/hcat.cabal @@ -50,6 +50,25 @@ executable hcat , hcat default-language: GHC2021 +test-suite doctest + type: exitcode-stdio-1.0 + main-is: Doctest.hs + other-modules: + Paths_hcat + hs-source-dirs: + test/doctest + default-extensions: + BlockArguments + OverloadedStrings + ImportQualifiedPost + ghc-options: -Wall -fdefer-typed-holes + build-tool-depends: + doctest:doctest + build-depends: + base >=4.13 && <5 + , process + default-language: Haskell2010 + test-suite spec type: exitcode-stdio-1.0 main-is: Spec.hs diff --git a/package.yaml b/package.yaml index b2d6beb..d15b892 100644 --- a/package.yaml +++ b/package.yaml @@ -56,9 +56,10 @@ tests: build-tools: hspec-discover verbatim: default-language: GHC2021 - # doctest: - # main: Doctest.hs - # source-dirs: - # - test/doctest - # dependencies: - # - process + doctest: + main: Doctest.hs + source-dirs: + - test/doctest + dependencies: + - process + build-tools: doctest diff --git a/src/HCat/Internal.hs b/src/HCat/Internal.hs index d28a0ff..467a446 100644 --- a/src/HCat/Internal.hs +++ b/src/HCat/Internal.hs @@ -4,6 +4,8 @@ module HCat.Internal where import Data.Text (Text) import Data.Text qualified as T +import System.Process qualified as P + -- | @parseArgs@ takes a list of strings and returns a single FilePath if there was exactly one element. -- -- >>> parseArgs ["foo"] @@ -67,3 +69,8 @@ paginate (ScreenDimensions rows cols) = type Pages = [Page] type Page = Text + +getScreenDimensions :: IO ScreenDimensions +getScreenDimensions = ScreenDimensions <$> tput "lines" <*> tput "cols" + where + tput cmd = read <$> P.readProcess "tput" [cmd] ""