From ffe3fd8a719be8d02b03bac6bc8232a7bc9fa692 Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Tue, 22 Aug 2023 17:15:50 -0400 Subject: Lint faster by grouping files by extension Previously I would lint every file individually, in serial. This took forever. Now I group the files by extension (by first getting the Namespace) and run each linter on all relevant files at once. This is so much faster its stupid. Also I added formatters back into the dev env because my editor needs them to autoformat. --- Biz/Namespace.hs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Biz/Namespace.hs') diff --git a/Biz/Namespace.hs b/Biz/Namespace.hs index 6d099fd..9621186 100644 --- a/Biz/Namespace.hs +++ b/Biz/Namespace.hs @@ -15,6 +15,7 @@ module Biz.Namespace toHaskellModule, toSchemeModule, isCab, + groupByExt, ) where @@ -24,6 +25,7 @@ import qualified Data.Aeson.Types as Aeson import qualified Data.Char as Char import qualified Data.List as List import qualified Data.List.Split as List +import qualified Data.Map as Map import qualified Data.Text as Text import qualified Text.Regex.Applicative as Regex @@ -134,3 +136,7 @@ reExt = isCab :: FilePath -> Bool isCab ('_' : _) = True isCab fp = "/_/" `List.isInfixOf` fp + +-- | Group a list of Namespaces keyed by their extensions +groupByExt :: [Namespace] -> Map Ext [Namespace] +groupByExt ns's = Map.fromListWith (++) [(ext ns, [ns]) | ns <- ns's] -- cgit v1.2.3