Hatch.hs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. import Util
  13. main :: IO ()
  14. main = do
  15. conf <- readConfig
  16. print (conf^.iniValueL)
  17. programName <- Sys.takeFileName `fmap` Sys.getProgName
  18. if programName == "hatch"
  19. then runAsHatch conf
  20. else runAsProxy conf programName
  21. runAsProxy :: ConfigFile -> FilePath -> IO ()
  22. runAsProxy conf program = do
  23. putStrLn ("Invoking as " ++ program)
  24. let ver = conf^.iniValueL.configCurrentCompiler
  25. case ver of
  26. Nothing -> Sys.die "No compiler configured!"
  27. Just c -> do
  28. let ver' = compilerString c
  29. root = conf^.iniValueL.configInstallPath </> ver'
  30. progn = root </> "bin" </> program
  31. args <- Sys.getArgs
  32. Sys.executeFile progn False args Nothing
  33. data HatchCommand
  34. = SwitchCompiler
  35. | FetchCompiler
  36. deriving (Eq, Show)
  37. runAsHatch :: ConfigFile -> IO ()
  38. runAsHatch _ = do
  39. printErr "testing"
  40. putStrLn "Invoking as Hatch!"