getargs-derive-macros 0.1.0

Internal implementation detail of getargs-derive. Not meant for direct use; depend on getargs-derive instead.
Documentation
use super::model::RawVariant;
use crate::model::attr::{parse_string, set_once};
use syn::{LitStr, meta::ParseNestedMeta};

fn non_empty(literal: LitStr, key: &str) -> syn::Result<LitStr> {
    if literal.value().is_empty() {
        return Err(syn::Error::new(
            literal.span(),
            format!("`{key}` cannot be empty"),
        ));
    }
    Ok(literal)
}

pub(super) fn alias(meta: &ParseNestedMeta, raw: &mut RawVariant) -> syn::Result<()> {
    let literal = non_empty(parse_string(meta, "alias", "alias = \"quick\"")?, "alias")?;
    raw.aliases.push(literal);
    Ok(())
}

pub(super) fn name(meta: &ParseNestedMeta, raw: &mut RawVariant) -> syn::Result<()> {
    let literal = non_empty(parse_string(meta, "name", "name = \"fast\"")?, "name")?;
    set_once(&mut raw.name, literal, meta)
}