summaryrefslogtreecommitdiff
path: root/src/commands/mod.rs
diff options
context:
space:
mode:
authorseth <[email protected]>2024-04-20 02:31:40 +0000
committerGitHub <[email protected]>2024-04-19 22:31:40 -0400
commit3d07413690c551d9f034c93af85ae8da5a495e14 (patch)
tree517d2e053ebdeb9a3be0ffce6dec36cbc4ce316e /src/commands/mod.rs
parent1b92b254bc64b356f5c59657d2f0acc767bb2964 (diff)
spring cleaning (#165)
* treewide: lightly refactor everything * once_cell -> std::sync * remove build.rs we can get our target at runtime * commands::copypasta: refactor selection * drop owo_colors * reactboard: always remove author from count * commands: better handle behavior outside of guilds * ci: garnix -> gha * nix: drop flake-parts & pre-commit-hooks * nix: fix rust flags in derivation * add gha badge to readme * ci: fail when format changes are made * ci: only run on push to main * nix: fix nil script * nix: add libiconv to darwin deps * ci: disable fail-fast * nix: fix actionlint & static checks * ci: add release gates * nix: fix nil check again * ci: give release gates unique names * ci: only build static packages in docker workflow * nix: move dev outputs to subflake * fix some typos * nix: cleanup checks & dev shell * add editorconfig
Diffstat (limited to 'src/commands/mod.rs')
-rw-r--r--src/commands/mod.rs53
1 files changed, 43 insertions, 10 deletions
diff --git a/src/commands/mod.rs b/src/commands/mod.rs
index 88a47b3..e55419b 100644
--- a/src/commands/mod.rs
+++ b/src/commands/mod.rs
@@ -1,20 +1,53 @@
-use crate::Data;
-
-use eyre::Report;
-use poise::Command;
+use crate::{Data, Error};
mod general;
mod moderation;
mod optional;
-pub fn global() -> Vec<Command<Data, Report>> {
- general::to_comands()
+type Command = poise::Command<Data, Error>;
+
+#[macro_export]
+macro_rules! cmd {
+ ($module: ident, $name: ident) => {
+ $module::$name::$name()
+ };
+
+ ($module: ident, $name: ident, $func: ident) => {
+ $module::$name::$func()
+ };
+}
+
+pub fn to_vec() -> Vec<Command> {
+ vec![
+ cmd!(general, ask),
+ cmd!(general, bing),
+ cmd!(general, config),
+ cmd!(general, convert),
+ cmd!(general, random),
+ cmd!(general, version),
+ cmd!(moderation, clear_messages),
+ cmd!(optional, copypasta),
+ cmd!(optional, teawiespam),
+ cmd!(optional, uwurandom),
+ ]
}
-pub fn optional() -> Vec<Command<Data, Report>> {
- optional::to_commands()
+pub fn to_vec_global() -> Vec<Command> {
+ vec![
+ cmd!(general, ask),
+ cmd!(general, bing),
+ cmd!(general, config),
+ cmd!(general, convert),
+ cmd!(general, random),
+ cmd!(general, version),
+ cmd!(moderation, clear_messages),
+ ]
}
-pub fn moderation() -> Vec<Command<Data, Report>> {
- moderation::to_commands()
+pub fn to_vec_optional() -> Vec<Command> {
+ vec![
+ cmd!(optional, copypasta),
+ cmd!(optional, teawiespam),
+ cmd!(optional, uwurandom),
+ ]
}