aboutsummaryrefslogtreecommitdiff
path: root/hsm-core/Hsm/Core/App.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hsm-core/Hsm/Core/App.hs')
-rw-r--r--hsm-core/Hsm/Core/App.hs23
1 files changed, 17 insertions, 6 deletions
diff --git a/hsm-core/Hsm/Core/App.hs b/hsm-core/Hsm/Core/App.hs
index 12849d4..88dabb2 100644
--- a/hsm-core/Hsm/Core/App.hs
+++ b/hsm-core/Hsm/Core/App.hs
@@ -1,9 +1,20 @@
+-- Provides combinators for bootstrapping applications with:
+-- - Automated command-line parsing
+-- - Help text generation
module Hsm.Core.App
- ( runApp
- ) where
+ ( bootstrapApp
+ , bootstrapAppNoEcho
+ )
+where
-import Effectful (Eff, IOE, runEff)
-import Options.Applicative (Parser, (<**>), execParser, fullDesc, helper, info, progDesc)
+import Data.Composition ((.:.))
+import Options.Applicative (Parser, execParser, fullDesc, helper, info, progDesc, (<**>))
+import System.IO.Echo (withoutInputEcho)
-runApp :: Parser o -> String -> (o -> Eff '[ IOE] a) -> IO a
-runApp parser desc app = execParser (info (parser <**> helper) $ fullDesc <> progDesc desc) >>= runEff . app
+-- Launches a console application with input echo enabled
+bootstrapApp :: Parser o -> String -> (o -> IO a) -> IO a
+bootstrapApp parser desc app = execParser (info (parser <**> helper) $ fullDesc <> progDesc desc) >>= app
+
+-- Launches an application with hidden input echo
+bootstrapAppNoEcho :: Parser o -> String -> (o -> IO a) -> IO a
+bootstrapAppNoEcho = withoutInputEcho .:. bootstrapApp