Hatch.hs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. module Hatch
  2. ( main
  3. ) where
  4. import Lens.Family
  5. import qualified System.Environment as Sys
  6. import System.FilePath ((</>))
  7. import qualified System.FilePath as Sys
  8. import qualified System.Exit as Sys
  9. import qualified System.Posix.Process as Sys
  10. import Config
  11. import Types
  12. main :: IO ()
  13. main = do
  14. conf <- fetchConfig
  15. print (conf^.iniValueL)
  16. programName <- Sys.takeFileName `fmap` Sys.getProgName
  17. if programName == "hatch"
  18. then runAsHatch conf
  19. else runAsProxy conf programName
  20. runAsProxy :: ConfigFile -> FilePath -> IO ()
  21. runAsProxy conf program = do
  22. putStrLn ("Invoking as " ++ program)
  23. let ver = conf^.iniValueL.configCurrentCompiler
  24. case ver of
  25. Nothing -> Sys.die "No compiler configured!"
  26. Just c -> do
  27. let ver' = compilerString c
  28. root = conf^.iniValueL.configInstallPath </> ver'
  29. progn = root </> "bin" </> program
  30. args <- Sys.getArgs
  31. Sys.executeFile progn False args Nothing
  32. runAsHatch :: ConfigFile -> IO ()
  33. runAsHatch _ = do
  34. putStrLn "Invoking as Hatch!"