2025-02-21 14:43:35 +01:00
|
|
|
module Main
|
|
|
|
( main
|
|
|
|
) where
|
|
|
|
|
|
|
|
import System.Directory as Directory
|
|
|
|
import qualified Control.Monad.Trans.Reader as Reader
|
|
|
|
|
|
|
|
import qualified Data.Set as Set
|
2025-02-21 18:17:46 +01:00
|
|
|
import qualified Data.Text.IO as Text.IO
|
2025-02-21 14:43:35 +01:00
|
|
|
|
2025-01-25 20:55:26 +01:00
|
|
|
import qualified Text.Parsec as Parsec
|
2025-02-21 14:43:35 +01:00
|
|
|
|
|
|
|
import qualified Path as Path
|
|
|
|
|
|
|
|
import Ubc.Parse.Syntax.Config (Config(..))
|
|
|
|
|
2025-01-25 20:55:26 +01:00
|
|
|
import qualified Ubc.Parse.Syntax.File as File
|
2024-12-30 08:44:51 +01:00
|
|
|
|
2025-02-21 14:43:35 +01:00
|
|
|
minimalConfig :: IO Config
|
|
|
|
minimalConfig = do
|
|
|
|
workingDir <- Directory.getCurrentDirectory >>= Path.parseAbsDir
|
|
|
|
pure $ Config (Set.singleton workingDir)
|
|
|
|
|
2024-12-30 08:44:51 +01:00
|
|
|
main :: IO ()
|
|
|
|
main = do
|
2025-02-21 18:17:46 +01:00
|
|
|
text <- Text.IO.getContents
|
2025-02-18 17:16:18 +01:00
|
|
|
-- fixme: handle errors?
|
2025-01-25 20:55:26 +01:00
|
|
|
|
2025-02-21 14:43:35 +01:00
|
|
|
parseConfig <- minimalConfig
|
|
|
|
|
|
|
|
result <- Reader.runReaderT (Parsec.runPT (File.parse <* Parsec.eof) () "<stdin>" text) parseConfig
|
|
|
|
print $ result
|
|
|
|
-- print $ Parsec.parse (File.parse <* Parsec.eof) "<stdin>" text
|