summaryrefslogtreecommitdiff
path: root/src/Language/Fiddle/Compiler/ImportResolution.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/Fiddle/Compiler/ImportResolution.hs')
-rw-r--r--src/Language/Fiddle/Compiler/ImportResolution.hs41
1 files changed, 25 insertions, 16 deletions
diff --git a/src/Language/Fiddle/Compiler/ImportResolution.hs b/src/Language/Fiddle/Compiler/ImportResolution.hs
index b4c5293..90a11d5 100644
--- a/src/Language/Fiddle/Compiler/ImportResolution.hs
+++ b/src/Language/Fiddle/Compiler/ImportResolution.hs
@@ -1,7 +1,6 @@
module Language.Fiddle.Compiler.ImportResolution
( resolveImports,
getImportResolutionState,
- ImportResolutionOptions (..),
importResolutionPhase,
)
where
@@ -18,8 +17,30 @@ import Language.Fiddle.Compiler
import Language.Fiddle.Compiler.Expansion
import Language.Fiddle.Internal.UnitInterface
import Language.Fiddle.Types
+import Options.Applicative
import Text.Printf (printf)
+newtype Flags = Flags
+ { importDirectories :: [FilePath]
+ }
+
+parseFlags :: Parser Flags
+parseFlags =
+ Flags
+ <$> many
+ ( strOption
+ ( long "import"
+ <> short 'I'
+ <> metavar "DIRECTORY"
+ <> help "Directory to add to the import search path"
+ )
+ )
+
+importResolutionPhase ::
+ CompilationPhase CurrentStage ImportsResolved
+importResolutionPhase =
+ CompilationPhase parseFlags getImportResolutionState resolveImports
+
type GlobalState = ()
type LocalState = ResolvedImports
@@ -46,19 +67,12 @@ instance CompilationStage CurrentStage where
type StageFunctor CurrentStage = Identity
type StageAnnotation CurrentStage = Annot
-importResolutionPhase ::
- ImportResolutionOptions ->
- CompilationPhase CurrentStage ImportsResolved
-importResolutionPhase opts =
- CompilationPhase
- (getImportResolutionState opts)
- resolveImports
-
resolveImports ::
+ Flags ->
ResolvedImports ->
FiddleUnit CurrentStage I Annot ->
Compile () (FiddleUnit ImportsResolved I Annot)
-resolveImports = advanceStage
+resolveImports _ = advanceStage
deriving instance AdvanceStage CurrentStage ObjTypeBody
@@ -111,13 +125,8 @@ instance AdvanceStage CurrentStage ImportStatement where
return $ ImportStatement path list v a
-newtype ImportResolutionOptions
- = ImportResolutionOptions
- { searchPath :: [FilePath]
- }
-
getImportResolutionState ::
- ImportResolutionOptions ->
+ Flags ->
FiddleUnit CurrentStage Identity Annot ->
IO ResolvedImports
getImportResolutionState _ _ = return (ResolvedImports mempty)