[all] Reorganize haskell code into multiple packages
This commit is contained in:
parent
0edc241149
commit
4b8d0ee4a4
37 changed files with 368 additions and 140 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,3 +1,2 @@
|
||||||
.stack-work/
|
.stack-work/
|
||||||
forest.cabal
|
|
||||||
*~
|
*~
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Changelog for forest
|
# Changelog for forest
|
||||||
|
|
||||||
## upcoming
|
## upcoming
|
||||||
* create project
|
- create project
|
||||||
|
|
|
||||||
2
Setup.hs
2
Setup.hs
|
|
@ -1,2 +0,0 @@
|
||||||
import Distribution.Simple
|
|
||||||
main = defaultMain
|
|
||||||
1
forest-cabin/README.md
Normal file
1
forest-cabin/README.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# forest-cabin
|
||||||
52
forest-cabin/forest-cabin.cabal
Normal file
52
forest-cabin/forest-cabin.cabal
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
cabal-version: 1.12
|
||||||
|
|
||||||
|
-- This file has been generated from package.yaml by hpack version 0.31.2.
|
||||||
|
--
|
||||||
|
-- see: https://github.com/sol/hpack
|
||||||
|
--
|
||||||
|
-- hash: c619b22393d818639b183c69031b267a4ed16faeaf609a75ef1cadb9288195e1
|
||||||
|
|
||||||
|
name: forest-cabin
|
||||||
|
version: 0.1.0.0
|
||||||
|
synopsis: A forest server hosted at forest.plugh.de
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
homepage: https://github.com/Garmelon/forest#readme
|
||||||
|
bug-reports: https://github.com/Garmelon/forest/issues
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
maintainer: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
license: MIT
|
||||||
|
build-type: Simple
|
||||||
|
extra-source-files:
|
||||||
|
README.md
|
||||||
|
|
||||||
|
source-repository head
|
||||||
|
type: git
|
||||||
|
location: https://github.com/Garmelon/forest
|
||||||
|
|
||||||
|
library
|
||||||
|
other-modules:
|
||||||
|
Paths_forest_cabin
|
||||||
|
hs-source-dirs:
|
||||||
|
src
|
||||||
|
build-depends:
|
||||||
|
base >=4.7 && <5
|
||||||
|
, forest-common
|
||||||
|
, forest-server
|
||||||
|
, websockets
|
||||||
|
default-language: Haskell2010
|
||||||
|
|
||||||
|
executable forest-cabin
|
||||||
|
main-is: Main.hs
|
||||||
|
other-modules:
|
||||||
|
Paths_forest_cabin
|
||||||
|
hs-source-dirs:
|
||||||
|
app
|
||||||
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||||
|
build-depends:
|
||||||
|
base >=4.7 && <5
|
||||||
|
, forest-cabin
|
||||||
|
, forest-common
|
||||||
|
, forest-server
|
||||||
|
, websockets
|
||||||
|
default-language: Haskell2010
|
||||||
32
forest-cabin/package.yaml
Normal file
32
forest-cabin/package.yaml
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
name: forest-cabin
|
||||||
|
version: 0.1.0.0
|
||||||
|
license: MIT
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
|
||||||
|
synopsis: A forest server hosted at forest.plugh.de
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
github: Garmelon/forest
|
||||||
|
|
||||||
|
extra-source-files:
|
||||||
|
- README.md
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- base >= 4.7 && < 5
|
||||||
|
- forest-common
|
||||||
|
- forest-server
|
||||||
|
- websockets
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
|
||||||
|
executables:
|
||||||
|
forest-cabin:
|
||||||
|
source-dirs: app
|
||||||
|
main: Main.hs
|
||||||
|
ghc-options:
|
||||||
|
- -threaded
|
||||||
|
- -rtsopts
|
||||||
|
- -with-rtsopts=-N
|
||||||
|
dependencies:
|
||||||
|
- forest-cabin
|
||||||
1
forest-common/README.md
Normal file
1
forest-common/README.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# forest-common
|
||||||
44
forest-common/forest-common.cabal
Normal file
44
forest-common/forest-common.cabal
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
cabal-version: 1.12
|
||||||
|
|
||||||
|
-- This file has been generated from package.yaml by hpack version 0.31.2.
|
||||||
|
--
|
||||||
|
-- see: https://github.com/sol/hpack
|
||||||
|
--
|
||||||
|
-- hash: e59723e563cf364a74b1032409ed7a9d3ecbec3a6baa34554771cb5c1a5689d9
|
||||||
|
|
||||||
|
name: forest-common
|
||||||
|
version: 0.1.0.0
|
||||||
|
synopsis: A tree-based multi-user interaction thing
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
homepage: https://github.com/Garmelon/forest#readme
|
||||||
|
bug-reports: https://github.com/Garmelon/forest/issues
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
maintainer: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
license: MIT
|
||||||
|
build-type: Simple
|
||||||
|
extra-source-files:
|
||||||
|
README.md
|
||||||
|
|
||||||
|
source-repository head
|
||||||
|
type: git
|
||||||
|
location: https://github.com/Garmelon/forest
|
||||||
|
|
||||||
|
library
|
||||||
|
exposed-modules:
|
||||||
|
Forest.Api
|
||||||
|
Forest.Node
|
||||||
|
Forest.OrderedMap
|
||||||
|
Forest.Util
|
||||||
|
other-modules:
|
||||||
|
Paths_forest_common
|
||||||
|
hs-source-dirs:
|
||||||
|
src
|
||||||
|
build-depends:
|
||||||
|
aeson
|
||||||
|
, async
|
||||||
|
, base >=4.7 && <5
|
||||||
|
, containers
|
||||||
|
, text
|
||||||
|
, websockets
|
||||||
|
default-language: Haskell2010
|
||||||
23
forest-common/package.yaml
Normal file
23
forest-common/package.yaml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
name: forest-common
|
||||||
|
version: 0.1.0.0
|
||||||
|
license: MIT
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
|
||||||
|
synopsis: A tree-based multi-user interaction thing
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
github: Garmelon/forest
|
||||||
|
|
||||||
|
extra-source-files:
|
||||||
|
- README.md
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- base >= 4.7 && < 5
|
||||||
|
- aeson
|
||||||
|
- async
|
||||||
|
- containers
|
||||||
|
- text
|
||||||
|
- websockets
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
|
@ -1,11 +1,16 @@
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Forest.Util
|
module Forest.Util
|
||||||
( findPrev
|
(
|
||||||
|
-- * List operations
|
||||||
|
findPrev
|
||||||
, findNext
|
, findNext
|
||||||
|
-- * Monadic looping constructs
|
||||||
, whileM
|
, whileM
|
||||||
, runUntilJustM
|
, whileNothingM
|
||||||
|
-- * Multithreading helpers
|
||||||
, withThread
|
, withThread
|
||||||
|
-- * Websocket helper functions
|
||||||
, sendPacket
|
, sendPacket
|
||||||
, closeWithErrorMessage
|
, closeWithErrorMessage
|
||||||
, receivePacket
|
, receivePacket
|
||||||
|
|
@ -24,9 +29,6 @@ findPrev f as = fst <$> find (f . snd) (zip as $ tail as)
|
||||||
findNext :: (a -> Bool) -> [a] -> Maybe a
|
findNext :: (a -> Bool) -> [a] -> Maybe a
|
||||||
findNext f as = snd <$> find (f . fst) (zip as $ tail as)
|
findNext f as = snd <$> find (f . fst) (zip as $ tail as)
|
||||||
|
|
||||||
withThread :: IO () -> IO () -> IO ()
|
|
||||||
withThread thread main = withAsync thread $ const main
|
|
||||||
|
|
||||||
-- | Run a monadic action until it returns @False@ for the first time.
|
-- | Run a monadic action until it returns @False@ for the first time.
|
||||||
whileM :: Monad m => m Bool -> m ()
|
whileM :: Monad m => m Bool -> m ()
|
||||||
whileM f = do
|
whileM f = do
|
||||||
|
|
@ -36,13 +38,16 @@ whileM f = do
|
||||||
else pure ()
|
else pure ()
|
||||||
|
|
||||||
-- | Run a monadic action until it returns @Just a@ for the first time.
|
-- | Run a monadic action until it returns @Just a@ for the first time.
|
||||||
runUntilJustM :: Monad m => m (Maybe a) -> m a
|
whileNothingM :: Monad m => m (Maybe a) -> m a
|
||||||
runUntilJustM f = do
|
whileNothingM f = do
|
||||||
result <- f
|
result <- f
|
||||||
case result of
|
case result of
|
||||||
Nothing -> runUntilJustM f
|
Nothing -> whileNothingM f
|
||||||
Just a -> pure a
|
Just a -> pure a
|
||||||
|
|
||||||
|
withThread :: IO () -> IO () -> IO ()
|
||||||
|
withThread thread main = withAsync thread $ const main
|
||||||
|
|
||||||
sendPacket :: ToJSON a => WS.Connection -> a -> IO ()
|
sendPacket :: ToJSON a => WS.Connection -> a -> IO ()
|
||||||
sendPacket conn packet = WS.sendTextData conn $ encode packet
|
sendPacket conn packet = WS.sendTextData conn $ encode packet
|
||||||
|
|
||||||
1
forest-server/README.md
Normal file
1
forest-server/README.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# forest-server
|
||||||
47
forest-server/forest-server.cabal
Normal file
47
forest-server/forest-server.cabal
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
cabal-version: 1.12
|
||||||
|
|
||||||
|
-- This file has been generated from package.yaml by hpack version 0.31.2.
|
||||||
|
--
|
||||||
|
-- see: https://github.com/sol/hpack
|
||||||
|
--
|
||||||
|
-- hash: c0d366de2ff27f13dd69d751b47017143df332454ad700dd8fb5089d9837f1a8
|
||||||
|
|
||||||
|
name: forest-server
|
||||||
|
version: 0.1.0.0
|
||||||
|
synopsis: A framework for forest servers
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
homepage: https://github.com/Garmelon/forest#readme
|
||||||
|
bug-reports: https://github.com/Garmelon/forest/issues
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
maintainer: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
license: MIT
|
||||||
|
build-type: Simple
|
||||||
|
extra-source-files:
|
||||||
|
README.md
|
||||||
|
|
||||||
|
source-repository head
|
||||||
|
type: git
|
||||||
|
location: https://github.com/Garmelon/forest
|
||||||
|
|
||||||
|
library
|
||||||
|
exposed-modules:
|
||||||
|
Forest.Server
|
||||||
|
Forest.Server.Broadcast
|
||||||
|
Forest.Server.TreeModule
|
||||||
|
Forest.Server.TreeModule.Animate
|
||||||
|
Forest.Server.TreeModule.Const
|
||||||
|
Forest.Server.TreeModule.Fork
|
||||||
|
Forest.Server.TreeModule.SharedEditing
|
||||||
|
other-modules:
|
||||||
|
Paths_forest_server
|
||||||
|
hs-source-dirs:
|
||||||
|
src
|
||||||
|
build-depends:
|
||||||
|
base >=4.7 && <5
|
||||||
|
, containers
|
||||||
|
, forest-common
|
||||||
|
, text
|
||||||
|
, transformers
|
||||||
|
, websockets
|
||||||
|
default-language: Haskell2010
|
||||||
23
forest-server/package.yaml
Normal file
23
forest-server/package.yaml
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
name: forest-server
|
||||||
|
version: 0.1.0.0
|
||||||
|
license: MIT
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
|
||||||
|
synopsis: A framework for forest servers
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
github: Garmelon/forest
|
||||||
|
|
||||||
|
extra-source-files:
|
||||||
|
- README.md
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- base >= 4.7 && < 5
|
||||||
|
- containers
|
||||||
|
- forest-common
|
||||||
|
- text
|
||||||
|
- transformers
|
||||||
|
- websockets
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
|
@ -32,7 +32,7 @@ sendUpdatesThread conn nodeChan nodeA = do
|
||||||
{- Main server application that receives and processes client packets -}
|
{- Main server application that receives and processes client packets -}
|
||||||
|
|
||||||
receivePackets :: TreeModule a () => WS.Connection -> a () -> IO ()
|
receivePackets :: TreeModule a () => WS.Connection -> a () -> IO ()
|
||||||
receivePackets conn treeModule = runUntilJustM $ do
|
receivePackets conn treeModule = whileNothingM $ do
|
||||||
packet <- receivePacket conn
|
packet <- receivePacket conn
|
||||||
case packet of
|
case packet of
|
||||||
ClientEdit path text -> do
|
ClientEdit path text -> do
|
||||||
1
forest-tui/README.md
Normal file
1
forest-tui/README.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# forest-tui
|
||||||
74
forest-tui/forest-tui.cabal
Normal file
74
forest-tui/forest-tui.cabal
Normal file
|
|
@ -0,0 +1,74 @@
|
||||||
|
cabal-version: 1.12
|
||||||
|
|
||||||
|
-- This file has been generated from package.yaml by hpack version 0.31.2.
|
||||||
|
--
|
||||||
|
-- see: https://github.com/sol/hpack
|
||||||
|
--
|
||||||
|
-- hash: 9ca3a1fe555e2dceb3459b6ae920b1ed93aac76398d4909a7030d7992b79ce40
|
||||||
|
|
||||||
|
name: forest-tui
|
||||||
|
version: 0.1.0.0
|
||||||
|
synopsis: A terminal-based client for forest
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
homepage: https://github.com/Garmelon/forest#readme
|
||||||
|
bug-reports: https://github.com/Garmelon/forest/issues
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
maintainer: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
license: MIT
|
||||||
|
build-type: Simple
|
||||||
|
extra-source-files:
|
||||||
|
README.md
|
||||||
|
|
||||||
|
source-repository head
|
||||||
|
type: git
|
||||||
|
location: https://github.com/Garmelon/forest
|
||||||
|
|
||||||
|
library
|
||||||
|
exposed-modules:
|
||||||
|
Forest.Client
|
||||||
|
Forest.Client.NodeUtil
|
||||||
|
Forest.Client.Options
|
||||||
|
Forest.Client.UiState
|
||||||
|
Forest.Client.Websocket
|
||||||
|
Forest.Client.Widgets.NodeEditor
|
||||||
|
Forest.Client.Widgets.WidgetTree
|
||||||
|
other-modules:
|
||||||
|
Paths_forest_tui
|
||||||
|
hs-source-dirs:
|
||||||
|
src
|
||||||
|
build-depends:
|
||||||
|
base >=4.7 && <5
|
||||||
|
, brick
|
||||||
|
, containers
|
||||||
|
, forest-common
|
||||||
|
, optparse-applicative
|
||||||
|
, safe
|
||||||
|
, text
|
||||||
|
, text-zipper
|
||||||
|
, vty
|
||||||
|
, websockets
|
||||||
|
, wuss
|
||||||
|
default-language: Haskell2010
|
||||||
|
|
||||||
|
executable forest
|
||||||
|
main-is: Main.hs
|
||||||
|
other-modules:
|
||||||
|
Paths_forest_tui
|
||||||
|
hs-source-dirs:
|
||||||
|
app
|
||||||
|
ghc-options: -threaded -rtsopts -with-rtsopts=-N
|
||||||
|
build-depends:
|
||||||
|
base >=4.7 && <5
|
||||||
|
, brick
|
||||||
|
, containers
|
||||||
|
, forest-common
|
||||||
|
, forest-tui
|
||||||
|
, optparse-applicative
|
||||||
|
, safe
|
||||||
|
, text
|
||||||
|
, text-zipper
|
||||||
|
, vty
|
||||||
|
, websockets
|
||||||
|
, wuss
|
||||||
|
default-language: Haskell2010
|
||||||
39
forest-tui/package.yaml
Normal file
39
forest-tui/package.yaml
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
name: forest-tui
|
||||||
|
version: 0.1.0.0
|
||||||
|
license: MIT
|
||||||
|
author: Garmelon <joscha@plugh.de>
|
||||||
|
copyright: 2020 Garmelon
|
||||||
|
|
||||||
|
synopsis: A terminal-based client for forest
|
||||||
|
description: Please see the README at <https://github.com/Garmelon/forest#readme>
|
||||||
|
github: Garmelon/forest
|
||||||
|
|
||||||
|
extra-source-files:
|
||||||
|
- README.md
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- base >= 4.7 && < 5
|
||||||
|
- brick
|
||||||
|
- containers
|
||||||
|
- forest-common
|
||||||
|
- optparse-applicative
|
||||||
|
- safe
|
||||||
|
- text
|
||||||
|
- text-zipper
|
||||||
|
- vty
|
||||||
|
- websockets
|
||||||
|
- wuss
|
||||||
|
|
||||||
|
library:
|
||||||
|
source-dirs: src
|
||||||
|
|
||||||
|
executables:
|
||||||
|
forest:
|
||||||
|
source-dirs: app
|
||||||
|
main: Main.hs
|
||||||
|
ghc-options:
|
||||||
|
- -threaded
|
||||||
|
- -rtsopts
|
||||||
|
- -with-rtsopts=-N
|
||||||
|
dependencies:
|
||||||
|
- forest-tui
|
||||||
|
|
@ -11,13 +11,13 @@ import Brick.BChan
|
||||||
import Brick.Widgets.Edit
|
import Brick.Widgets.Edit
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Control.Monad.IO.Class
|
import Control.Monad.IO.Class
|
||||||
import qualified Graphics.Vty as Vty
|
import qualified Graphics.Vty as Vty
|
||||||
import qualified Network.WebSockets as WS
|
import qualified Network.WebSockets as WS
|
||||||
|
|
||||||
import Forest.Api
|
import Forest.Api
|
||||||
import Forest.Client.UiState
|
import Forest.Client.UiState
|
||||||
import Forest.Client.Websocket
|
import Forest.Client.Websocket
|
||||||
import Forest.Client.WidgetTree
|
import Forest.Client.Widgets.WidgetTree
|
||||||
import Forest.Node
|
import Forest.Node
|
||||||
import Forest.Util
|
import Forest.Util
|
||||||
|
|
||||||
|
|
@ -35,16 +35,16 @@ module Forest.Client.UiState
|
||||||
import Brick
|
import Brick
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import qualified Data.Set as Set
|
import qualified Data.Set as Set
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import qualified Graphics.Vty as Vty
|
import qualified Graphics.Vty as Vty
|
||||||
import Safe
|
import Safe
|
||||||
|
|
||||||
import Forest.Client.NodeEditor
|
|
||||||
import Forest.Client.NodeUtil
|
import Forest.Client.NodeUtil
|
||||||
import Forest.Client.WidgetTree
|
import Forest.Client.Widgets.NodeEditor
|
||||||
|
import Forest.Client.Widgets.WidgetTree
|
||||||
import Forest.Node
|
import Forest.Node
|
||||||
import qualified Forest.OrderedMap as OMap
|
import qualified Forest.OrderedMap as OMap
|
||||||
|
|
||||||
data EditorInfo n = EditorInfo
|
data EditorInfo n = EditorInfo
|
||||||
{ eiEditor :: !(NodeEditor n)
|
{ eiEditor :: !(NodeEditor n)
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Forest.Client.NodeEditor
|
module Forest.Client.Widgets.NodeEditor
|
||||||
( NodeEditor
|
( NodeEditor
|
||||||
, getCurrentText
|
, getCurrentText
|
||||||
, beginEdit
|
, beginEdit
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
module Forest.Client.WidgetTree
|
module Forest.Client.Widgets.WidgetTree
|
||||||
( WidgetTree(..)
|
( WidgetTree(..)
|
||||||
, renderWidgetTreeWith
|
, renderWidgetTreeWith
|
||||||
, renderWidgetTree
|
, renderWidgetTree
|
||||||
52
package.yaml
52
package.yaml
|
|
@ -1,52 +0,0 @@
|
||||||
name: forest
|
|
||||||
version: 0.1.0.0
|
|
||||||
license: MIT
|
|
||||||
author: "Garmelon <joscha@plugh.de>"
|
|
||||||
copyright: "2020 Garmelon"
|
|
||||||
|
|
||||||
synopsis: A tree-based multi-user interaction thing
|
|
||||||
description: Please see the README on GitHub at <https://github.com/Garmelon/forest#readme>
|
|
||||||
github: "Garmelon/forest"
|
|
||||||
|
|
||||||
extra-source-files:
|
|
||||||
- README.md
|
|
||||||
- CHANGELOG.md
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
- base >= 4.7 && < 5
|
|
||||||
- aeson
|
|
||||||
- async
|
|
||||||
- brick
|
|
||||||
- containers
|
|
||||||
- optparse-applicative
|
|
||||||
- safe
|
|
||||||
- text
|
|
||||||
- text-zipper
|
|
||||||
- transformers
|
|
||||||
- vty
|
|
||||||
- websockets
|
|
||||||
- wuss
|
|
||||||
|
|
||||||
library:
|
|
||||||
source-dirs: src
|
|
||||||
|
|
||||||
executables:
|
|
||||||
forest-server:
|
|
||||||
main: Main.hs
|
|
||||||
source-dirs: server
|
|
||||||
ghc-options:
|
|
||||||
- -threaded
|
|
||||||
- -rtsopts
|
|
||||||
- -with-rtsopts=-N
|
|
||||||
dependencies:
|
|
||||||
- forest
|
|
||||||
|
|
||||||
forest-client:
|
|
||||||
main: Main.hs
|
|
||||||
source-dirs: client
|
|
||||||
ghc-options:
|
|
||||||
- -threaded
|
|
||||||
- -rtsopts
|
|
||||||
- -with-rtsopts=-N
|
|
||||||
dependencies:
|
|
||||||
- forest
|
|
||||||
68
stack.yaml
68
stack.yaml
|
|
@ -1,66 +1,6 @@
|
||||||
# This file was automatically generated by 'stack init'
|
|
||||||
#
|
|
||||||
# Some commonly used options have been documented as comments in this file.
|
|
||||||
# For advanced use and comprehensive documentation of the format, please see:
|
|
||||||
# https://docs.haskellstack.org/en/stable/yaml_configuration/
|
|
||||||
|
|
||||||
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
|
|
||||||
# A snapshot resolver dictates the compiler version and the set of packages
|
|
||||||
# to be used for project dependencies. For example:
|
|
||||||
#
|
|
||||||
# resolver: lts-3.5
|
|
||||||
# resolver: nightly-2015-09-21
|
|
||||||
# resolver: ghc-7.10.2
|
|
||||||
#
|
|
||||||
# The location of a snapshot can be provided as a file or url. Stack assumes
|
|
||||||
# a snapshot provided as a file might change, whereas a url resource does not.
|
|
||||||
#
|
|
||||||
# resolver: ./custom-snapshot.yaml
|
|
||||||
# resolver: https://example.com/snapshots/2018-01-01.yaml
|
|
||||||
resolver: lts-15.1
|
resolver: lts-15.1
|
||||||
|
|
||||||
# User packages to be built.
|
|
||||||
# Various formats can be used as shown in the example below.
|
|
||||||
#
|
|
||||||
# packages:
|
|
||||||
# - some-directory
|
|
||||||
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
|
|
||||||
# subdirs:
|
|
||||||
# - auto-update
|
|
||||||
# - wai
|
|
||||||
packages:
|
packages:
|
||||||
- .
|
- forest-cabin
|
||||||
# Dependency packages to be pulled from upstream that are not in the resolver.
|
- forest-common
|
||||||
# These entries can reference officially published versions as well as
|
- forest-server
|
||||||
# forks / in-progress versions pinned to a git hash. For example:
|
- forest-tui
|
||||||
#
|
|
||||||
# extra-deps:
|
|
||||||
# - acme-missiles-0.3
|
|
||||||
# - git: https://github.com/commercialhaskell/stack.git
|
|
||||||
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
|
|
||||||
#
|
|
||||||
# extra-deps: []
|
|
||||||
|
|
||||||
# Override default flag values for local packages and extra-deps
|
|
||||||
# flags: {}
|
|
||||||
|
|
||||||
# Extra package databases containing global packages
|
|
||||||
# extra-package-dbs: []
|
|
||||||
|
|
||||||
# Control whether we use the GHC we find on the path
|
|
||||||
# system-ghc: true
|
|
||||||
#
|
|
||||||
# Require a specific version of stack, using version ranges
|
|
||||||
# require-stack-version: -any # Default
|
|
||||||
# require-stack-version: ">=2.1"
|
|
||||||
#
|
|
||||||
# Override the architecture used by stack, especially useful on Windows
|
|
||||||
# arch: i386
|
|
||||||
# arch: x86_64
|
|
||||||
#
|
|
||||||
# Extra directories used by stack for building
|
|
||||||
# extra-include-dirs: [/path/to/dir]
|
|
||||||
# extra-lib-dirs: [/path/to/dir]
|
|
||||||
#
|
|
||||||
# Allow a newer minor version of GHC than the snapshot specifies
|
|
||||||
# compiler-check: newer-minor
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue