import Configuration (Cfg(..))
-- | A record containing values for all available options.
-data Options = Options { opt_heartbeat :: Maybe Int,
+data Options = Options { opt_consumer_key :: Maybe String,
+ opt_consumer_secret :: Maybe String,
+ opt_access_token :: Maybe String,
+ opt_access_secret :: Maybe String,
+ opt_heartbeat :: Maybe Int,
opt_help :: Bool,
opt_ignore_replies :: Bool,
opt_ignore_retweets :: Bool,
-- | Constructs an instance of Options, with each of its members set
-- to default values.
default_options :: Options
-default_options = Options { opt_heartbeat = Just 600,
+default_options = Options { opt_access_token = Nothing,
+ opt_access_secret = Nothing,
+ opt_consumer_key = Nothing,
+ opt_consumer_secret = Nothing,
+ opt_heartbeat = Just 600,
opt_help = False,
opt_ignore_replies = False,
opt_ignore_retweets = False,
options :: [OptDescr (Options -> IO Options)]
options =
[ Option
- ['h']["help"]
+ [] ["consumer_key"]
+ (ReqArg set_consumer_key "consumer_key")
+ "Your Twitter API consumer key.",
+
+ Option
+ [] ["consumer_secret"]
+ (ReqArg set_consumer_secret "consumer_secret")
+ "Your Twitter API consumer secret.",
+
+ Option
+ [] ["access_token"]
+ (ReqArg set_access_token "access_token")
+ "Your Twitter API access token.",
+
+ Option
+ [] ["access_secret"]
+ (ReqArg set_access_secret "access_secret")
+ "Your Twitter API access secret.",
+
+ Option
+ ['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."
]
[(n,_)] -> Just n
_ -> Nothing
+set_consumer_key :: String -> Options -> IO Options
+set_consumer_key arg opts = do
+ return opts { opt_consumer_key = Just arg }
+
+set_consumer_secret :: String -> Options -> IO Options
+set_consumer_secret arg opts = do
+ return opts { opt_consumer_secret = Just arg }
+
+set_access_token :: String -> Options -> IO Options
+set_access_token arg opts = do
+ return opts { opt_access_token = Just arg }
+
+set_access_secret :: String -> Options -> IO Options
+set_access_secret arg opts = do
+ return opts { opt_access_secret = Just arg }
+
set_heartbeat :: String -> Options -> IO Options
set_heartbeat arg opts = do
let new_heartbeat = parse_int arg
-- | The usage header.
usage :: String
-usage = "Usage: twat [-n heartbeat] [-t to_address] [-f from_address] [-s path-to-sendmail] <username1> [username2, [username3]...]"
+usage = "Usage: twat --consumer_key=<key> --consumer_secret=<secret> --access_token=<key> --access_secret=<secret> [-n heartbeat] [-t to_address] [-f from_address] [-s path-to-sendmail] <username1> [username2, [username3]...]"
-- | Was the help option passed?
get_cfg :: IO Cfg
get_cfg = do
opts <- parse_options
- return Cfg { heartbeat = fromJust $ opt_heartbeat opts,
+ return Cfg { consumer_key = fromJust $ opt_consumer_key opts,
+ consumer_secret = fromJust $ opt_consumer_secret opts,
+ access_token = fromJust $ opt_access_token opts,
+ access_secret = fromJust $ opt_access_secret opts,
+ heartbeat = fromJust $ opt_heartbeat opts,
ignore_replies = opt_ignore_replies opts,
ignore_retweets = opt_ignore_retweets opts,
sendmail_path = opt_sendmail_path opts,