{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
module Main (main) where
--------------------------------------------------------------------------------
import Control.Applicative ((<$>), (<*>), (<**>), pure)
import Data.Monoid (mconcat, mempty)
--------------------------------------------------------------------------------
import qualified Options.Applicative as Optparse
--------------------------------------------------------------------------------
import qualified Enqueue
import qualified MusicBrainz.Messaging as Messaging
--------------------------------------------------------------------------------
main :: IO ()
main = Optparse.execParser parser >>= Enqueue.run
where
parser =
Optparse.info
(Enqueue.Options <$> Optparse.subparser (mconcat commands)
<*> Messaging.rabbitOptparse
<**> Optparse.helper)
mempty
commands = [ Optparse.command "retry" $
Optparse.info (Enqueue.Retry <$> Optparse.subparser (mconcat retryCommand)
<**> Optparse.helper)
(Optparse.progDesc "Retry sending failed or unroutable emails")
]
retryCommand = [ Optparse.command "unroutable" $
Optparse.info (pure [Enqueue.Unroutable] <**> Optparse.helper)
(Optparse.progDesc "Retry all unroutable emails")
, Optparse.command "invalid" $
Optparse.info (pure [Enqueue.Invalid] <**> Optparse.helper)
(Optparse.progDesc "Retry all invalid emails")
, Optparse.command "everything" $
Optparse.info (pure [Enqueue.Invalid, Enqueue.Unroutable]
<**> Optparse.helper)
(Optparse.progDesc "Retry all invalid or unroutable emails")
]