Skip to content

Commit 807889d

Browse files
committed
cleanup codegen
1 parent dee96ad commit 807889d

22 files changed

Lines changed: 5359 additions & 4963 deletions

riven/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,4 @@ serde = { optional = true, version = "1.0.85", features = [ "derive" ] }
131131
serde_derive = { optional = true, version = "1.0.85" }
132132
serde_json = { optional = true, version = "1.0.1" }
133133
syn = { optional = true, version = "2.0.96" }
134-
tokio = { optional = true, version = "1.20.0", default-features = false, features = [ "fs", "sync" ] }
134+
tokio = { optional = true, version = "1.20.0", default-features = false, features = [ "rt", "sync" ] }

riven/build/autogen/endpoints.rs

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
use heck::{ToPascalCase, ToSnakeCase};
2+
use itertools::Itertools;
3+
use proc_macro2::Span;
4+
use quote::quote;
5+
use syn::{parse_quote, File, Ident};
6+
7+
use crate::autogen::spec::Spec;
8+
9+
pub fn endpoints(spec: &Spec) -> File {
10+
let endpoint_groups = spec
11+
.paths
12+
.values()
13+
.into_group_map_by(|path| path.x_endpoint.as_deref().unwrap());
14+
15+
let impl_riot_api = {
16+
let methods = endpoint_groups.keys().map(|&endpoint| {
17+
let method = Ident::new(&endpoint.to_snake_case(), Span::call_site());
18+
let ty = Ident::new(&endpoint.to_pascal_case(), Span::call_site());
19+
let doc0 = format!(
20+
"Returns a handle for accessing [`{}`](crate::endpoints::{}) endpoints.",
21+
endpoint, ty
22+
);
23+
let doc1 = format!(
24+
"<a href=\"https://developer.riotgames.com/apis#{0}\" target=\"_blank\">`{0}`</a>",
25+
endpoint
26+
);
27+
quote! {
28+
#[doc = #doc0]
29+
///
30+
/// # Riot Developer API Reference
31+
#[doc = #doc1]
32+
///
33+
/// Note: this method is automatically generated.
34+
#[inline]
35+
pub fn #method(&self) -> #ty<'_> {
36+
#ty { base: self }
37+
}
38+
}
39+
});
40+
41+
quote! {
42+
impl RiotApi {
43+
#( #methods )*
44+
}
45+
}
46+
};
47+
48+
parse_quote! {
49+
use std::future::Future;
50+
use std::vec::Vec;
51+
52+
#[cfg(feature="metrics")]
53+
use crate::metrics;
54+
55+
#[cfg(feature="tracing")]
56+
use tracing::Instrument;
57+
use reqwest::Method;
58+
59+
use crate::Result;
60+
use crate::consts::{ RegionalRoute, PlatformRoute, ValPlatformRoute };
61+
use crate::riot_api::RiotApi;
62+
63+
#impl_riot_api
64+
}
65+
}

riven/build/autogen/meta.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use syn::{parse_quote, File};
22

3-
use super::spec::Spec;
3+
use crate::autogen::spec::Spec;
44

55
pub fn meta(spec: &Spec) -> File {
66
let rows = spec

0 commit comments

Comments
 (0)