diff options
author | Andrew Cady <d@jerkface.net> | 2019-07-29 20:16:37 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2019-07-29 21:04:09 -0400 |
commit | a26aa4918ce8e508a9847b2eb3ddae786aed44d6 (patch) | |
tree | a5635210d991d3d6163fd2e2bd0873db908056ed | |
parent | 53386343424dcd1ebac3740e072ae87291b7bb06 (diff) |
add some haskell
this is a "hello world" http server that runs on 8080
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | anomic.hs | 39 | ||||
-rw-r--r-- | package.yaml | 40 | ||||
-rw-r--r-- | stack.yaml | 4 | ||||
-rw-r--r-- | test/Spec.hs | 2 |
6 files changed, 90 insertions, 1 deletions
@@ -1 +1,4 @@ | |||
1 | anomic.service | 1 | anomic.service |
2 | .stack-work/ | ||
3 | anomic.cabal | ||
4 | *~ \ No newline at end of file | ||
@@ -18,7 +18,8 @@ install: | |||
18 | reload: $(SERVICE_FILE) | 18 | reload: $(SERVICE_FILE) |
19 | systemctl --user daemon-reload | 19 | systemctl --user daemon-reload |
20 | systemctl --user enable $(SERVICE_NAME) || true | 20 | systemctl --user enable $(SERVICE_NAME) || true |
21 | systemctl --user reload $(SERVICE_NAME) | 21 | systemctl --user restart $(SERVICE_NAME) |
22 | systemctl --user status $(SERVICE_NAME) | ||
22 | 23 | ||
23 | $(SERVICE_FILE): $(SERVICE_NAME).service | 24 | $(SERVICE_FILE): $(SERVICE_NAME).service |
24 | install -T -m0644 $^ $@ | 25 | install -T -m0644 $^ $@ |
diff --git a/anomic.hs b/anomic.hs new file mode 100644 index 0000000..73d45e8 --- /dev/null +++ b/anomic.hs | |||
@@ -0,0 +1,39 @@ | |||
1 | {-# LANGUAGE DataKinds #-} | ||
2 | {-# LANGUAGE NoImplicitPrelude #-} | ||
3 | {-# LANGUAGE TypeOperators #-} | ||
4 | |||
5 | module Main where | ||
6 | |||
7 | import Rebase.Prelude hiding (Handler) | ||
8 | |||
9 | import Servant | ||
10 | import Network.Wai.Handler.Warp | ||
11 | |||
12 | type API = HelloWorldApi | ||
13 | |||
14 | type HelloWorldApi = "hello" :> Get '[ PlainText] String | ||
15 | |||
16 | type HandlerS state api = ServerT api (ReaderT state (ExceptT ServantErr IO)) | ||
17 | |||
18 | type HandlerG api = HandlerS Global api | ||
19 | |||
20 | data Global = | ||
21 | Global | ||
22 | { | ||
23 | } | ||
24 | |||
25 | api :: Proxy API | ||
26 | api = Proxy | ||
27 | |||
28 | webApp :: Global -> Application | ||
29 | webApp global = | ||
30 | serve api $ hoistServer api (Handler . flip runReaderT global) server | ||
31 | |||
32 | main :: IO () | ||
33 | main = run 8080 $ webApp Global | ||
34 | |||
35 | helloWorld :: HandlerG HelloWorldApi | ||
36 | helloWorld = return "Hello, World!" | ||
37 | |||
38 | server :: HandlerG API | ||
39 | server = helloWorld | ||
diff --git a/package.yaml b/package.yaml new file mode 100644 index 0000000..002ad71 --- /dev/null +++ b/package.yaml | |||
@@ -0,0 +1,40 @@ | |||
1 | name: anomic | ||
2 | version: 0.1.0.0 | ||
3 | github: "afcady/anomic" | ||
4 | author: "Andrew Cady" | ||
5 | maintainer: "d@jerkface.net" | ||
6 | copyright: "AllRightsReserved" | ||
7 | description: A game of Nomic | ||
8 | |||
9 | dependencies: | ||
10 | - base >= 4.7 && < 5 | ||
11 | - rebase | ||
12 | - servant-server | ||
13 | |||
14 | ghc-options: -W -Wall -O2 | ||
15 | |||
16 | library: | ||
17 | source-dirs: src | ||
18 | |||
19 | executables: | ||
20 | anomic: | ||
21 | main: anomic.hs | ||
22 | source-dirs: . | ||
23 | ghc-options: | ||
24 | - -threaded | ||
25 | - -rtsopts | ||
26 | - -with-rtsopts=-N | ||
27 | dependencies: | ||
28 | - anomic | ||
29 | - warp | ||
30 | |||
31 | tests: | ||
32 | anomic-test: | ||
33 | main: Spec.hs | ||
34 | source-dirs: test | ||
35 | ghc-options: | ||
36 | - -threaded | ||
37 | - -rtsopts | ||
38 | - -with-rtsopts=-N | ||
39 | dependencies: | ||
40 | - anomic | ||
@@ -0,0 +1,4 @@ | |||
1 | resolver: lts-13.30 | ||
2 | packages: | ||
3 | - . | ||
4 | extra-deps: | ||
diff --git a/test/Spec.hs b/test/Spec.hs new file mode 100644 index 0000000..cd4753f --- /dev/null +++ b/test/Spec.hs | |||
@@ -0,0 +1,2 @@ | |||
1 | main :: IO () | ||
2 | main = putStrLn "Test suite not yet implemented" | ||