summaryrefslogtreecommitdiff
path: root/src/GFC.hs
diff options
context:
space:
mode:
authoraarne <aarne@cs.chalmers.se>2008-06-25 16:54:35 +0000
committeraarne <aarne@cs.chalmers.se>2008-06-25 16:54:35 +0000
commite9e80fc389365e24d4300d7d5390c7d833a96c50 (patch)
treef0b58473adaa670bd8fc52ada419d8cad470ee03 /src/GFC.hs
parentb96b36f43de3e2f8b58d5f539daa6f6d47f25870 (diff)
changed names of resource-1.3; added a note on homepage on release
Diffstat (limited to 'src/GFC.hs')
-rw-r--r--src/GFC.hs44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/GFC.hs b/src/GFC.hs
new file mode 100644
index 000000000..17c95eb30
--- /dev/null
+++ b/src/GFC.hs
@@ -0,0 +1,44 @@
+module GFC (mainGFC) where
+-- module Main where
+
+import PGF
+import PGF.CId
+import PGF.Data
+import PGF.Raw.Parse
+import PGF.Raw.Convert
+import GF.Compile
+import GF.Compile.Export
+import GF.Infra.UseIO
+import GF.Infra.Option
+import GF.Data.ErrM
+
+import Data.Maybe
+import System.FilePath
+
+
+mainGFC :: Options -> [FilePath] -> IOE ()
+mainGFC opts fs =
+ do gr <- batchCompile opts fs
+ let cnc = justModuleName (last fs)
+ if flag optStopAfterPhase opts == Compile
+ then return ()
+ else do pgf <- link opts cnc gr
+ writeOutputs opts pgf
+
+writeOutputs :: Options -> PGF -> IOE ()
+writeOutputs opts pgf =
+ sequence_ [writeOutput opts name str
+ | fmt <- flag optOutputFormats opts,
+ (name,str) <- exportPGF opts fmt pgf]
+
+writeOutput :: Options -> FilePath-> String -> IOE ()
+writeOutput opts file str =
+ do let path = case flag optOutputDir opts of
+ Nothing -> file
+ Just dir -> dir </> file
+ writeOutputFile path str
+
+writeOutputFile :: FilePath -> String -> IOE ()
+writeOutputFile outfile output = ioeIO $
+ do writeFile outfile output
+ putStrLn $ "wrote file " ++ outfile