module Hatch
( main
) where
import Lens.Family ((^.))
import qualified System.Environment as Sys
import System.FilePath ((</>))
import qualified System.FilePath as Sys
import qualified System.Exit as Sys
import qualified System.Posix.Process as Sys
import Config
import Types
import Util
main :: IO ()
main = do
conf <- readConfig
print (conf^.iniValueL)
programName <- Sys.takeFileName `fmap` Sys.getProgName
if programName == "hatch"
then runAsHatch conf
else runAsProxy conf programName
runAsProxy :: ConfigFile -> FilePath -> IO ()
runAsProxy conf program = do
putStrLn ("Invoking as " ++ program)
let ver = conf^.iniValueL.configCurrentCompiler
case ver of
Nothing -> Sys.die "No compiler configured!"
Just c -> do
let ver' = compilerString c
root = conf^.iniValueL.configInstallPath </> ver'
progn = root </> "bin" </> program
args <- Sys.getArgs
Sys.executeFile progn False args Nothing
data HatchCommand
= SwitchCompiler
| FetchCompiler
deriving (Eq, Show)
runAsHatch :: ConfigFile -> IO ()
runAsHatch _ = do
printErr "testing"
putStrLn "Invoking as Hatch!"