use absolute crate paths

This commit is contained in:
Aiden McClelland
2021-05-26 15:06:55 -06:00
parent 3ddc915522
commit 05dd59f24b
6 changed files with 89 additions and 100 deletions

View File

@@ -35,7 +35,7 @@ fn build_app(name: LitStr, opt: &mut Options, params: &mut [ParamType]) -> Token
return None; return None;
} }
let name = arg.name.clone().unwrap(); let name = arg.name.clone().unwrap();
let name_str = LitStr::new(&name.to_string(), name.span()); let name_str = arg.rename.clone().unwrap_or_else(|| LitStr::new(&name.to_string(), name.span()));
let help = arg.help.clone().into_iter(); let help = arg.help.clone().into_iter();
let short = arg.short.clone().into_iter(); let short = arg.short.clone().into_iter();
let long = arg.long.clone().into_iter(); let long = arg.long.clone().into_iter();
@@ -77,7 +77,7 @@ fn build_app(name: LitStr, opt: &mut Options, params: &mut [ParamType]) -> Token
}; };
Some(quote! { Some(quote! {
{ {
let mut arg = rpc_toolkit_prelude::Arg::with_name(#name_str); let mut arg = ::rpc_toolkit::command_helpers::prelude::Arg::with_name(#name_str);
#( #(
arg = arg.help(#help); arg = arg.help(#help);
)* )*
@@ -100,8 +100,8 @@ fn build_app(name: LitStr, opt: &mut Options, params: &mut [ParamType]) -> Token
let required = LitBool::new(subcommand_required, Span::call_site()); let required = LitBool::new(subcommand_required, Span::call_site());
let alias = &opt.common().aliases; let alias = &opt.common().aliases;
quote! { quote! {
pub fn build_app() -> rpc_toolkit_prelude::App<'static, 'static> { pub fn build_app() -> ::rpc_toolkit::command_helpers::prelude::App<'static, 'static> {
let mut app = rpc_toolkit_prelude::App::new(#name); let mut app = ::rpc_toolkit::command_helpers::prelude::App::new(#name);
#( #(
app = app.about(#about); app = app.about(#about);
)* )*
@@ -115,7 +115,7 @@ fn build_app(name: LitStr, opt: &mut Options, params: &mut [ParamType]) -> Token
app = app.subcommand(#subcommand::build_app()); app = app.subcommand(#subcommand::build_app());
)* )*
if #required { if #required {
app = app.setting(rpc_toolkit_prelude::AppSettings::SubcommandRequired); app = app.setting(::rpc_toolkit::command_helpers::prelude::AppSettings::SubcommandRequired);
} }
app app
} }
@@ -231,7 +231,10 @@ fn rpc_handler(
match param { match param {
ParamType::Arg(arg) => { ParamType::Arg(arg) => {
let name = arg.name.clone().unwrap(); let name = arg.name.clone().unwrap();
let rename = LitStr::new(&name.to_string(), name.span()); let rename = arg
.rename
.clone()
.unwrap_or_else(|| LitStr::new(&name.to_string(), name.span()));
let field_name = Ident::new(&format!("arg_{}", name), name.span()); let field_name = Ident::new(&format!("arg_{}", name), name.span());
let ty = arg.ty.clone(); let ty = arg.ty.clone();
param_def.push(quote! { param_def.push(quote! {
@@ -257,14 +260,14 @@ fn rpc_handler(
let param_generics = param_generics_filter.finish(); let param_generics = param_generics_filter.finish();
let (_, param_ty_generics, _) = param_generics.split_for_impl(); let (_, param_ty_generics, _) = param_generics.split_for_impl();
let param_struct_def = quote! { let param_struct_def = quote! {
#[derive(rpc_toolkit_prelude::Deserialize)] #[derive(::rpc_toolkit::command_helpers::prelude::Deserialize)]
pub struct Params#param_ty_generics { pub struct Params#param_ty_generics {
#( #(
#param_def #param_def
)* )*
#[serde(flatten)] #[serde(flatten)]
#[serde(default)] #[serde(default)]
rest: rpc_toolkit_prelude::Value, rest: ::rpc_toolkit::command_helpers::prelude::Value,
} }
}; };
let param = params.iter().map(|param| match param { let param = params.iter().map(|param| match param {
@@ -284,10 +287,10 @@ fn rpc_handler(
_ctx: #ctx_ty, _ctx: #ctx_ty,
method: &str, method: &str,
_args: Params#param_ty_generics, _args: Params#param_ty_generics,
) -> Result<rpc_toolkit_prelude::Value, rpc_toolkit_prelude::RpcError> { ) -> Result<::rpc_toolkit::command_helpers::prelude::Value, ::rpc_toolkit::command_helpers::prelude::RpcError> {
Err(rpc_toolkit_prelude::RpcError { Err(::rpc_toolkit::command_helpers::prelude::RpcError {
data: Some(method.into()), data: Some(method.into()),
..rpc_toolkit_prelude::yajrc::METHOD_NOT_FOUND_ERROR ..::rpc_toolkit::command_helpers::prelude::yajrc::METHOD_NOT_FOUND_ERROR
}) })
} }
}, },
@@ -298,7 +301,7 @@ fn rpc_handler(
} }
} else if opt.blocking.is_some() { } else if opt.blocking.is_some() {
quote! { quote! {
rpc_toolkit_prelude::spawn_blocking(move || #fn_path(#(#param),*)).await? ::rpc_toolkit::command_helpers::prelude::spawn_blocking(move || #fn_path(#(#param),*)).await?
} }
} else { } else {
quote! { quote! {
@@ -312,8 +315,8 @@ fn rpc_handler(
ctx: #ctx_ty, ctx: #ctx_ty,
method: &str, method: &str,
args: Params#param_ty_generics, args: Params#param_ty_generics,
) -> Result<rpc_toolkit_prelude::Value, rpc_toolkit_prelude::RpcError> { ) -> Result<::rpc_toolkit::command_helpers::prelude::Value, ::rpc_toolkit::command_helpers::prelude::RpcError> {
Ok(rpc_toolkit_prelude::to_value(#invocation)?) Ok(::rpc_toolkit::command_helpers::prelude::to_value(#invocation)?)
} }
} }
} }
@@ -328,7 +331,7 @@ fn rpc_handler(
} }
} else if common.blocking.is_some() { } else if common.blocking.is_some() {
quote! { quote! {
let ctx = rpc_toolkit_prelude::spawn_blocking(move || #fn_path(#(#param),*)).await?; let ctx = ::rpc_toolkit::command_helpers::prelude::spawn_blocking(move || #fn_path(#(#param),*)).await?;
} }
} else { } else {
quote! { quote! {
@@ -345,7 +348,7 @@ fn rpc_handler(
), ),
}; };
quote_spanned!{ subcommand.span() => quote_spanned!{ subcommand.span() =>
[#subcommand::NAME, rest] => #subcommand::#rpc_handler(ctx, rest, rpc_toolkit_prelude::from_value(args.rest)?).await [#subcommand::NAME, rest] => #subcommand::#rpc_handler(ctx, rest, ::rpc_toolkit::command_helpers::prelude::from_value(args.rest)?).await
} }
}); });
let subcmd_impl = quote! { let subcmd_impl = quote! {
@@ -353,9 +356,9 @@ fn rpc_handler(
#( #(
#subcmd_impl, #subcmd_impl,
)* )*
_ => Err(rpc_toolkit_prelude::RpcError { _ => Err(::rpc_toolkit::command_helpers::prelude::RpcError {
data: Some(method.into()), data: Some(method.into()),
..rpc_toolkit_prelude::yajrc::METHOD_NOT_FOUND_ERROR ..::rpc_toolkit::command_helpers::prelude::yajrc::METHOD_NOT_FOUND_ERROR
}) })
} }
}; };
@@ -368,7 +371,7 @@ fn rpc_handler(
} }
} else if self_impl.blocking { } else if self_impl.blocking {
quote_spanned! { self_impl_fn.span() => quote_spanned! { self_impl_fn.span() =>
rpc_toolkit_prelude::spawn_blocking(move || #self_impl_fn(ctx)).await? ::rpc_toolkit::command_helpers::prelude::spawn_blocking(move || #self_impl_fn(ctx)).await?
} }
} else { } else {
quote_spanned! { self_impl_fn.span() => quote_spanned! { self_impl_fn.span() =>
@@ -382,11 +385,11 @@ fn rpc_handler(
ctx: #ctx_ty, ctx: #ctx_ty,
method: &str, method: &str,
args: Params#param_ty_generics, args: Params#param_ty_generics,
) -> Result<rpc_toolkit_prelude::Value, rpc_toolkit_prelude::RpcError> { ) -> Result<::rpc_toolkit::command_helpers::prelude::Value, ::rpc_toolkit::command_helpers::prelude::RpcError> {
#cmd_preprocess #cmd_preprocess
if method.is_empty() { if method.is_empty() {
Ok(rpc_toolkit_prelude::to_value(&#self_impl)?) Ok(::rpc_toolkit::command_helpers::prelude::to_value(&#self_impl)?)
} else { } else {
#subcmd_impl #subcmd_impl
} }
@@ -401,7 +404,7 @@ fn rpc_handler(
ctx: #ctx_ty, ctx: #ctx_ty,
method: &str, method: &str,
args: Params#param_ty_generics, args: Params#param_ty_generics,
) -> Result<rpc_toolkit_prelude::Value, rpc_toolkit_prelude::RpcError> { ) -> Result<::rpc_toolkit::command_helpers::prelude::Value, ::rpc_toolkit::command_helpers::prelude::RpcError> {
#cmd_preprocess #cmd_preprocess
#subcmd_impl #subcmd_impl
@@ -430,7 +433,7 @@ fn cli_handler(
} }
let mut generics = fn_generics.clone(); let mut generics = fn_generics.clone();
generics.params.push(macro_try!(syn::parse2( generics.params.push(macro_try!(syn::parse2(
quote! { ParentParams: rpc_toolkit_prelude::Serialize } quote! { ParentParams: ::rpc_toolkit::command_helpers::prelude::Serialize }
))); )));
if generics.lt_token.is_none() { if generics.lt_token.is_none() {
generics.lt_token = Some(Default::default()); generics.lt_token = Some(Default::default());
@@ -458,7 +461,7 @@ fn cli_handler(
} }
let mut param_generics = param_generics_filter.finish(); let mut param_generics = param_generics_filter.finish();
param_generics.params.push(macro_try!(syn::parse2(quote! { param_generics.params.push(macro_try!(syn::parse2(quote! {
ParentParams: rpc_toolkit_prelude::Serialize ParentParams: ::rpc_toolkit::command_helpers::prelude::Serialize
}))); })));
if param_generics.lt_token.is_none() { if param_generics.lt_token.is_none() {
generics.lt_token = Some(Default::default()); generics.lt_token = Some(Default::default());
@@ -472,7 +475,10 @@ fn cli_handler(
match param { match param {
ParamType::Arg(arg) => { ParamType::Arg(arg) => {
let name = arg.name.clone().unwrap(); let name = arg.name.clone().unwrap();
let rename = LitStr::new(&name.to_string(), name.span()); let rename = arg
.rename
.clone()
.unwrap_or_else(|| LitStr::new(&name.to_string(), name.span()));
let field_name = Ident::new(&format!("arg_{}", name), name.span()); let field_name = Ident::new(&format!("arg_{}", name), name.span());
let ty = arg.ty.clone(); let ty = arg.ty.clone();
arg_def.push(quote! { arg_def.push(quote! {
@@ -494,7 +500,7 @@ fn cli_handler(
}) })
.map(|arg| { .map(|arg| {
let name = arg.name.clone().unwrap(); let name = arg.name.clone().unwrap();
let arg_name = LitStr::new(&name.to_string(), name.span()); let arg_name = arg.rename.clone().unwrap_or_else(|| LitStr::new(&name.to_string(), name.span()));
let field_name = Ident::new(&format!("arg_{}", name), name.span()); let field_name = Ident::new(&format!("arg_{}", name), name.span());
if arg.stdin.is_some() { if arg.stdin.is_some() {
if let Some(parse) = &arg.parse { if let Some(parse) = &arg.parse {
@@ -503,7 +509,7 @@ fn cli_handler(
} }
} else { } else {
quote! { quote! {
#field_name: rpc_toolkit_prelude::default_stdin_parser(&mut std::io::stdin(), matches)?, #field_name: ::rpc_toolkit::command_helpers::prelude::default_stdin_parser(&mut std::io::stdin(), matches)?,
} }
} }
} else if arg.check_is_present { } else if arg.check_is_present {
@@ -521,7 +527,7 @@ fn cli_handler(
} }
} else { } else {
quote! { quote! {
rpc_toolkit_prelude::default_arg_parser(arg_val, matches) ::rpc_toolkit::command_helpers::prelude::default_arg_parser(arg_val, matches)
} }
}; };
if arg.optional { if arg.optional {
@@ -547,7 +553,7 @@ fn cli_handler(
} }
}); });
let param_struct_def = quote! { let param_struct_def = quote! {
#[derive(rpc_toolkit_prelude::Serialize)] #[derive(::rpc_toolkit::command_helpers::prelude::Serialize)]
struct Params#param_ty_generics { struct Params#param_ty_generics {
#( #(
#arg_def #arg_def
@@ -566,9 +572,9 @@ fn cli_handler(
let rt_ref = if let Some(rt) = rt.as_mut() { let rt_ref = if let Some(rt) = rt.as_mut() {
&*rt &*rt
} else { } else {
rt = Some(rpc_toolkit_prelude::Runtime::new().map_err(|e| rpc_toolkit_prelude::RpcError { rt = Some(::rpc_toolkit::command_helpers::prelude::Runtime::new().map_err(|e| ::rpc_toolkit::command_helpers::prelude::RpcError {
data: Some(format!("{}", e).into()), data: Some(format!("{}", e).into()),
..rpc_toolkit_prelude::yajrc::INTERNAL_ERROR ..::rpc_toolkit::command_helpers::prelude::yajrc::INTERNAL_ERROR
})?); })?);
rt.as_ref().unwrap() rt.as_ref().unwrap()
}; };
@@ -576,20 +582,20 @@ fn cli_handler(
let display = if let Some(display) = &opt.common().display { let display = if let Some(display) = &opt.common().display {
quote! { #display } quote! { #display }
} else { } else {
quote! { rpc_toolkit_prelude::default_display } quote! { ::rpc_toolkit::command_helpers::prelude::default_display }
}; };
match opt { match opt {
Options::Leaf(opt) if matches!(opt.exec_ctx, ExecutionContext::RpcOnly(_)) => quote! { Options::Leaf(opt) if matches!(opt.exec_ctx, ExecutionContext::RpcOnly(_)) => quote! {
pub fn cli_handler#generics( pub fn cli_handler#generics(
_ctx: #ctx_ty, _ctx: #ctx_ty,
_rt: Option<rpc_toolkit_prelude::Runtime>, _rt: Option<::rpc_toolkit::command_helpers::prelude::Runtime>,
_matches: &rpc_toolkit_prelude::ArgMatches<'_>, _matches: &::rpc_toolkit::command_helpers::prelude::ArgMatches<'_>,
method: rpc_toolkit_prelude::Cow<'_, str>, method: ::rpc_toolkit::command_helpers::prelude::Cow<'_, str>,
_parent_params: ParentParams, _parent_params: ParentParams,
) -> Result<(), rpc_toolkit_prelude::RpcError> { ) -> Result<(), ::rpc_toolkit::command_helpers::prelude::RpcError> {
Err(rpc_toolkit_prelude::RpcError { Err(::rpc_toolkit::command_helpers::prelude::RpcError {
data: Some(method.into()), data: Some(method.into()),
..rpc_toolkit_prelude::yajrc::METHOD_NOT_FOUND_ERROR ..::rpc_toolkit::command_helpers::prelude::yajrc::METHOD_NOT_FOUND_ERROR
}) })
} }
}, },
@@ -607,23 +613,23 @@ fn cli_handler(
quote! { quote! {
pub fn cli_handler#generics( pub fn cli_handler#generics(
ctx: #ctx_ty, ctx: #ctx_ty,
mut rt: Option<rpc_toolkit_prelude::Runtime>, mut rt: Option<::rpc_toolkit::command_helpers::prelude::Runtime>,
matches: &rpc_toolkit_prelude::ArgMatches<'_>, matches: &::rpc_toolkit::command_helpers::prelude::ArgMatches<'_>,
method: rpc_toolkit_prelude::Cow<'_, str>, method: ::rpc_toolkit::command_helpers::prelude::Cow<'_, str>,
parent_params: ParentParams, parent_params: ParentParams,
) -> Result<(), rpc_toolkit_prelude::RpcError> { ) -> Result<(), ::rpc_toolkit::command_helpers::prelude::RpcError> {
#param_struct_def #param_struct_def
#create_rt #create_rt
#[allow(unreachable_code)] #[allow(unreachable_code)]
let return_ty = if true { let return_ty = if true {
rpc_toolkit_prelude::PhantomData ::rpc_toolkit::command_helpers::prelude::PhantomData
} else { } else {
rpc_toolkit_prelude::make_phantom(#invocation) ::rpc_toolkit::command_helpers::prelude::make_phantom(#invocation)
}; };
let res = rt_ref.block_on(rpc_toolkit_prelude::call_remote(ctx, method.as_ref(), params, return_ty))?; let res = rt_ref.block_on(::rpc_toolkit::command_helpers::prelude::call_remote(ctx, method.as_ref(), params, return_ty))?;
Ok(#display(res.result?, matches)) Ok(#display(res.result?, matches))
} }
} }
@@ -644,7 +650,7 @@ fn cli_handler(
} }
} else { } else {
quote! { quote! {
rpc_toolkit_prelude::default_display(#invocation, matches) ::rpc_toolkit::command_helpers::prelude::default_display(#invocation, matches)
} }
}; };
let rt_action = if opt.is_async { let rt_action = if opt.is_async {
@@ -657,11 +663,11 @@ fn cli_handler(
quote! { quote! {
pub fn cli_handler#generics( pub fn cli_handler#generics(
ctx: #ctx_ty, ctx: #ctx_ty,
mut rt: Option<rpc_toolkit_prelude::Runtime>, mut rt: Option<::rpc_toolkit::command_helpers::prelude::Runtime>,
matches: &rpc_toolkit_prelude::ArgMatches<'_>, matches: &::rpc_toolkit::command_helpers::prelude::ArgMatches<'_>,
_method: rpc_toolkit_prelude::Cow<'_, str>, _method: ::rpc_toolkit::command_helpers::prelude::Cow<'_, str>,
_parent_params: ParentParams _parent_params: ParentParams
) -> Result<(), rpc_toolkit_prelude::RpcError> { ) -> Result<(), ::rpc_toolkit::command_helpers::prelude::RpcError> {
#rt_action #rt_action
Ok(#display_res) Ok(#display_res)
} }
@@ -757,34 +763,34 @@ fn cli_handler(
#[allow(unreachable_code)] #[allow(unreachable_code)]
let return_ty = if true { let return_ty = if true {
rpc_toolkit_prelude::PhantomData ::rpc_toolkit::command_helpers::prelude::PhantomData
} else { } else {
let ctx_new = unreachable!(); let ctx_new = unreachable!();
rpc_toolkit_prelude::match_types(&ctx, &ctx_new); ::rpc_toolkit::command_helpers::prelude::match_types(&ctx, &ctx_new);
let ctx = ctx_new; let ctx = ctx_new;
rpc_toolkit_prelude::make_phantom(#self_impl?) ::rpc_toolkit::command_helpers::prelude::make_phantom(#self_impl?)
}; };
let res = rt_ref.block_on(rpc_toolkit_prelude::call_remote(ctx, method.as_ref(), params, return_ty))?; let res = rt_ref.block_on(::rpc_toolkit::command_helpers::prelude::call_remote(ctx, method.as_ref(), params, return_ty))?;
Ok(#display(res.result?, matches)) Ok(#display(res.result?, matches))
} }
} }
} }
_ => quote! { _ => quote! {
Err(rpc_toolkit_prelude::RpcError { Err(::rpc_toolkit::command_helpers::prelude::RpcError {
data: Some(method.into()), data: Some(method.into()),
..rpc_toolkit_prelude::yajrc::METHOD_NOT_FOUND_ERROR ..::rpc_toolkit::command_helpers::prelude::yajrc::METHOD_NOT_FOUND_ERROR
}), }),
}, },
}; };
quote! { quote! {
pub fn cli_handler#generics( pub fn cli_handler#generics(
ctx: #ctx_ty, ctx: #ctx_ty,
mut rt: Option<rpc_toolkit_prelude::Runtime>, mut rt: Option<::rpc_toolkit::command_helpers::prelude::Runtime>,
matches: &rpc_toolkit_prelude::ArgMatches<'_>, matches: &::rpc_toolkit::command_helpers::prelude::ArgMatches<'_>,
method: rpc_toolkit_prelude::Cow<'_, str>, method: ::rpc_toolkit::command_helpers::prelude::Cow<'_, str>,
parent_params: ParentParams, parent_params: ParentParams,
) -> Result<(), rpc_toolkit_prelude::RpcError> { ) -> Result<(), ::rpc_toolkit::command_helpers::prelude::RpcError> {
#param_struct_def #param_struct_def
#cmd_preprocess #cmd_preprocess
@@ -813,12 +819,11 @@ pub fn build(args: AttributeArgs, mut item: ItemFn) -> TokenStream {
let fn_vis = &item.vis; let fn_vis = &item.vis;
let fn_name = &item.sig.ident; let fn_name = &item.sig.ident;
let fn_generics = &item.sig.generics; let fn_generics = &item.sig.generics;
let command_name = opt let command_name_str = opt
.common() .common()
.rename .rename
.clone() .clone()
.unwrap_or_else(|| fn_name.clone()); .unwrap_or_else(|| LitStr::new(&fn_name.to_string(), fn_name.span()));
let command_name_str = LitStr::new(&command_name.to_string(), command_name.span());
let is_async = LitBool::new( let is_async = LitBool::new(
opt.common().is_async, opt.common().is_async,
item.sig item.sig
@@ -834,7 +839,6 @@ pub fn build(args: AttributeArgs, mut item: ItemFn) -> TokenStream {
#item #item
#fn_vis mod #fn_name { #fn_vis mod #fn_name {
use super::*; use super::*;
use rpc_toolkit::command_helpers::prelude as rpc_toolkit_prelude;
pub const NAME: &'static str = #command_name_str; pub const NAME: &'static str = #command_name_str;
pub const ASYNC: bool = #is_async; pub const ASYNC: bool = #is_async;
@@ -846,6 +850,5 @@ pub fn build(args: AttributeArgs, mut item: ItemFn) -> TokenStream {
#cli_handler #cli_handler
} }
}; };
// panic!("{}", res);
res res
} }

View File

@@ -21,7 +21,7 @@ pub struct LeafOptions {
is_async: bool, is_async: bool,
aliases: Vec<LitStr>, aliases: Vec<LitStr>,
about: Option<LitStr>, about: Option<LitStr>,
rename: Option<Ident>, rename: Option<LitStr>,
exec_ctx: ExecutionContext, exec_ctx: ExecutionContext,
display: Option<Path>, display: Option<Path>,
} }
@@ -74,7 +74,7 @@ pub struct ArgOptions {
check_is_present: bool, check_is_present: bool,
help: Option<LitStr>, help: Option<LitStr>,
name: Option<Ident>, name: Option<Ident>,
rename: Option<Ident>, rename: Option<LitStr>,
short: Option<LitStr>, short: Option<LitStr>,
long: Option<LitStr>, long: Option<LitStr>,
parse: Option<Path>, parse: Option<Path>,

View File

@@ -291,10 +291,7 @@ pub fn parse_command_attr(args: AttributeArgs) -> Result<Options> {
if opt.common().rename.is_some() { if opt.common().rename.is_some() {
return Err(Error::new(rename.span(), "duplicate argument `rename`")); return Err(Error::new(rename.span(), "duplicate argument `rename`"));
} }
opt.common().rename = Some( opt.common().rename = Some(rename);
syn::parse_str(&rename.value())
.map_err(|e| Error::new(rename.span(), format!("{}", e)))?,
);
} else { } else {
return Err(Error::new(nv.lit.span(), "`rename` must be a string")); return Err(Error::new(nv.lit.span(), "`rename` must be a string"));
} }
@@ -519,10 +516,7 @@ pub fn parse_arg_attr(attr: Attribute, arg: PatType) -> Result<ArgOptions> {
"duplicate argument `rename`", "duplicate argument `rename`",
)); ));
} }
opt.rename = Some( opt.rename = Some(rename);
syn::parse_str(&rename.value())
.map_err(|e| Error::new(rename.span(), format!("{}", e)))?,
);
} else { } else {
return Err(Error::new(nv.lit.span(), "`rename` must be a string")); return Err(Error::new(nv.lit.span(), "`rename` must be a string"));
} }
@@ -601,7 +595,6 @@ pub fn parse_arg_attr(attr: Attribute, arg: PatType) -> Result<ArgOptions> {
Meta::Path(_) => (), Meta::Path(_) => (),
Meta::NameValue(nv) => return Err(Error::new(nv.span(), "`arg` cannot be assigned to")), Meta::NameValue(nv) => return Err(Error::new(nv.span(), "`arg` cannot be assigned to")),
} }
opt.name = opt.name.or(opt.rename.clone());
if opt.name.is_none() { if opt.name.is_none() {
return Err(Error::new( return Err(Error::new(
arg_span, arg_span,

View File

@@ -15,29 +15,29 @@ pub fn build(args: RpcServerArgs) -> TokenStream {
arguments, arguments,
}); });
let ctx = args.ctx; let ctx = args.ctx;
let status_fn = args let status_fn = args.status_fn.unwrap_or_else(|| {
.status_fn syn::parse2(quote! { |_| ::rpc_toolkit::hyper::StatusCode::OK }).unwrap()
.unwrap_or_else(|| syn::parse2(quote! { |_| rpc_toolkit::hyper::StatusCode::OK }).unwrap()); });
quote! { quote! {
{ {
let ctx = #ctx; let ctx = #ctx;
let status_fn = #status_fn; let status_fn = #status_fn;
let builder = rpc_toolkit::rpc_server_helpers::make_builder(&ctx); let builder = ::rpc_toolkit::rpc_server_helpers::make_builder(&ctx);
let make_svc = rpc_toolkit::hyper::service::make_service_fn(move |_| { let make_svc = ::rpc_toolkit::hyper::service::make_service_fn(move |_| {
let ctx = ctx.clone(); let ctx = ctx.clone();
async move { async move {
Ok::<_, rpc_toolkit::hyper::Error>(rpc_toolkit::hyper::service::service_fn(move |mut req| { Ok::<_, ::rpc_toolkit::hyper::Error>(::rpc_toolkit::hyper::service::service_fn(move |mut req| {
let ctx = ctx.clone(); let ctx = ctx.clone();
async move { async move {
let rpc_req = rpc_toolkit::rpc_server_helpers::make_request(&mut req).await; let rpc_req = ::rpc_toolkit::rpc_server_helpers::make_request(&mut req).await;
rpc_toolkit::rpc_server_helpers::to_response( ::rpc_toolkit::rpc_server_helpers::to_response(
&req, &req,
match rpc_req { match rpc_req {
Ok(rpc_req) => Ok(( Ok(rpc_req) => Ok((
rpc_req.id, rpc_req.id,
#command( #command(
ctx, ctx,
rpc_toolkit::yajrc::RpcMethod::as_str(&rpc_req.method), ::rpc_toolkit::yajrc::RpcMethod::as_str(&rpc_req.method),
rpc_req.params, rpc_req.params,
) )
.await, .await,

View File

@@ -46,6 +46,3 @@ pub use crate::context::Context;
pub mod command_helpers; pub mod command_helpers;
mod context; mod context;
pub mod rpc_server_helpers; pub mod rpc_server_helpers;
#[cfg(test)]
mod test;

View File

@@ -2,14 +2,11 @@ use std::fmt::Display;
use std::str::FromStr; use std::str::FromStr;
use std::sync::Arc; use std::sync::Arc;
use clap::Arg; use rpc_toolkit::clap::Arg;
use rpc_toolkit_macro::run_cli; use rpc_toolkit::serde::{Deserialize, Serialize};
use serde::{Deserialize, Serialize}; use rpc_toolkit::url::Host;
use url::Host; use rpc_toolkit::yajrc::RpcError;
use yajrc::RpcError; use rpc_toolkit::{command, rpc_server, run_cli, Context};
pub use crate as rpc_toolkit;
use crate::{command, rpc_server, Context};
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct AppState<T, U> { pub struct AppState<T, U> {
@@ -91,8 +88,6 @@ fn dothething2<U: Serialize + for<'a> Deserialize<'a> + FromStr<Err = E>, E: Dis
async fn test() { async fn test() {
use tokio::io::AsyncWriteExt; use tokio::io::AsyncWriteExt;
use crate as rpc_toolkit;
let seed = Arc::new(ConfigSeed { let seed = Arc::new(ConfigSeed {
host: Host::parse("localhost").unwrap(), host: Host::parse("localhost").unwrap(),
port: 8000, port: 8000,
@@ -103,9 +98,10 @@ async fn test() {
.arg("test") .arg("test")
.arg("--package") .arg("--package")
.arg("rpc-toolkit") .arg("rpc-toolkit")
.arg("--lib") .arg("--test")
.arg("test")
.arg("--") .arg("--")
.arg("test::cli_test") .arg("cli_test")
.arg("--exact") .arg("--exact")
.arg("--nocapture") .arg("--nocapture")
.arg("--") .arg("--")