module Main where
import Config (Config (..))
import Config qualified
import Data.Containers.ListUtils (nubOrd)
import Data.Foldable (for_, toList)
import Document qualified
import Effectful
import Effectful.Hspec (describe, runHspec)
import Lint qualified
import System.Environment (withArgs)
import Prelude
main :: IO ()
main = do
Config{..} <- Config.get
withArgs [] . runEff . runHspec $ do
documents <- mapM Document.read . nubOrd . filter (`notElem` reference) . toList $ files
reference <- mapM Document.read reference
for_ (toList reference <> documents) \document ->
describe document.path $
(if lenient then Lint.lenient else Lint.strict) reference document