{-# LANGUAGE TypeApplications #-}
module Main
( main
) where

import           Control.Monad
import qualified Data.ByteString as B
import           Data.Foldable (traverse_)
import           System.Exit (die)
import           System.Environment (getArgs)
import           TreeSitter.Ruby
import qualified TreeSitter.Ruby.AST as Rb
import           TreeSitter.Unmarshal

main :: IO ()
main = getArgs >>= traverse_ (print <=< parseFile)

parseFile :: FilePath -> IO (Rb.Program ())
parseFile = either die pure <=< parseByteString @Rb.Program @() tree_sitter_ruby <=< B.readFile