{-# Language BlockArguments, OverloadedStrings, TemplateHaskell #-}
module Client.Commands.Operator (operatorCommands) where
import Client.Commands.Arguments.Spec (Args, optionalArg, remainingArg, simpleToken, extensionArg)
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 (Text)
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"
[ NonEmpty Text
-> Args ArgsContext (String, String)
-> Text
-> CommandImpl (String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"oper")
((String -> String -> (String, String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"user") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"password"))
$(operDocs `cmdDoc` "oper")
(CommandImpl (String, String) -> Command)
-> CommandImpl (String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, String)
-> (Bool -> NetworkCommand String) -> CommandImpl (String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdOper Bool -> NetworkCommand String
noNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, String)
-> Text
-> CommandImpl (String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"kill")
((String -> String -> (String, String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"client") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "kill")
(CommandImpl (String, String) -> Command)
-> CommandImpl (String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, String)
-> (Bool -> NetworkCommand String) -> CommandImpl (String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdKill Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext ((Maybe String, String), String, String)
-> Text
-> CommandImpl ((Maybe String, String), String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"kline")
(((Maybe String, String)
-> String -> String -> ((Maybe String, String), String, String))
-> Ap (Arg ArgsContext) (Maybe String, String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext ((Maybe String, String), String, String)
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 (,,) (String
-> (ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String)))
-> Ap (Arg ArgsContext) (Maybe String, String)
forall r a. String -> (r -> String -> Maybe (Args r a)) -> Args r a
extensionArg String
"minutes|on" ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
banLineArgs) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"user@host") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "kline")
(CommandImpl ((Maybe String, String), String, String) -> Command)
-> CommandImpl ((Maybe String, String), String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand ((Maybe String, String), String, String)
-> (Bool -> NetworkCommand String)
-> CommandImpl ((Maybe String, String), String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand (Text -> NetworkCommand ((Maybe String, String), String, String)
cmdBanLine Text
"KLINE") Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext ((Maybe String, String), String, String)
-> Text
-> CommandImpl ((Maybe String, String), String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"dline")
(((Maybe String, String)
-> String -> String -> ((Maybe String, String), String, String))
-> Ap (Arg ArgsContext) (Maybe String, String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext ((Maybe String, String), String, String)
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 (,,) (String
-> (ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String)))
-> Ap (Arg ArgsContext) (Maybe String, String)
forall r a. String -> (r -> String -> Maybe (Args r a)) -> Args r a
extensionArg String
"minutes|on" ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
banLineArgs) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"ip") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "dline")
(CommandImpl ((Maybe String, String), String, String) -> Command)
-> CommandImpl ((Maybe String, String), String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand ((Maybe String, String), String, String)
-> (Bool -> NetworkCommand String)
-> CommandImpl ((Maybe String, String), String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand (Text -> NetworkCommand ((Maybe String, String), String, String)
cmdBanLine Text
"DLINE") Bool -> NetworkCommand String
noNetworkTab
, NonEmpty Text
-> Args ArgsContext ((Maybe String, String), String, String)
-> Text
-> CommandImpl ((Maybe String, String), String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"xline")
(((Maybe String, String)
-> String -> String -> ((Maybe String, String), String, String))
-> Ap (Arg ArgsContext) (Maybe String, String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext ((Maybe String, String), String, String)
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 (,,) (String
-> (ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String)))
-> Ap (Arg ArgsContext) (Maybe String, String)
forall r a. String -> (r -> String -> Maybe (Args r a)) -> Args r a
extensionArg String
"minutes|on" ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
banLineArgs) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"gecos") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "xline")
(CommandImpl ((Maybe String, String), String, String) -> Command)
-> CommandImpl ((Maybe String, String), String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand ((Maybe String, String), String, String)
-> (Bool -> NetworkCommand String)
-> CommandImpl ((Maybe String, String), String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand (Text -> NetworkCommand ((Maybe String, String), String, String)
cmdBanLine Text
"XLINE") Bool -> NetworkCommand String
noNetworkTab
, NonEmpty Text
-> Args ArgsContext ((Maybe String, String), String, String)
-> Text
-> CommandImpl ((Maybe String, String), String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"resv")
(((Maybe String, String)
-> String -> String -> ((Maybe String, String), String, String))
-> Ap (Arg ArgsContext) (Maybe String, String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext ((Maybe String, String), String, String)
forall (f :: * -> *) a b c d.
Applicative f =>
(a -> b -> c -> d) -> f a -> f b -> f c -> f d
liftA3 (,,) (String
-> (ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String)))
-> Ap (Arg ArgsContext) (Maybe String, String)
forall r a. String -> (r -> String -> Maybe (Args r a)) -> Args r a
extensionArg String
"minutes|on" ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
banLineArgs) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"nick|channel") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"reason"))
$(operDocs `cmdDoc` "resv")
(CommandImpl ((Maybe String, String), String, String) -> Command)
-> CommandImpl ((Maybe String, String), String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand ((Maybe String, String), String, String)
-> (Bool -> NetworkCommand String)
-> CommandImpl ((Maybe String, String), String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand (Text -> NetworkCommand ((Maybe String, String), String, String)
cmdBanLine Text
"RESV") Bool -> NetworkCommand String
noNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"unkline")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[user@]host") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "unkline")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUnkline Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"undline")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"host") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "undline")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUndline Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"unxline")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"gecos") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "unxline")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUnxline Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"unresv")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"channel|nick") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[servername]")))
$(operDocs `cmdDoc` "unresv")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdUnresv Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) String
-> Text
-> CommandImpl String
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testline")
(String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[[nick!]user@]host")
$(operDocs `cmdDoc` "testline")
(CommandImpl String -> Command) -> CommandImpl String -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand String
-> (Bool -> NetworkCommand String) -> CommandImpl String
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdTestline Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) String
-> Text
-> CommandImpl String
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testkline")
(String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[user@]host")
$(operDocs `cmdDoc` "testkline")
(CommandImpl String -> Command) -> CommandImpl String -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand String
-> (Bool -> NetworkCommand String) -> CommandImpl String
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdTestkline Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) String
-> Text
-> CommandImpl String
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testgecos")
(String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"gecos")
$(operDocs `cmdDoc` "testgecos")
(CommandImpl String -> Command) -> CommandImpl String -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand String
-> (Bool -> NetworkCommand String) -> CommandImpl String
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdTestGecos Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, String)
-> Text
-> CommandImpl (String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"testmask")
((String -> String -> (String, String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[nick!]user@host") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"[gecos]"))
$(operDocs `cmdDoc` "testmask")
(CommandImpl (String, String) -> Command)
-> CommandImpl (String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, String)
-> (Bool -> NetworkCommand String) -> CommandImpl (String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdTestmask Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, String)
-> Text
-> CommandImpl (String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"masktrace")
((String -> String -> (String, String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[nick!]user@host") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"[gecos]"))
$(operDocs `cmdDoc` "masktrace")
(CommandImpl (String, String) -> Command)
-> CommandImpl (String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, String)
-> (Bool -> NetworkCommand String) -> CommandImpl (String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdMasktrace Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) String
-> Text
-> CommandImpl String
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"chantrace")
(String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"channel")
$(operDocs `cmdDoc` "chantrace")
(CommandImpl String -> Command) -> CommandImpl String -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand String
-> (Bool -> NetworkCommand String) -> CommandImpl String
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand String
cmdChantrace Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (Maybe (String, Maybe String))
-> Text
-> CommandImpl (Maybe (String, Maybe String))
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"trace")
(Args ArgsContext (String, Maybe String)
-> Args ArgsContext (Maybe (String, Maybe String))
forall r a. Args r a -> Args r (Maybe a)
optionalArg ((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[server|nick]") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[location]"))))
$(operDocs `cmdDoc` "trace")
(CommandImpl (Maybe (String, Maybe String)) -> Command)
-> CommandImpl (Maybe (String, Maybe String)) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (Maybe (String, Maybe String))
-> (Bool -> NetworkCommand String)
-> CommandImpl (Maybe (String, Maybe String))
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe (String, Maybe String))
cmdTrace Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) (Maybe String)
-> Text
-> CommandImpl (Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"etrace")
(Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[-full|-v4|-v6|nick]"))
$(operDocs `cmdDoc` "etrace")
(CommandImpl (Maybe String) -> Command)
-> CommandImpl (Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (Maybe String)
-> (Bool -> NetworkCommand String) -> CommandImpl (Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe String)
cmdEtrace Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext () -> Text -> CommandImpl () -> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"map")
(() -> Args ArgsContext ()
forall a. a -> Ap (Arg ArgsContext) a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())
$(operDocs `cmdDoc` "map")
(CommandImpl () -> Command) -> CommandImpl () -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand ()
-> (Bool -> NetworkCommand String) -> CommandImpl ()
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand ()
cmdMap Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe (String, Maybe String))
-> Text
-> CommandImpl (String, Maybe (String, Maybe String))
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"sconnect")
((String
-> Maybe (String, Maybe String)
-> (String, Maybe (String, Maybe String)))
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (Maybe (String, Maybe String))
-> Args ArgsContext (String, Maybe (String, Maybe String))
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"connect_to") (Args ArgsContext (String, Maybe String)
-> Args ArgsContext (Maybe (String, Maybe String))
forall r a. Args r a -> Args r (Maybe a)
optionalArg ((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[port]") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[remote]")))))
$(operDocs `cmdDoc` "sconnect")
(CommandImpl (String, Maybe (String, Maybe String)) -> Command)
-> CommandImpl (String, Maybe (String, Maybe String)) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe (String, Maybe String))
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe (String, Maybe String))
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe (String, Maybe String))
cmdSconnect Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, String)
-> Text
-> CommandImpl (String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"squit")
((String -> String -> (String, String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"server") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
remainingArg String
"[reason]"))
$(operDocs `cmdDoc` "squit")
(CommandImpl (String, String) -> Command)
-> CommandImpl (String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, String)
-> (Bool -> NetworkCommand String) -> CommandImpl (String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdSquit Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modload")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[path/]module") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[remote]")))
$(operDocs `cmdDoc` "modload")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdModload Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modunload")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"module") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[remote]")))
$(operDocs `cmdDoc` "modunload")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdModunload Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (Maybe (String, Maybe String))
-> Text
-> CommandImpl (Maybe (String, Maybe String))
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modlist")
(Args ArgsContext (String, Maybe String)
-> Args ArgsContext (Maybe (String, Maybe String))
forall r a. Args r a -> Args r (Maybe a)
optionalArg ((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"pattern") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[remote]"))))
$(operDocs `cmdDoc` "modlist")
(CommandImpl (Maybe (String, Maybe String)) -> Command)
-> CommandImpl (Maybe (String, Maybe String)) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (Maybe (String, Maybe String))
-> (Bool -> NetworkCommand String)
-> CommandImpl (Maybe (String, Maybe String))
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe (String, Maybe String))
cmdModlist Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) (Maybe String)
-> Text
-> CommandImpl (Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modrestart")
(Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[server]"))
$(operDocs `cmdDoc` "modrestart")
(CommandImpl (Maybe String) -> Command)
-> CommandImpl (Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (Maybe String)
-> (Bool -> NetworkCommand String) -> CommandImpl (Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (Maybe String)
cmdModrestart Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, Maybe String)
-> Text
-> CommandImpl (String, Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"modreload")
((String -> Maybe String -> (String, Maybe String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
-> Args ArgsContext (String, Maybe String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"module") (Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[remote]")))
$(operDocs `cmdDoc` "modreload")
(CommandImpl (String, Maybe String) -> Command)
-> CommandImpl (String, Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, Maybe String)
-> (Bool -> NetworkCommand String)
-> CommandImpl (String, Maybe String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, Maybe String)
cmdModreload Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Args ArgsContext (String, String)
-> Text
-> CommandImpl (String, String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"grant")
((String -> String -> (String, String))
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) String
-> Args ArgsContext (String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"target") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"privset"))
$(operDocs `cmdDoc` "grant")
(CommandImpl (String, String) -> Command)
-> CommandImpl (String, String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (String, String)
-> (Bool -> NetworkCommand String) -> CommandImpl (String, String)
forall a.
NetworkCommand a
-> (Bool -> NetworkCommand String) -> CommandImpl a
NetworkCommand NetworkCommand (String, String)
cmdGrant Bool -> NetworkCommand String
simpleNetworkTab
, NonEmpty Text
-> Ap (Arg ArgsContext) (Maybe String)
-> Text
-> CommandImpl (Maybe String)
-> Command
forall a.
NonEmpty Text
-> Args ArgsContext a -> Text -> CommandImpl a -> Command
Command
(Text -> NonEmpty Text
forall a. a -> NonEmpty a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
"privs")
(Ap (Arg ArgsContext) String -> Ap (Arg ArgsContext) (Maybe String)
forall r a. Args r a -> Args r (Maybe a)
optionalArg (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"[target]"))
$(operDocs `cmdDoc` "privs")
(CommandImpl (Maybe String) -> Command)
-> CommandImpl (Maybe String) -> Command
forall a b. (a -> b) -> a -> b
$ NetworkCommand (Maybe String)
-> (Bool -> NetworkCommand String) -> CommandImpl (Maybe String)
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String
target, String
privset]))
ClientState -> IO CommandResult
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String -> [String]
forall a. Maybe a -> [a]
maybeToList Maybe String
mbTarget))
ClientState -> IO CommandResult
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 String -> [String] -> [String]
forall a. a -> [a] -> [a]
: Maybe String -> [String]
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String]
argList))
ClientState -> IO CommandResult
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String -> [String]
forall a. Maybe a -> [a]
maybeToList Maybe String
args))
ClientState -> IO CommandResult
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (String
mod_ String -> [String] -> [String]
forall a. a -> [a] -> [a]
: Maybe String -> [String]
forall a. Maybe a -> [a]
maybeToList Maybe String
remote)))
ClientState -> IO CommandResult
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (String
mod_ String -> [String] -> [String]
forall a. a -> [a] -> [a]
: Maybe String -> [String]
forall a. Maybe a -> [a]
maybeToList Maybe String
remote)))
ClientState -> IO CommandResult
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (String
mod_ String -> [String] -> [String]
forall a. a -> [a] -> [a]
: Maybe String -> [String]
forall a. Maybe a -> [a]
maybeToList Maybe String
remote)))
ClientState -> IO CommandResult
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String
server, String
reason]))
ClientState -> IO CommandResult
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 String -> [String] -> [String]
forall a. a -> [a] -> [a]
: String
x String -> [String] -> [String]
forall a. a -> [a] -> [a]
: Maybe String -> [String]
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 (String -> Text) -> [String] -> [Text]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [String]
args))
ClientState -> IO CommandResult
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))
ClientState -> IO CommandResult
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
cmdBanLine :: Text -> NetworkCommand ((Maybe String, String), String, String)
cmdBanLine :: Text -> NetworkCommand ((Maybe String, String), String, String)
cmdBanLine Text
lineName NetworkState
cs ClientState
st ((Maybe String
server, String
duration), String
target, String
reason) = do
let
remote :: [Text]
remote = case Maybe String
server of
Just String
server' -> [Text
"ON", String -> Text
Text.pack String
server']
Maybe String
Nothing -> []
args :: [Text]
args = [String -> Text
Text.pack String
duration, String -> Text
Text.pack String
target] [Text] -> [Text] -> [Text]
forall a. [a] -> [a] -> [a]
++ [Text]
remote [Text] -> [Text] -> [Text]
forall a. [a] -> [a] -> [a]
++ [String -> Text
Text.pack String
reason]
NetworkState -> RawIrcMsg -> IO ()
sendMsg NetworkState
cs (Text -> [Text] -> RawIrcMsg
rawIrcMsg Text
lineName [Text]
args)
ClientState -> IO CommandResult
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st
banLineArgs :: ArgsContext -> String -> Maybe (Args ArgsContext (Maybe String, String))
banLineArgs :: ArgsContext
-> String -> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
banLineArgs ArgsContext
_ String
"on" = Ap (Arg ArgsContext) (Maybe String, String)
-> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
forall a. a -> Maybe a
Just ((Maybe String -> String -> (Maybe String, String))
-> Ap (Arg ArgsContext) (Maybe String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (String -> Maybe String
forall a. a -> Maybe a
Just (String -> Maybe String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"servername") (String -> Ap (Arg ArgsContext) String
forall r. String -> Args r String
simpleToken String
"minutes"))
banLineArgs ArgsContext
_ String
mins = Ap (Arg ArgsContext) (Maybe String, String)
-> Maybe (Ap (Arg ArgsContext) (Maybe String, String))
forall a. a -> Maybe a
Just ((Maybe String -> String -> (Maybe String, String))
-> Ap (Arg ArgsContext) (Maybe String)
-> Ap (Arg ArgsContext) String
-> Ap (Arg ArgsContext) (Maybe String, String)
forall a b c.
(a -> b -> c)
-> Ap (Arg ArgsContext) a
-> Ap (Arg ArgsContext) b
-> Ap (Arg ArgsContext) c
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> f a -> f b -> f c
liftA2 (,) (Maybe String -> Ap (Arg ArgsContext) (Maybe String)
forall a. a -> Ap (Arg ArgsContext) a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe String
forall a. Maybe a
Nothing) (String -> Ap (Arg ArgsContext) String
forall a. a -> Ap (Arg ArgsContext) a
forall (f :: * -> *) a. Applicative f => a -> f a
pure String
mins))
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 (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
ClientState -> IO CommandResult
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 (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
ClientState -> IO CommandResult
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 (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
ClientState -> IO CommandResult
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 (String -> Text) -> Maybe String -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe String
server))
ClientState -> IO CommandResult
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))
ClientState -> IO CommandResult
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])
ClientState -> IO CommandResult
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])
ClientState -> IO CommandResult
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))
ClientState -> IO CommandResult
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))
ClientState -> IO CommandResult
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))
ClientState -> IO CommandResult
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 (String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe String
"" Maybe String
arg)))
ClientState -> IO CommandResult
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 ((String -> Text) -> [String] -> [Text]
forall a b. (a -> b) -> [a] -> [b]
map String -> Text
Text.pack [String]
argsList))
ClientState -> IO CommandResult
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
ClientState -> IO CommandResult
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))
ClientState -> IO CommandResult
forall (m :: * -> *). Monad m => ClientState -> m CommandResult
commandSuccess ClientState
st