fix rename

This commit is contained in:
Aiden McClelland
2021-05-25 10:39:21 -06:00
parent 33d7d095e3
commit 3ddc915522
2 changed files with 5 additions and 2 deletions

View File

@@ -74,6 +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>,
short: Option<LitStr>, short: Option<LitStr>,
long: Option<LitStr>, long: Option<LitStr>,
parse: Option<Path>, parse: Option<Path>,

View File

@@ -352,6 +352,7 @@ pub fn parse_arg_attr(attr: Attribute, arg: PatType) -> Result<ArgOptions> {
Pat::Ident(i) => Some(i.ident), Pat::Ident(i) => Some(i.ident),
_ => None, _ => None,
}, },
rename: None,
short: None, short: None,
long: None, long: None,
parse: None, parse: None,
@@ -512,13 +513,13 @@ pub fn parse_arg_attr(attr: Attribute, arg: PatType) -> Result<ArgOptions> {
} }
NestedMeta::Meta(Meta::NameValue(nv)) if nv.path.is_ident("rename") => { NestedMeta::Meta(Meta::NameValue(nv)) if nv.path.is_ident("rename") => {
if let Lit::Str(rename) = nv.lit { if let Lit::Str(rename) = nv.lit {
if opt.name.is_some() { if opt.rename.is_some() {
return Err(Error::new( return Err(Error::new(
rename.span(), rename.span(),
"duplicate argument `rename`", "duplicate argument `rename`",
)); ));
} }
opt.name = Some( opt.rename = Some(
syn::parse_str(&rename.value()) syn::parse_str(&rename.value())
.map_err(|e| Error::new(rename.span(), format!("{}", e)))?, .map_err(|e| Error::new(rename.span(), format!("{}", e)))?,
); );
@@ -600,6 +601,7 @@ 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,