aboutsummaryrefslogtreecommitdiff
path: root/compiler/app/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/app/Main.hs')
-rw-r--r--compiler/app/Main.hs29
1 files changed, 13 insertions, 16 deletions
diff --git a/compiler/app/Main.hs b/compiler/app/Main.hs
index dc97b38..3e6f254 100644
--- a/compiler/app/Main.hs
+++ b/compiler/app/Main.hs
@@ -19,7 +19,7 @@
19module Main where 19module Main where
20 20
21import GHC.Generics (Generic) 21import GHC.Generics (Generic)
22import Paths_ldgallery_compiler (version, getDataFileName) 22import Paths_ldgallery_compiler (version)
23import Control.Monad (when) 23import Control.Monad (when)
24import Data.Functor ((<&>)) 24import Data.Functor ((<&>))
25import Data.Maybe (isJust) 25import Data.Maybe (isJust)
@@ -31,7 +31,7 @@ import System.Console.CmdArgs
31 31
32import Compiler 32import Compiler
33import Files (readDirectory, copyTo, remove) 33import Files (readDirectory, copyTo, remove)
34 34import ViewerDist (viewerDistPath)
35 35
36newtype ViewerConfig = ViewerConfig 36newtype ViewerConfig = ViewerConfig
37 { galleryRoot :: String 37 { galleryRoot :: String
@@ -106,10 +106,7 @@ main =
106 do 106 do
107 opts <- cmdArgs options 107 opts <- cmdArgs options
108 buildGallery opts 108 buildGallery opts
109 109 deployViewer opts
110 when (isJust $ withViewer opts) $ do
111 viewerDist <- viewerDistPath $ withViewer opts
112 deployViewer viewerDist opts
113 110
114 where 111 where
115 gallerySubdir :: String 112 gallerySubdir :: String
@@ -118,11 +115,6 @@ main =
118 viewerConfig :: ViewerConfig 115 viewerConfig :: ViewerConfig
119 viewerConfig = ViewerConfig (gallerySubdir ++ "/") 116 viewerConfig = ViewerConfig (gallerySubdir ++ "/")
120 117
121 viewerDistPath :: Maybe FilePath -> IO FilePath
122 viewerDistPath (Just "") = getDataFileName "viewer"
123 viewerDistPath (Just dist) = return dist
124 viewerDistPath Nothing = fail "No viewer distribution"
125
126 buildGallery :: Options -> IO () 118 buildGallery :: Options -> IO ()
127 buildGallery opts = 119 buildGallery opts =
128 checkDistinctPaths (inputDir opts) (outputDir opts) 120 checkDistinctPaths (inputDir opts) (outputDir opts)
@@ -146,10 +138,11 @@ main =
146 | isJust withViewer = outputDir </> gallerySubdir 138 | isJust withViewer = outputDir </> gallerySubdir
147 | otherwise = outputDir 139 | otherwise = outputDir
148 140
149 deployViewer :: FilePath -> Options -> IO () 141 deployViewer :: Options -> IO ()
150 deployViewer distPath Options{outputDir, cleanOutput} = 142 deployViewer Options{withViewer = Nothing} = pure ()
143 deployViewer Options{withViewer = Just viewerPath, outputDir, cleanOutput} =
151 when cleanOutput (cleanViewerDir outputDir) 144 when cleanOutput (cleanViewerDir outputDir)
152 >> copyViewer distPath outputDir 145 >> viewerDistOr viewerPath >>= deployTo outputDir
153 >> writeJSON (outputDir </> "config.json") viewerConfig 146 >> writeJSON (outputDir </> "config.json") viewerConfig
154 147
155 where 148 where
@@ -159,8 +152,12 @@ main =
159 <&> filter (/= gallerySubdir) 152 <&> filter (/= gallerySubdir)
160 >>= mapM_ (remove . (target </>)) 153 >>= mapM_ (remove . (target </>))
161 154
162 copyViewer :: FilePath -> FilePath -> IO () 155 viewerDistOr :: FilePath -> IO FilePath
163 copyViewer dist target = 156 viewerDistOr "" = viewerDistPath
157 viewerDistOr custom = pure custom
158
159 deployTo :: FilePath -> FilePath -> IO ()
160 deployTo target dist =
164 putStrLn "Copying viewer webapp" 161 putStrLn "Copying viewer webapp"
165 >> readDirectory dist 162 >> readDirectory dist
166 >>= copyTo target 163 >>= copyTo target