use proc_macro2::TokenStream;
use quote::quote;
use syn::Ident;
pub(super) fn remote_methods(name: &Ident) -> TokenStream {
quote! {
pub fn set_remote(source: impl ::dynamic_config::RemoteSource) {
Self::dynamic_config_remote().set(source);
}
pub fn refresh_remote() -> ::core::result::Result<(), ::dynamic_config::Error> {
Self::dynamic_config_remote().refresh()
}
pub fn apply_remote(
document: ::dynamic_config::Fetched,
) -> ::core::result::Result<(), ::dynamic_config::Error> {
Self::dynamic_config_remote().install(document);
match Self::dynamic_config_builder()?.reload() {
::core::result::Result::Ok(()) => {
::dynamic_config::__log_remote_reload(
::core::stringify!(#name),
::core::option::Option::None,
);
::core::result::Result::Ok(())
}
::core::result::Result::Err(error) => {
::dynamic_config::__log_remote_failure(
::core::stringify!(#name),
&error,
);
::core::result::Result::Err(error)
}
}
}
}
}
pub(super) fn clear_remote_method() -> TokenStream {
quote! {
pub fn clear_remote() {
Self::dynamic_config_remote().clear();
}
}
}