module Compiler.Utils where
import Compiler.Types
import Language.Types
import System.FilePath ((</>))
import Types
initialState :: PureCompiler CompilerState
initialState = do
override <- asks conf_compile_kind
return $ CompilerState {
state_deployment_kind_override = override
, state_into = ""
, state_outof_prefix = []
}
addDeployment :: Deployment -> InternalCompiler ()
addDeployment d = tell ([d], [])
addCardRef :: CardReference -> InternalCompiler ()
addCardRef c = tell ([], [c])
sources :: FilePath -> PrefixPart
sources fp@('.':f) = Alts [fp, f]
sources fp = Literal fp
resolvePrefix :: CompilerPrefix -> [FilePath]
resolvePrefix [] = []
resolvePrefix [Literal s] = [s]
resolvePrefix [Alts ds] = ds
resolvePrefix ((Literal s):ps) = do
rest <- resolvePrefix ps
return $ s </> rest
resolvePrefix ((Alts as):ps) = do
a <- as
rest <- resolvePrefix ps
return $ a </> rest