options :: [OptDescr (Options -> IO Options)]
options =
[ Option
- [] ["consumer-key"]
+ "" ["consumer-key"]
(ReqArg set_consumer_key "consumer-key")
"Your Twitter API consumer key.",
Option
- [] ["consumer-secret"]
+ "" ["consumer-secret"]
(ReqArg set_consumer_secret "consumer-secret")
"Your Twitter API consumer secret.",
Option
- [] ["access-token"]
+ "" ["access-token"]
(ReqArg set_access_token "access-token")
"Your Twitter API access token.",
Option
- [] ["access-secret"]
+ "" ["access-secret"]
(ReqArg set_access_secret "access-secret")
"Your Twitter API access secret.",
Option
- ['h'] ["help"]
+ "h" ["help"]
(NoArg set_help)
"Prints this help message.",
Option
- ['n'] ["heartbeat"]
+ "n" ["heartbeat"]
(ReqArg set_heartbeat "heartbeat")
"How many seconds to wait between polling.",
Option
- ['t'] ["to"]
+ "t" ["to"]
(ReqArg set_to "email_address")
"Send tweets TO email_address.",
Option
- ['f'] ["from"]
+ "f" ["from"]
(ReqArg set_from "email_address")
"Send tweets FROM email_address.",
Option
- ['s'] ["sendmail_path"]
+ "s" ["sendmail_path"]
(ReqArg set_sendmail_path "sendmail_path")
"Use sendmail_path to send mail",
Option
- ['i'] ["ignore-replies"]
+ "i" ["ignore-replies"]
(NoArg set_ignore_replies)
"Ignore replies.",
Option
- ['I'] ["ignore-retweets"]
+ "I" ["ignore-retweets"]
(NoArg set_ignore_retweets)
"Ignore retweets.",
Option
- ['v'] ["verbose"]
+ "v" ["verbose"]
(NoArg set_verbose)
"Be verbose about stuff."
]
_ -> Nothing
set_consumer_key :: String -> Options -> IO Options
-set_consumer_key arg opts = do
+set_consumer_key arg opts =
return opts { opt_consumer_key = Just arg }
set_consumer_secret :: String -> Options -> IO Options
-set_consumer_secret arg opts = do
+set_consumer_secret arg opts =
return opts { opt_consumer_secret = Just arg }
set_access_token :: String -> Options -> IO Options
-set_access_token arg opts = do
+set_access_token arg opts =
return opts { opt_access_token = Just arg }
set_access_secret :: String -> Options -> IO Options
-set_access_secret arg opts = do
+set_access_secret arg opts =
return opts { opt_access_secret = Just arg }
set_heartbeat :: String -> Options -> IO Options
return opts { opt_verbose = True }
set_sendmail_path :: String -> Options -> IO Options
-set_sendmail_path arg opts = do
+set_sendmail_path arg opts =
return opts { opt_sendmail_path = arg }
set_to :: String -> Options -> IO Options
-set_to arg opts = do
+set_to arg opts =
return opts { opt_to = Just arg }
set_from :: String -> Options -> IO Options
-set_from arg opts = do
+set_from arg opts =
return opts { opt_from = Just arg }
-- list, one after another, on a default_options record. The end
-- result should be an Options instance with all of its members set
-- correctly.
- opts <- foldl (>>=) (return default_options) actions
-
- return opts
+ foldl (>>=) (return default_options) actions
-- | A list of parse errors relating to the heartbeat.
where
import Control.Concurrent (forkIO, threadDelay)
-import Control.Monad (forever, when)
+import Control.Monad (forever, unless, when)
import Data.Aeson (decode)
import Data.List ((\\))
import Data.Time.LocalTime (TimeZone, getCurrentTimeZone)
-import System.Exit (ExitCode(..), exitWith)
+import System.Exit (ExitCode(..), exitSuccess, exitWith)
import System.IO (hPutStrLn, stderr)
import CommandLine
replies = filter reply ss
retweets = filter retweeted ss
- good_statuses' = case (ignore_replies cfg) of
- True -> ss \\ replies
- False -> ss
+ good_statuses' = if (ignore_replies cfg)
+ then ss \\ replies
+ else ss
- good_statuses = case (ignore_retweets cfg) of
- True -> good_statuses' \\ retweets
- False -> good_statuses'
+ good_statuses = if (ignore_retweets cfg)
+ then good_statuses' \\ retweets
+ else good_statuses'
-- If there were errors parsing the command-line options,
-- print them and exit.
- when (not (null errors)) $ do
+ unless (null errors) $ do
hPutStrLn stderr (concat errors)
putStrLn help_text
exitWith (ExitFailure exit_args_parse_failed)
help <- help_set
when (help) $ do
putStrLn help_text
- exitWith ExitSuccess
+ exitSuccess
-- Get the list of usernames.
usernames <- parse_usernames
let run_twat_curried = run_twat cfg message
_ <- mapM (forkIO . run_twat_curried) usernames
- _ <- forever $ do
+ _ <- forever $
-- This thread (the one executing main) doesn't do anything,
-- but when it terminates, so do all the threads we forked.
-- As a result, we need to keep this thread on life support.