skytool 0.1.0-pre.2

an experimental API client for BlueSky / ATProto
Documentation
use fred::prelude::Builder;

pub(crate) mod types;

#[derive(Debug, thiserror::Error, miette::Diagnostic)]
#[error(transparent)]
#[remain::sorted]
pub(crate) enum Error {
  Fred(#[from] fred::error::Error),
}

#[derive(Debug, Clone, clap::Args)]
#[group(id = "valkey")]
#[remain::sorted]
pub(crate) struct ValkeyOptions {
  #[command(flatten)]
  pub(crate) config: types::config::Config,
  #[command(flatten)]
  pub(crate) connection: types::config::ConnectionConfig,
}

impl TryFrom<ValkeyOptions> for fred::clients::Client {
  type Error = Error;
  fn try_from(value: ValkeyOptions) -> Result<Self, Self::Error> {
    let ValkeyOptions { config, connection } = value;

    let config = config.into();
    let connection = connection.into();

    let client = Builder::from_config(config).set_connection_config(connection).build()?;

    Ok(client)
  }
}