adapt to the servant/servant-server split
This commit is contained in:
parent
d831cf944f
commit
2d2c46ea12
5 changed files with 60 additions and 59 deletions
2
Setup.hs
Normal file
2
Setup.hs
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
import Distribution.Simple
|
||||||
|
main = defaultMain
|
52
docs.sh
Normal file
52
docs.sh
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
SERVANT_DIR=/tmp/servant-docs-gh-pages
|
||||||
|
|
||||||
|
# Make a temporary clone
|
||||||
|
|
||||||
|
rm -rf $SERVANT_DIR
|
||||||
|
|
||||||
|
git clone . $SERVANT_DIR
|
||||||
|
|
||||||
|
cd $SERVANT_DIR
|
||||||
|
|
||||||
|
# Make sure to pull the latest
|
||||||
|
|
||||||
|
git remote add haskell-servant git@github.com:haskell-servant/servant-docs.git
|
||||||
|
|
||||||
|
git fetch haskell-servant
|
||||||
|
|
||||||
|
git reset --hard haskell-servant/gh-pages
|
||||||
|
|
||||||
|
# Clear everything away
|
||||||
|
|
||||||
|
git rm -rf $SERVANT_DIR/*
|
||||||
|
|
||||||
|
# Switch back and build the haddocks
|
||||||
|
|
||||||
|
cd -
|
||||||
|
|
||||||
|
cabal configure --builddir=$SERVANT_DIR
|
||||||
|
|
||||||
|
cabal haddock --hoogle --hyperlink-source --html-location='https://hackage.haskell.org/package/$pkg-$version/docs' --builddir=$SERVANT_DIR
|
||||||
|
|
||||||
|
commit_hash=$(git rev-parse HEAD)
|
||||||
|
|
||||||
|
# Move the HTML docs to the root
|
||||||
|
|
||||||
|
cd $SERVANT_DIR
|
||||||
|
|
||||||
|
rm *
|
||||||
|
rm -rf build
|
||||||
|
mv doc/html/servant-docs/* .
|
||||||
|
rm -r doc/
|
||||||
|
|
||||||
|
# Add everything
|
||||||
|
|
||||||
|
git add .
|
||||||
|
|
||||||
|
git commit -m "Built from $commit_hash"
|
||||||
|
|
||||||
|
# Push to update the pages
|
||||||
|
|
||||||
|
git push haskell-servant HEAD:gh-pages
|
||||||
|
|
||||||
|
rm -rf $SERVANT_DIR
|
|
@ -4,9 +4,10 @@
|
||||||
{-# LANGUAGE FlexibleInstances #-}
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
{-# LANGUAGE OverloadedStrings #-}
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
import Data.Aeson
|
import Data.Aeson
|
||||||
|
import Data.Proxy
|
||||||
import Data.Text
|
import Data.Text
|
||||||
import GHC.Generics
|
import GHC.Generics
|
||||||
import Servant
|
import Servant.API
|
||||||
import Servant.Docs
|
import Servant.Docs
|
||||||
|
|
||||||
-- * Example
|
-- * Example
|
||||||
|
|
|
@ -1,64 +1,10 @@
|
||||||
name: servant-docs
|
name: servant-docs
|
||||||
version: 0.2
|
version: 0.2.1
|
||||||
synopsis: generate API docs for your servant webservice
|
synopsis: generate API docs for your servant webservice
|
||||||
description:
|
description:
|
||||||
Library for generating API docs from a servant API definition.
|
Library for generating API docs from a servant API definition.
|
||||||
.
|
.
|
||||||
Runnable example below that prints API docs in markdown.
|
Runnable example <https://github.com/haskell-servant/servant-docs/blob/master/example/greet.hs here>.
|
||||||
.
|
|
||||||
> {-# LANGUAGE DataKinds #-}
|
|
||||||
> {-# LANGUAGE PolyKinds #-}
|
|
||||||
> {-# LANGUAGE TypeFamilies #-}
|
|
||||||
> {-# LANGUAGE DeriveGeneric #-}
|
|
||||||
> {-# LANGUAGE TypeOperators #-}
|
|
||||||
> {-# LANGUAGE FlexibleInstances #-}
|
|
||||||
> {-# LANGUAGE OverloadedStrings #-}
|
|
||||||
>
|
|
||||||
> import Data.Proxy
|
|
||||||
> import Data.Text
|
|
||||||
> import Servant
|
|
||||||
>
|
|
||||||
> -- our type for a Greeting message
|
|
||||||
> data Greet = Greet { _msg :: Text }
|
|
||||||
> deriving (Generic, Show)
|
|
||||||
>
|
|
||||||
> -- we get our JSON serialization for free
|
|
||||||
> instance FromJSON Greet
|
|
||||||
> instance ToJSON Greet
|
|
||||||
>
|
|
||||||
> -- we provide a sample value for the 'Greet' type
|
|
||||||
> instance ToSample Greet where
|
|
||||||
> toSample = Just g
|
|
||||||
>
|
|
||||||
> where g = Greet "Hello, haskeller!"
|
|
||||||
>
|
|
||||||
> instance ToParam (QueryParam "capital" Bool) where
|
|
||||||
> toParam _ =
|
|
||||||
> DocQueryParam "capital"
|
|
||||||
> ["true", "false"]
|
|
||||||
> "Get the greeting message in uppercase (true) or not (false). Default is false."
|
|
||||||
>
|
|
||||||
> instance ToCapture (Capture "name" Text) where
|
|
||||||
> toCapture _ = DocCapture "name" "name of the person to greet"
|
|
||||||
>
|
|
||||||
> instance ToCapture (Capture "greetid" Text) where
|
|
||||||
> toCapture _ = DocCapture "greetid" "identifier of the greet msg to remove"
|
|
||||||
>
|
|
||||||
> -- API specification
|
|
||||||
> type TestApi =
|
|
||||||
> "hello" :> Capture "name" Text :> QueryParam "capital" Bool :> Get Greet
|
|
||||||
> :<|> "greet" :> RQBody Greet :> Post Greet
|
|
||||||
> :<|> "delete" :> Capture "greetid" Text :> Delete
|
|
||||||
>
|
|
||||||
> testApi :: Proxy TestApi
|
|
||||||
> testApi = Proxy
|
|
||||||
>
|
|
||||||
> -- Generate the Documentation's ADT
|
|
||||||
> greetDocs :: API
|
|
||||||
> greetDocs = docs testApi
|
|
||||||
>
|
|
||||||
> main :: IO ()
|
|
||||||
> main = putStrLn $ markdown greetDocs
|
|
||||||
license: BSD3
|
license: BSD3
|
||||||
license-file: LICENSE
|
license-file: LICENSE
|
||||||
author: Alp Mestanogullari, Sönke Hahn, Julian K. Arni
|
author: Alp Mestanogullari, Sönke Hahn, Julian K. Arni
|
||||||
|
@ -83,7 +29,7 @@ library
|
||||||
, bytestring
|
, bytestring
|
||||||
, hashable
|
, hashable
|
||||||
, lens
|
, lens
|
||||||
, servant >= 0.2
|
, servant >= 0.2.1
|
||||||
, string-conversions
|
, string-conversions
|
||||||
, system-filepath
|
, system-filepath
|
||||||
, text
|
, text
|
||||||
|
|
|
@ -119,7 +119,7 @@ import Data.Text (Text, pack, unpack)
|
||||||
import Data.String.Conversions
|
import Data.String.Conversions
|
||||||
import GHC.Generics
|
import GHC.Generics
|
||||||
import GHC.TypeLits
|
import GHC.TypeLits
|
||||||
import Servant
|
import Servant.API
|
||||||
|
|
||||||
import qualified Data.HashMap.Strict as HM
|
import qualified Data.HashMap.Strict as HM
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue