adapt to the servant/servant-server split

This commit is contained in:
Alp Mestanogullari 2014-12-10 16:43:43 +01:00
parent d831cf944f
commit 2d2c46ea12
5 changed files with 60 additions and 59 deletions

2
Setup.hs Normal file
View file

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

52
docs.sh Normal file
View 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

View file

@ -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

View file

@ -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

View file

@ -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