Skip to main content

Module backends

Module backends 

Source
Expand description

Release distribution backends.

This module defines the ReleaseBackend trait that provider crates can implement to support release distribution.

§Architecture

The release crate provides:

Provider crates implement ReleaseBackend:

  • cuenv-github - GitHub Releases
  • cuenv-homebrew - Homebrew tap updates

§Example

use cuenv_release::backends::{ReleaseBackend, BackendContext, PublishResult};
use cuenv_release::artifact::PackagedArtifact;

struct MyBackend;

impl ReleaseBackend for MyBackend {
    fn name(&self) -> &'static str { "my-backend" }

    fn publish<'a>(
        &'a self,
        ctx: &'a BackendContext,
        artifacts: &'a [PackagedArtifact],
    ) -> Pin<Box<dyn Future<Output = Result<PublishResult>> + Send + 'a>> {
        Box::pin(async move {
            // Upload artifacts...
            Ok(PublishResult::success("my-backend", "Published"))
        })
    }
}

Structs§

BackendContext
Configuration common to all backends.
PublishResult
Result of a backend publish operation.

Traits§

ReleaseBackend
Trait for release distribution backends.