Skip to content

Commit

Permalink
refactor: more macros
Browse files Browse the repository at this point in the history
  • Loading branch information
null8626 committed Feb 1, 2024
1 parent f26b468 commit 69f7635
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 43 deletions.
4 changes: 2 additions & 2 deletions src/app/downloading.rs
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ impl App {
validate_hash(hasher)?;

progress_bar.finish_and_clear();
self.notify(Prefix::Copied, resolved.filename.clone());
self.notify(Prefix::Copied, &resolved.filename);
} else {
progress_bar.set_prefix(ProgressPrefix::Fetching);
progress_bar.set_message(resolved.filename.clone());
Expand Down Expand Up @@ -331,7 +331,7 @@ impl App {
}

progress_bar.finish_and_clear();
self.notify(Prefix::Downloaded, resolved.filename.clone());
self.notify(Prefix::Downloaded, &resolved.filename);
}

// succeeded, so defuse
Expand Down
79 changes: 38 additions & 41 deletions src/app/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ pub enum AddonType {
}

impl AddonType {
pub fn folder(self) -> &'static str {
pub const fn folder(self) -> &'static str {
match self {
Self::Mod => "mods",
Self::Plugin => "plugins",
Expand Down Expand Up @@ -297,52 +297,49 @@ impl App {
}

macro_rules! api_methods {
($name:ident, $t:ident) => {
pub fn $name(&'a self) -> sources::$name::$t<'a> {
($(
name:ident => $t:ident,
)*) => {$(
pub fn $name<'a>(&'a self) -> sources::$name::$t<'a> {
sources::$name::$t(&self)
}
};
)*};
}

impl<'a> App {
api_methods!(vanilla, VanillaAPI);

api_methods!(github, GithubAPI);
api_methods!(maven, MavenAPI);
api_methods!(jenkins, JenkinsAPI);

api_methods!(modrinth, ModrinthAPI);
api_methods!(curserinth, CurserinthAPI);

api_methods!(neoforge, NeoforgeAPI);
api_methods!(forge, ForgeAPI);
api_methods!(fabric, FabricAPI);
api_methods!(quilt, QuiltAPI);

api_methods!(papermc, PaperMCAPI);
api_methods!(hangar, HangarAPI);
api_methods!(purpur, PurpurAPI);
api_methods!(spigot, SpigotAPI);

api_methods!(mclogs, MCLogsAPI);

pub fn markdown(&'a self) -> crate::interop::markdown::MarkdownAPI<'a> {
crate::interop::markdown::MarkdownAPI(self)
}

pub fn packwiz(&'a mut self) -> crate::interop::packwiz::PackwizInterop<'a> {
crate::interop::packwiz::PackwizInterop(self)
}

pub fn mrpack(&'a mut self) -> crate::interop::mrpack::MRPackInterop<'a> {
crate::interop::mrpack::MRPackInterop(self)
}
macro_rules! interop_methods {
($(
name:ident => $t:ident,
)*) => {$(
pub fn $name<'a>(&'a self) -> crate::interop::$name::$t<'a> {
crate::interop::$name::$t(self)
}
)*};
}

pub fn worlds(&'a self) -> crate::interop::worlds::WorldsAPI<'a> {
crate::interop::worlds::WorldsAPI(self)
impl App {
api_methods! {
vanilla => VanillaAPI,
github => GithubAPI,
maven => MavenAPI,
jenkins => JenkinsAPI,
modrinth => ModrinthAPI,
curserinth => CurserinthAPI,
neoforge => NeoforgeAPI,
forge => ForgeAPI,
fabric => FabricAPI,
quilt => QuiltAPI,
papermc => PaperMCAPI,
hangar => HangarAPI,
purpur => PurpurAPI,
spigot => SpigotAPI,
mclogs => MCLogsAPI,
}

pub fn hooks(&'a self) -> crate::interop::hooks::HooksAPI<'a> {
crate::interop::hooks::HooksAPI(self)
interop_methods! {
markdown => MarkdownAPI,
packwiz => PackwizInterop,
mrpack => MRPackInterop,
worlds => WorldsAPI,
hooks => HooksAPI,
}
}

0 comments on commit 69f7635

Please sign in to comment.