hm/Setup.hs

34 lines
763 B
Haskell

import Distribution.Simple
import System.Process
import System.Environment
import System.Directory
target :: String
target = "src/Hm"
source :: String
source = "hm.cf"
regenerateGrammar :: IO ()
regenerateGrammar = do
callProcess "bnfc" ["-d", "--text-token", "--functor", source]
removePathForcibly target
renameDirectory "Hm" target
main :: IO ()
main = do
(a:_) <- getArgs
if a == "build"
then do
b <- doesDirectoryExist target
if not b
then regenerateGrammar
else do
sourceDate <- getModificationTime source
targetDate <- getModificationTime target
if sourceDate >= targetDate
then regenerateGrammar
else pure ()
else pure ()
defaultMain