aboutsummaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/CHANGELOG.md5
-rw-r--r--cli/LICENSE26
-rw-r--r--cli/app/Main.hs109
-rw-r--r--cli/cli.cabal28
4 files changed, 0 insertions, 168 deletions
diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md
deleted file mode 100644
index b733b96..0000000
--- a/cli/CHANGELOG.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Revision history for cli
-
-## 0.1.0.0 -- YYYY-mm-dd
-
-* First version. Released on an unsuspecting world.
diff --git a/cli/LICENSE b/cli/LICENSE
deleted file mode 100644
index 9128a61..0000000
--- a/cli/LICENSE
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2024, Alexander Foremny
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the
- distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/cli/app/Main.hs b/cli/app/Main.hs
deleted file mode 100644
index 12ba7c5..0000000
--- a/cli/app/Main.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-{-# LANGUAGE ApplicativeDo #-}
-{-# LANGUAGE BlockArguments #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE ViewPatterns #-}
-{-# LANGUAGE NoFieldSelectors #-}
-
-module Main where
-
-import ACMS.API.Query qualified
-import ACMS.API.REST.Collection qualified
-import Collection
-import Control.Applicative ((<**>))
-import Data.Aeson qualified as J
-import Data.Aeson.Encode.Pretty qualified as J
-import Data.ByteString.Lazy.Char8 qualified as LB
-import Data.ByteString.Lazy.UTF8 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
- | QueryCmd
-
-cmd_ :: O.Parser Cmd
-cmd_ =
- O.hsubparser . mconcat $
- [ O.command "collection" . O.info collectionCmd $
- O.progDesc "Manage content collections",
- O.command "query" . O.info queryCmd $
- O.progDesc "Manage content through queries"
- ]
-
-data CollectionCmd
- = CollectionAdd Collection
- | CollectionView CollectionItem
- | CollectionEdit CollectionItem
- | CollectionDelete CollectionItem
- | --
- CollectionList Collection
- | 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 "list" . O.info (CollectionList <$> collectionArg) $
- O.progDesc "List entities",
- 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")
-
-queryCmd :: O.Parser Cmd
-queryCmd = pure QueryCmd
-
-main :: IO ()
-main =
- O.execParser (O.info (args <**> O.helper) O.idm) >>= \case
- Args {cmd = CollectionCmd cmd} -> case cmd of
- CollectionAdd collection ->
- 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
- CollectionList collection ->
- mapM_ (LB.putStrLn . J.encodePretty)
- =<< ACMS.API.REST.Collection.list collection
- CollectionSchema collection ->
- LB.putStr . J.encodePretty @J.Value
- =<< ACMS.API.REST.Collection.schema collection
- Args {cmd = QueryCmd} ->
- LB.putStr . J.encodePretty @J.Value
- =<< ACMS.API.Query.query . LB.toString
- =<< LB.getContents
diff --git a/cli/cli.cabal b/cli/cli.cabal
deleted file mode 100644
index 3d0934e..0000000
--- a/cli/cli.cabal
+++ /dev/null
@@ -1,28 +0,0 @@
-cabal-version: 3.4
-name: cli
-version: 0.1.0.0
-license: BSD-2-Clause
-license-file: LICENSE
-maintainer: aforemny@posteo.de
-author: Alexander Foremny
-build-type: Simple
-extra-doc-files: CHANGELOG.md
-
-executable acms
- main-is: Main.hs
- hs-source-dirs: app
- other-modules:
- default-language: GHC2021
- ghc-options: -Wall
- build-depends:
- aeson,
- aeson-pretty,
- backend,
- base,
- bytestring,
- common,
- filepath,
- optparse-applicative,
- sh,
- text,
- utf8-string