{-# Language OverloadedStrings, TemplateHaskell #-}
module Client.Commands.Operator (operatorCommands) where
import Client.Commands.Arguments.Spec (optionalArg, remainingArg, simpleToken)
import Client.Commands.Docs (operDocs, cmdDoc)
import Client.Commands.TabCompletion (noNetworkTab, simpleNetworkTab)
import Client.Commands.Types
import Client.State.Network (sendMsg)
import Control.Applicative (liftA2, liftA3)
import Data.Maybe (fromMaybe, maybeToList)
import Data.Text qualified as Text
import Irc.Commands
import Irc.RawIrcMsg (rawIrcMsg)
operatorCommands :: CommandSection
operatorCommands :: CommandSection
operatorCommands = Text -> [Command] -> CommandSection
CommandSection Text
"Network operator commands"
[ forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"oper")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"user") (forall r. String -> Args r String
simpleToken String
"password"))
$(operDocs `cmdDoc` "oper")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdOper Bool -> NetworkCommand String
noNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"kill")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"client") (forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "kill")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdKill Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"kline")
(forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 (,,) (forall r. String -> Args r String
simpleToken String
"minutes") (forall r. String -> Args r String
simpleToken String
"user@host") (forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "kline")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String, String)
cmdKline Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"unkline")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"[user@]host") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "unkline")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUnkline Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"undline")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"host") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "undline")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUndline Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"unxline")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"gecos") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "unxline")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUnxline Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"unresv")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"channel|nick") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "unresv")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUnresv Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testline")
(forall r. String -> Args r String
simpleToken String
"[[nick!]user@]host")
$(operDocs `cmdDoc` "testline")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdTestline Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testkline")
(forall r. String -> Args r String
simpleToken String
"[user@]host")
$(operDocs `cmdDoc` "testkline")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdTestkline Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testgecos")
(forall r. String -> Args r String
simpleToken String
"gecos")
$(operDocs `cmdDoc` "testgecos")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdTestGecos Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testmask")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"[nick!]user@host") (forall r. String -> Args r String
remainingArg String
"[gecos]"))
$(operDocs `cmdDoc` "testmask")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdTestmask Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"masktrace")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"[nick!]user@host") (forall r. String -> Args r String
remainingArg String
"[gecos]"))
$(operDocs `cmdDoc` "masktrace")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdMasktrace Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"chantrace")
(forall r. String -> Args r String
simpleToken String
"channel")
$(operDocs `cmdDoc` "chantrace")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdChantrace Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"trace")
(forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"[server|nick]") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[location]"))))
$(operDocs `cmdDoc` "trace")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe (String, Maybe String))
cmdTrace Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"etrace")
(forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[-full|-v4|-v6|nick]"))
$(operDocs `cmdDoc` "etrace")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe String)
cmdEtrace Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"map")
(forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
$(operDocs `cmdDoc` "map")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand ()
cmdMap Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"sconnect")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"connect_to") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"[port]") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[remote]")))))
$(operDocs `cmdDoc` "sconnect")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe (String, Maybe String))
cmdSconnect Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"squit")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"server") (forall r. String -> Args r String
remainingArg String
"[reason]"))
$(operDocs `cmdDoc` "squit")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdSquit Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modload")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"[path/]module") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[remote]")))
$(operDocs `cmdDoc` "modload")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdModload Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modunload")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"module") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[remote]")))
$(operDocs `cmdDoc` "modunload")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdModunload Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modlist")
(forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"pattern") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[remote]"))))
$(operDocs `cmdDoc` "modlist")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe (String, Maybe String))
cmdModlist Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modrestart")
(forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[server]"))
$(operDocs `cmdDoc` "modrestart")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe String)
cmdModrestart Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modreload")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"module") (forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[remote]")))
$(operDocs `cmdDoc` "modreload")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdModreload Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"grant")
(forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (forall r. String -> Args r String
simpleToken String
"target") (forall r. String -> Args r String
simpleToken String
"privset"))
$(operDocs `cmdDoc` "grant")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdGrant Bool -> NetworkCommand String
simpleNetworkTab
, forall a.
NonEmpty Text
-> Args ClientState a -> Text -> CommandImpl a -> Command
Command
(forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"privs")
(forall r a. Args r a -> Args r (Maybe a)
optionalArg (forall r. String -> Args r String
simpleToken String
"[target]"))
$(operDocs `cmdDoc` "privs")
forall a b. (a -> b) -> a -> b
$ forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe String)
cmdPrivs Bool -> NetworkCommand String
simpleNetworkTab
]
cmdGrant :: NetworkCommand (String, String)
cmdGrant :: NetworkCommand (String, String)
cmdGrant NetworkState
cs ClientState
st (String
target, String
privset) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"GRANT" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String
target, String
privset]))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdPrivs :: NetworkCommand (Maybe String)
cmdPrivs :: NetworkCommand (Maybe String)
cmdPrivs NetworkState
cs ClientState
st Maybe String
mbTarget =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"PRIVS" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Maybe a -> [a]
maybeToList Maybe String
mbTarget))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdModlist :: NetworkCommand (Maybe (String, Maybe String))
cmdModlist :: NetworkCommand (Maybe (String, Maybe String))
cmdModlist NetworkState
cs ClientState
st Maybe (String, Maybe String)
args =
do let argList :: [String]
argList = case Maybe (String, Maybe String)
args of
Maybe (String, Maybe String)
Nothing -> []
Just (String
x, Maybe String
xs) -> String
x forall a. a -> [a] -> [a]
: forall a. Maybe a -> [a]
maybeToList Maybe String
xs
NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"MODLIST" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String]
argList))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdModrestart :: NetworkCommand (Maybe String)
cmdModrestart :: NetworkCommand (Maybe String)
cmdModrestart NetworkState
cs ClientState
st Maybe String
args =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"MODRESTART" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Maybe a -> [a]
maybeToList Maybe String
args))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdModload :: NetworkCommand (String, Maybe String)
cmdModload :: NetworkCommand (String, Maybe String)
cmdModload NetworkState
cs ClientState
st (String
mod_, Maybe String
remote) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"MODLOAD" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (String
mod_ forall a. a -> [a] -> [a]
: forall a. Maybe a -> [a]
maybeToList Maybe String
remote)))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdModunload :: NetworkCommand (String, Maybe String)
cmdModunload :: NetworkCommand (String, Maybe String)
cmdModunload NetworkState
cs ClientState
st (String
mod_, Maybe String
remote) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"MODUNLOAD" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (String
mod_ forall a. a -> [a] -> [a]
: forall a. Maybe a -> [a]
maybeToList Maybe String
remote)))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdModreload :: NetworkCommand (String, Maybe String)
cmdModreload :: NetworkCommand (String, Maybe String)
cmdModreload NetworkState
cs ClientState
st (String
mod_, Maybe String
remote) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"MODRELOAD" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (String
mod_ forall a. a -> [a] -> [a]
: forall a. Maybe a -> [a]
maybeToList Maybe String
remote)))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdSquit :: NetworkCommand (String, String)
cmdSquit :: NetworkCommand (String, String)
cmdSquit NetworkState
cs ClientState
st (String
server, String
reason) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"SQUIT" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String
server, String
reason]))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdSconnect :: NetworkCommand (String, Maybe (String, Maybe String))
cmdSconnect :: NetworkCommand (String, Maybe (String, Maybe String))
cmdSconnect NetworkState
cs ClientState
st (String
server, Maybe (String, Maybe String)
rest) =
do let args :: [String]
args = case Maybe (String, Maybe String)
rest of
Maybe (String, Maybe String)
Nothing -> [String
server]
Just (String
x, Maybe String
xs) -> String
server forall a. a -> [a] -> [a]
: String
x forall a. a -> [a] -> [a]
: forall a. Maybe a -> [a]
maybeToList Maybe String
xs
NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"CONNECT" (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String]
args))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdKill :: NetworkCommand (String, String)
cmdKill :: NetworkCommand (String, String)
cmdKill NetworkState
cs ClientState
st (String
client,String
rest) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Text -> RawIrcMsg
ircKill (String -> Text
Text.pack String
client) (String -> Text
Text.pack String
rest))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdKline :: NetworkCommand (String, String, String)
cmdKline :: NetworkCommand (String, String, String)
cmdKline NetworkState
cs ClientState
st (String
minutes, String
mask, String
reason) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Text -> Text -> RawIrcMsg
ircKline (String -> Text
Text.pack String
minutes) (String -> Text
Text.pack String
mask) (String -> Text
Text.pack String
reason))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdUnkline :: NetworkCommand (String, Maybe String)
cmdUnkline :: NetworkCommand (String, Maybe String)
cmdUnkline NetworkState
cs ClientState
st (String
mask, Maybe String
server) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Maybe Text -> RawIrcMsg
ircUnkline (String -> Text
Text.pack String
mask) (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdUndline :: NetworkCommand (String, Maybe String)
cmdUndline :: NetworkCommand (String, Maybe String)
cmdUndline NetworkState
cs ClientState
st (String
mask, Maybe String
server) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Maybe Text -> RawIrcMsg
ircUndline (String -> Text
Text.pack String
mask) (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdUnxline :: NetworkCommand (String, Maybe String)
cmdUnxline :: NetworkCommand (String, Maybe String)
cmdUnxline NetworkState
cs ClientState
st (String
mask, Maybe String
server) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Maybe Text -> RawIrcMsg
ircUnxline (String -> Text
Text.pack String
mask) (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdUnresv :: NetworkCommand (String, Maybe String)
cmdUnresv :: NetworkCommand (String, Maybe String)
cmdUnresv NetworkState
cs ClientState
st (String
mask, Maybe String
server) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Maybe Text -> RawIrcMsg
ircUnresv (String -> Text
Text.pack String
mask) (String -> Text
Text.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdTestline :: NetworkCommand String
cmdTestline :: NetworkCommand String
cmdTestline NetworkState
cs ClientState
st String
mask =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> RawIrcMsg
ircTestline (String -> Text
Text.pack String
mask))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdTestkline :: NetworkCommand String
cmdTestkline :: NetworkCommand String
cmdTestkline NetworkState
cs ClientState
st String
mask =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"TESTKLINE" [String -> Text
Text.pack String
mask])
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdTestGecos :: NetworkCommand String
cmdTestGecos :: NetworkCommand String
cmdTestGecos NetworkState
cs ClientState
st String
mask =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
"TESTGECOS" [String -> Text
Text.pack String
mask])
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdTestmask :: NetworkCommand (String, String)
cmdTestmask :: NetworkCommand (String, String)
cmdTestmask NetworkState
cs ClientState
st (String
mask, String
gecos) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Text -> RawIrcMsg
ircTestmask (String -> Text
Text.pack String
mask) (String -> Text
Text.pack String
gecos))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdMasktrace :: NetworkCommand (String, String)
cmdMasktrace :: NetworkCommand (String, String)
cmdMasktrace NetworkState
cs ClientState
st (String
mask, String
gecos) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Text -> RawIrcMsg
ircMasktrace (String -> Text
Text.pack String
mask) (String -> Text
Text.pack String
gecos))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdChantrace :: NetworkCommand String
cmdChantrace :: NetworkCommand String
cmdChantrace NetworkState
cs ClientState
st String
chan =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> RawIrcMsg
ircChantrace (String -> Text
Text.pack String
chan))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdEtrace :: NetworkCommand (Maybe String)
cmdEtrace :: NetworkCommand (Maybe String)
cmdEtrace NetworkState
cs ClientState
st Maybe String
arg =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> RawIrcMsg
ircEtrace (String -> Text
Text.pack (forall a. a -> Maybe a -> a
fromMaybe String
"" Maybe String
arg)))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdTrace :: NetworkCommand (Maybe (String, Maybe String))
cmdTrace :: NetworkCommand (Maybe (String, Maybe String))
cmdTrace NetworkState
cs ClientState
st Maybe (String, Maybe String)
args =
do let argsList :: [String]
argsList =
case Maybe (String, Maybe String)
args of
Maybe (String, Maybe String)
Nothing -> []
Just (String
x, Maybe String
Nothing) -> [String
x]
Just (String
x, Just String
y) -> [String
x, String
y]
NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs ([Text] -> RawIrcMsg
ircTrace (forall a b. (a -> b) -> [a] -> [b]
map String -> Text
Text.pack [String]
argsList))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdMap :: NetworkCommand ()
cmdMap :: NetworkCommand ()
cmdMap NetworkState
cs ClientState
st ()
_ =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs RawIrcMsg
ircMap
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdOper :: NetworkCommand (String, String)
cmdOper :: NetworkCommand (String, String)
cmdOper NetworkState
cs ClientState
st (String
user, String
pass) =
do NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> Text -> RawIrcMsg
ircOper (String -> Text
Text.pack String
user) (String -> Text
Text.pack String
pass))
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st