From 874be6e6a13b89a87012af9d295d864632ad7cd6 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Sun, 5 Oct 2025 01:02:31 -0400 Subject: Add fig-cli --- fig-cli/fig-cli.cabal | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++ fig-cli/main/Main.hs | 8 +++++++ fig-cli/src/Fig/CLI.hs | 27 +++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 fig-cli/fig-cli.cabal create mode 100644 fig-cli/main/Main.hs create mode 100644 fig-cli/src/Fig/CLI.hs (limited to 'fig-cli') diff --git a/fig-cli/fig-cli.cabal b/fig-cli/fig-cli.cabal new file mode 100644 index 0000000..625d311 --- /dev/null +++ b/fig-cli/fig-cli.cabal @@ -0,0 +1,58 @@ +cabal-version: 3.4 +name: fig-cli +version: 0.1.0.0 + +common defaults + ghc-options: -Wall + default-language: GHC2021 + default-extensions: NoImplicitPrelude PackageImports LambdaCase MultiWayIf OverloadedStrings OverloadedLists OverloadedRecordDot DuplicateRecordFields RecordWildCards NoFieldSelectors BlockArguments ViewPatterns TypeFamilies DataKinds GADTs + +common deps + build-depends: + base + , aeson + , base64 + , binary + , bytestring + , containers + , data-default-class + , directory + , errors + , filepath + , hedis + , http-types + , http-client + , http-client-tls + , lens + , megaparsec + , mtl + , network + , optparse-applicative + , process + , random + , req + , safe-exceptions + , text + , time + , tomland + , transformers + , unordered-containers + , uuid + , vector + , fig-utils + , fig-bus + +library + import: defaults + import: deps + hs-source-dirs: src + exposed-modules: + Fig.CLI + +executable fig-cli + import: defaults + import: deps + build-depends: fig-cli, optparse-applicative + hs-source-dirs: + main + main-is: Main.hs diff --git a/fig-cli/main/Main.hs b/fig-cli/main/Main.hs new file mode 100644 index 0000000..139b9b7 --- /dev/null +++ b/fig-cli/main/Main.hs @@ -0,0 +1,8 @@ +module Main where + +import Fig.Prelude + +import qualified Fig.CLI as CLI + +main :: IO () +main = CLI.main diff --git a/fig-cli/src/Fig/CLI.hs b/fig-cli/src/Fig/CLI.hs new file mode 100644 index 0000000..36df60d --- /dev/null +++ b/fig-cli/src/Fig/CLI.hs @@ -0,0 +1,27 @@ +{-# Language ApplicativeDo #-} + +module Fig.CLI where + +import Fig.Prelude + +import Options.Applicative + +import Fig.Utils.SExpr + +newtype Opts = Opts + { sexpr :: Text + } + +parseOpts :: Parser Opts +parseOpts = do + sexpr <- strArgument (metavar "SEXPR" <> help "S-expression to parse") + pure Opts{..} + +main :: IO () +main = do + opts <- execParser $ info (parseOpts <**> helper) + ( fullDesc + <> Options.Applicative.header "fig-cli - assorted tools" + ) + let sexp = parseSExpr opts.sexpr + log $ tshow (sexp, pretty <$> sexp) -- cgit v1.2.3