on master help sign in
Make sure files are placed properly on init
4798ce7Evan Czaplicki
ui/terminal/src/Init.hs+7−5
@@ -11,6 +11,7 @@ import Control.Monad.Trans (liftIO)
11import qualified Data.ByteString.Lazy as LBS
11import qualified Data.ByteString.Lazy as LBS
12import Data.Monoid ((<>))
12import Data.Monoid ((<>))
13import qualified Network.HTTP.Client as Client
13import qualified Network.HTTP.Client as Client
14+import qualified System.Directory as Dir
14
15
15import qualified Elm.Compiler.Version as Compiler
16import qualified Elm.Compiler.Version as Compiler
16import qualified Elm.Package as Pkg
17import qualified Elm.Package as Pkg
@@ -85,17 +86,18 @@ init flags =
85
86
86download :: String -> Task.Task ()
87download :: String -> Task.Task ()
87download projectType =
88download projectType =
88− do fetch (projectType ++ "/elm.json")
89+ do fetch projectType "elm.json" $ return ()
89− fetch (projectType ++ "/src/Main.elm")
90+ fetch projectType "src/Main.elm" $ Dir.createDirectoryIfMissing True "src"
90
91
91
92
92−fetch :: FilePath -> Task.Task ()
93+fetch :: String -> FilePath -> IO () -> Task.Task ()
93−fetch path =
94+fetch projectType path setup =
94 Http.run $
95 Http.run $
95 Http.anything
96 Http.anything
96− ("https://experiment.elm-lang.org/" ++ vsn ++ "/init/" ++ path)
97+ ("https://experiment.elm-lang.org/" ++ vsn ++ "/init/" ++ projectType ++ "/" ++ path)
97 (\request manager ->
98 (\request manager ->
98 do response <- Client.httpLbs request manager
99 do response <- Client.httpLbs request manager
100+ setup
99 Right <$> LBS.writeFile path (Client.responseBody response)
101 Right <$> LBS.writeFile path (Client.responseBody response)
100 )
102 )
101
103