diff options
Diffstat (limited to 'cli/app/Main.hs')
-rw-r--r-- | cli/app/Main.hs | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/cli/app/Main.hs b/cli/app/Main.hs deleted file mode 100644 index 961f54f..0000000 --- a/cli/app/Main.hs +++ /dev/null @@ -1,92 +0,0 @@ -{-# LANGUAGE ApplicativeDo #-} -{-# LANGUAGE BlockArguments #-} -{-# LANGUAGE LambdaCase #-} -{-# LANGUAGE OverloadedStrings #-} -{-# LANGUAGE RecordWildCards #-} -{-# LANGUAGE ViewPatterns #-} -{-# LANGUAGE NoFieldSelectors #-} - -module Main where - -import Collection -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 - -newtype Args = Args - { cmd :: Cmd - } - -args :: O.Parser Args -args = Args <$> cmd_ - -data Cmd = CollectionCmd CollectionCmd - -cmd_ :: O.Parser Cmd -cmd_ = - O.hsubparser . mconcat $ - [ O.command "collection" . O.info collectionCmd $ - O.progDesc "Manage content collections" - ] - -data CollectionCmd - = CollectionAdd Collection - | CollectionView CollectionItem - | CollectionEdit CollectionItem - | CollectionDelete CollectionItem - | -- - CollectionSchema Collection - -collectionCmd :: O.Parser Cmd -collectionCmd = do - fmap CollectionCmd . O.hsubparser . mconcat $ - [ O.command "add" . O.info (CollectionAdd <$> collectionArg) $ - O.progDesc "Add an entity", - O.command "view" . O.info (CollectionView <$> collectionItemArg) $ - O.progDesc "View an entity", - O.command "edit" . O.info (CollectionEdit <$> collectionItemArg) $ - O.progDesc "Edit an entity", - O.command "delete" . O.info (CollectionDelete <$> collectionItemArg) $ - O.progDesc "Delete an entity", - -- - O.command "schema" . O.info (CollectionSchema <$> collectionArg) $ - O.progDesc "Show the collection's schema" - ] - -collectionItemArg :: O.Parser CollectionItem -collectionItemArg = - O.argument O.auto (O.metavar "COLLECTION_PATH") - -collectionArg :: O.Parser Collection -collectionArg = - Collection . T.pack <$> O.strArgument (O.metavar "COLLECTION_NAME") - -main :: IO () -main = - O.execParser (O.info (args <**> O.helper) O.idm) >>= \case - Args - { cmd = CollectionCmd cmd - } -> case cmd of - CollectionAdd collection -> do - LB.putStr . J.encodePretty - =<< ACMS.API.REST.Collection.create collection - =<< J.throwDecode - =<< LB.getContents - CollectionView collectionItem -> - LB.putStr . J.encodePretty - =<< ACMS.API.REST.Collection.read collectionItem - CollectionDelete collectionItem -> - LB.putStr . J.encodePretty - =<< ACMS.API.REST.Collection.delete collectionItem - CollectionEdit collectionItem -> - LB.putStr . J.encodePretty - =<< ACMS.API.REST.Collection.update collectionItem - =<< J.throwDecode - =<< LB.getContents - CollectionSchema collection -> - LB.putStr . J.encodePretty @J.Value - =<< ACMS.API.REST.Collection.schema collection |