summaryrefslogtreecommitdiff
path: root/src/Trivstream/Options.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Trivstream/Options.hs')
-rw-r--r--src/Trivstream/Options.hs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/Trivstream/Options.hs b/src/Trivstream/Options.hs
new file mode 100644
index 0000000..a777942
--- /dev/null
+++ b/src/Trivstream/Options.hs
@@ -0,0 +1,37 @@
1{-# LANGUAGE TemplateHaskell, OverloadedStrings #-}
2
3module Trivstream.Options
4 ( withOptions
5 ) where
6
7
8import Trivstream.Types
9import Trivstream.Options.Utils
10import Paths_trivstream (version)
11
12
13import Options.Applicative
14
15import Control.Monad.Reader
16import Control.Monad.IO.Class
17
18
19withOptions :: MonadIO m => ReaderT Configuration a -> IO a
20withOptions f = liftIO (execParser options) >>= runReaderT f
21 where
22 options = options' `info` mconcat [ header $ concat [ "trivstream "
23 , show version
24 , " - "
25 , "A trivial client & server for streaming audio between pulseaudio and jack over udp/tcp"
26 ]
27 , footer $ concat [ "trivstream "
28 , show version
29 , " (", $(gitBranch), "@", $(gitHash), (if $(gitDirty) then "*" else ""), ")"
30 ]
31 ]
32 options' = Configuration <$> argument rCI (help "Mode of operation" <> value def <> showDefault <> metavar "MODE")
33 <*> optional ( undefined
34 )
35 <*> audioOptions
36
37 audioOptions = undefined