align-audio-0.0.0.2: src/Option.hs
module Option where
import qualified Shell.Utility.Verbosity as Verbosity
import Shell.Utility.ParseArgument (parseNumber)
import Shell.Utility.Verbosity (Verbosity)
import qualified Options.Applicative as OP
import Options.Applicative (Parser, long, short, help, metavar, value)
import Control.Applicative (pure, (<*>))
import Data.Monoid ((<>))
data T =
Cons {
verbosity :: Verbosity,
rate :: Integer,
input0, input1 :: FilePath
} deriving (Show)
parseFlags :: Parser T
parseFlags =
pure Cons
<*> OP.option (OP.eitherReader Verbosity.parse)
( value Verbosity.normal
<> short 'v'
<> long "verbose"
<> metavar "0..3"
<> help "verbosity" )
<*> OP.option
(OP.eitherReader $ parseNumber "sample rate" (0<) "positive")
( value 1000
<> short 'r'
<> long "rate"
<> metavar "RATE"
<> help "destination sample rate (default: 1000)" )
<*> OP.strArgument (metavar "SRC0")
<*> OP.strArgument (metavar "SRC1")
desc :: OP.InfoMod a
desc =
OP.fullDesc
<>
OP.progDesc "Find relative time displacement of two recordings of the same music"
info :: OP.ParserInfo T
info = OP.info (OP.helper <*> parseFlags) desc