aboutsummaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/app/Main.hs29
-rw-r--r--cli/cli.cabal1
2 files changed, 20 insertions, 10 deletions
diff --git a/cli/app/Main.hs b/cli/app/Main.hs
index 1fc3119..e8d9605 100644
--- a/cli/app/Main.hs
+++ b/cli/app/Main.hs
@@ -1,16 +1,17 @@
+{-# LANGUAGE ApplicativeDo #-}
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE NoFieldSelectors #-}
-{-# LANGUAGE ApplicativeDo #-}
module Main where
import ACMS.API.REST.Collection qualified
import Control.Applicative ((<**>))
import Data.Aeson qualified as J
+import Data.Aeson.Encode.Pretty qualified as J
import Data.ByteString.Lazy qualified as LB
import Data.Text qualified as T
import Options.Applicative qualified as O
@@ -39,6 +40,8 @@ data CollectionCmd
| CollectionView CollectionItem
| CollectionEdit CollectionItem
| CollectionDelete CollectionItem
+ | --
+ CollectionSchema Collection
newtype Collection = Collection T.Text
deriving (Read)
@@ -66,13 +69,16 @@ collectionCmd :: O.Parser Cmd
collectionCmd = do
fmap CollectionCmd . O.hsubparser . mconcat $
[ O.command "add" . O.info (CollectionAdd <$> collectionNameArg) $
- O.progDesc "Add an entity"
- , O.command "view" . O.info (CollectionView <$> collectionPathArg) $
- O.progDesc "View an entity"
- , O.command "edit" . O.info (CollectionEdit <$> collectionPathArg) $
- O.progDesc "Edit an entity"
- , O.command "delete" . O.info (CollectionDelete <$> collectionPathArg) $
- O.progDesc "Delete an entity"
+ O.progDesc "Add an entity",
+ O.command "view" . O.info (CollectionView <$> collectionPathArg) $
+ O.progDesc "View an entity",
+ O.command "edit" . O.info (CollectionEdit <$> collectionPathArg) $
+ O.progDesc "Edit an entity",
+ O.command "delete" . O.info (CollectionDelete <$> collectionPathArg) $
+ O.progDesc "Delete an entity",
+ --
+ O.command "schema" . O.info (CollectionSchema <$> collectionNameArg) $
+ O.progDesc "Show the collection's schema"
]
collectionPathArg :: O.Parser CollectionItem
@@ -97,11 +103,14 @@ main =
CollectionView CollectionItem {collectionName = Collection cn, fileName} ->
print
=<< ACMS.API.REST.Collection.read cn fileName
- CollectionDelete CollectionItem {collectionName = Collection cn, fileName}->
+ CollectionDelete CollectionItem {collectionName = Collection cn, fileName} ->
print
=<< ACMS.API.REST.Collection.delete cn fileName
- CollectionEdit CollectionItem {collectionName = Collection cn, fileName}->
+ CollectionEdit CollectionItem {collectionName = Collection cn, fileName} ->
print
=<< ACMS.API.REST.Collection.update cn fileName
=<< J.throwDecode
=<< LB.getContents
+ CollectionSchema (Collection cn) ->
+ LB.putStr . J.encodePretty
+ =<< ACMS.API.REST.Collection.schema cn
diff --git a/cli/cli.cabal b/cli/cli.cabal
index d0ad909..bb98d8b 100644
--- a/cli/cli.cabal
+++ b/cli/cli.cabal
@@ -16,6 +16,7 @@ executable cli
ghc-options: -Wall
build-depends:
aeson,
+ aeson-pretty,
backend,
base,
bytestring,