1{-# LANGUAGE OverloadedStrings #-}
8import Prelude hiding (init)
9import Control.Monad.Trans (liftIO)
10import qualified Data.Map as Map
11import qualified System.Directory as Dir
13import qualified Deps.Cache as Cache
14import qualified Deps.Explorer as Explorer
15import qualified Deps.Solver as Solver
16import qualified Elm.Constraint as Con
17import qualified Elm.Package as Pkg
18import qualified Elm.Project.Json as Project
19import qualified Elm.Version as V
20import qualified Reporting.Doc as D
21import qualified Reporting.Exit as Exit
22import qualified Reporting.Exit.Init as E
23import qualified Reporting.Task as Task
24import qualified Reporting.Progress.Terminal as Terminal
31run :: () -> () -> IO ()
33 do reporter <- Terminal.create
34 exists <- Dir.doesFileExist "elm.json"
37 Task.throw (Exit.Init E.AlreadyStarted)
39 do approved <- Task.getApproval question
43 liftIO $ putStrLn "Okay, I created it. Now read that link!"
45 liftIO $ putStrLn "Okay, I did not make any changes!"
53 ,"Elm","projects","always","start","with","an",D.green "elm.json","file."
54 ,"I","can","create","them!"
57 "Now you may be wondering, what will be in this file? How do I add Elm files to\
58 \ my project? How do I see it in the browser? How will my code grow? Do I need\
59 \ more directories? What about tests? Etc."
61 ["Check","out",D.cyan (D.fromChars (D.makeLink "init"))
62 ,"for","all","the","answers!"
64 , "Knowing all that, would you like me to create an elm.json file now? [Y/n]: "
74 do registry <- Cache.optionalUpdate
77 Explorer.run registry $ Solver.run $ Solver.solve defaults
82 directs = Map.intersection solution defaults
83 indirects = Map.difference solution defaults
86 do Dir.createDirectoryIfMissing True "src"
87 Project.write "." $ Project.App $
88 Project.AppInfo V.compiler ["src"] directs indirects Map.empty Map.empty
91 Task.throw (Exit.Init (E.NoSolution (Map.keys defaults)))
94defaults :: Map.Map Pkg.Name Con.Constraint
97 [ (Pkg.core, Con.anything)
98 , (Pkg.browser, Con.anything)
99 , (Pkg.html, Con.anything)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list