diff --git a/flake.nix b/flake.nix index 3c4be74..fa5d34f 100644 --- a/flake.nix +++ b/flake.nix @@ -11,7 +11,7 @@ }; outputs = { self, nixpkgs, flake-utils, pre-commit-hooks }: - flake-utils.lib.eachDefaultSystem (system: + flake-utils.lib.eachSystem [ "x86_64-linux" ] (system: let pkgs = nixpkgs.legacyPackages.${system}; @@ -27,13 +27,13 @@ # Dependency overrides go here }; - defaultPackage = self.packages.${system}.${packageName}; + packages.default = self.packages.${system}.${packageName}; apps = { # run with: nix run #.hcat hcat = { type = "app"; - program = "${self.defaultPackage.${system}}/bin/hcat"; + program = "${self.packages.${system}.default}/bin/hcat"; }; # run with: nix run @@ -43,25 +43,28 @@ checks = { pre-commit-check = pre-commit-hooks.lib.${system}.run { src = ./.; + settings = { ormolu.defaultExtensions = [ "GHC2021" ]; }; + tools.fourmolu = haskellPackages.fourmolu; hooks = { nixfmt.enable = true; fourmolu.enable = true; hpack.enable = true; hlint.enable = true; doctest = { - enable = true; + enable = false; name = "Run documentation tests"; - entry = "doctest"; + entry = "${haskellPackages.doctest}/bin/doctest src app"; files = "\\.l?hs$"; + pass_filenames = false; }; }; }; }; - devShell = haskellPackages.shellFor { + devShells.default = haskellPackages.shellFor { inherit (self.checks.${system}.pre-commit-check) shellHook; - packages = p: [ self.defaultPackage.${system} ]; + packages = p: [ self.packages.${system}.default ]; withHoogle = true; diff --git a/fourmolu.yaml b/fourmolu.yaml index 9f360f9..d8c5559 100644 --- a/fourmolu.yaml +++ b/fourmolu.yaml @@ -1 +1,2 @@ haddock-style: single-line +indentation: 2 diff --git a/hcat.cabal b/hcat.cabal index 5a28798..fecf793 100644 --- a/hcat.cabal +++ b/hcat.cabal @@ -24,9 +24,9 @@ library hs-source-dirs: src default-extensions: - GHC2021 BlockArguments OverloadedStrings + ImportQualifiedPost ghc-options: -Wall -Wunused-packages -fdefer-typed-holes build-depends: base >=4.13 && <5 @@ -40,9 +40,9 @@ executable hcat hs-source-dirs: app default-extensions: - GHC2021 BlockArguments OverloadedStrings + ImportQualifiedPost ghc-options: -Wall -Wunused-packages -fdefer-typed-holes build-depends: base >=4.13 && <5 @@ -59,9 +59,9 @@ test-suite spec hs-source-dirs: test default-extensions: - GHC2021 BlockArguments OverloadedStrings + ImportQualifiedPost ghc-options: -Wall -Wunused-packages -fdefer-typed-holes cpp-options: -DTEST build-tool-depends: @@ -74,4 +74,4 @@ test-suite spec , quickcheck-instances , quickcheck-text , text - default-language: Haskell2010 + default-language: GHC2021 diff --git a/package.yaml b/package.yaml index cbf8e8f..4ddf9af 100644 --- a/package.yaml +++ b/package.yaml @@ -23,9 +23,9 @@ ghc-options: - -fdefer-typed-holes default-extensions: - - GHC2021 - BlockArguments - OverloadedStrings + - ImportQualifiedPost library: source-dirs: src @@ -54,3 +54,5 @@ tests: - quickcheck-instances - quickcheck-text build-tools: hspec-discover + verbatim: + default-language: GHC2021 diff --git a/src/HCat.hs b/src/HCat.hs index bdf9251..fa93ec5 100644 --- a/src/HCat.hs +++ b/src/HCat.hs @@ -1,6 +1,6 @@ module HCat ( - runHCat, - defaultMain, + runHCat, + defaultMain, ) where import System.Environment qualified as Env @@ -15,16 +15,16 @@ import HCat.Internal (parseArgs) runHCat :: IO () runHCat = do - fileNameOrError <- parseArgs <$> Env.getArgs - fileName <- eitherToError fileNameOrError - TextIO.readFile fileName >>= TextIO.putStr + fileNameOrError <- parseArgs <$> Env.getArgs + fileName <- eitherToError fileNameOrError + TextIO.readFile fileName >>= TextIO.putStr eitherToError :: Show a => Either a b -> IO b eitherToError = either (Exception.throwIO . IOError.userError . show) return handleError :: IOError -> IO () handleError e = do - hPutStrLn stderr $ "I ran into an issue: " <> show e + hPutStrLn stderr $ "I ran into an issue: " <> show e defaultMain :: IO () defaultMain = Exception.catch runHCat handleError diff --git a/src/HCat/Internal.hs b/src/HCat/Internal.hs index c0ec415..69f0493 100644 --- a/src/HCat/Internal.hs +++ b/src/HCat/Internal.hs @@ -7,9 +7,9 @@ module HCat.Internal where -- Right "foo" parseArgs :: [String] -> Either String FilePath parseArgs args = case args of - [] -> Left "No filename given!" - [arg] -> Right arg - _ -> Left "Only a single file is supported" + [] -> Left "No filename given!" + [arg] -> Right arg + _ -> Left "Only a single file is supported" -- | @chunksOf n@ splits a list into chunks of at most @n@ items. -- @@ -24,7 +24,7 @@ parseArgs args = case args of chunksOf :: Int -> [a] -> [[a]] chunksOf _ [] = [] chunksOf n xs@(_ : _) - | n <= 0 = [] - | otherwise = - let (chunk, rest) = splitAt n xs - in chunk : chunksOf n rest + | n <= 0 = [] + | otherwise = + let (chunk, rest) = splitAt n xs + in chunk : chunksOf n rest diff --git a/test/HCatSpec.hs b/test/HCatSpec.hs index 6862706..0054f16 100644 --- a/test/HCatSpec.hs +++ b/test/HCatSpec.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE GHC2021 #-} +-- {-# LANGUAGE GHC2021 #-} module HCatSpec (spec) where