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.