Skip to main content

GitHubClient

Trait GitHubClient 

Source
pub trait GitHubClient {
    // Required methods
    fn create_release(
        &self,
        params: &CreateReleaseParams,
    ) -> Result<ReleaseInfo>;
    fn upload_asset(&self, params: &UploadAssetParams) -> Result<AssetInfo>;
    fn list_releases(
        &self,
        params: &ListReleasesParams,
    ) -> Result<Vec<ReleaseInfo>>;
    fn delete_release(&self, params: &DeleteReleaseParams) -> Result<()>;
    fn get_release_by_tag(
        &self,
        params: &GetReleaseByTagParams,
    ) -> Result<Option<ReleaseInfo>>;
    fn delete_tag(&self, params: &DeleteTagParams) -> Result<()>;
}
Expand description

Abstraction over GitHub API operations used by the release stage.

Implementations:

  • Real: wraps octocrab (lives in crates/stage-release)
  • Mock: [MockGitHubClient] for tests (records calls, configurable responses)

Required Methods§

Source

fn create_release(&self, params: &CreateReleaseParams) -> Result<ReleaseInfo>

Create a new GitHub release.

Source

fn upload_asset(&self, params: &UploadAssetParams) -> Result<AssetInfo>

Upload an asset to an existing release.

Source

fn list_releases(&self, params: &ListReleasesParams) -> Result<Vec<ReleaseInfo>>

List all releases for a repository.

Source

fn delete_release(&self, params: &DeleteReleaseParams) -> Result<()>

Delete a release by ID.

Source

fn get_release_by_tag( &self, params: &GetReleaseByTagParams, ) -> Result<Option<ReleaseInfo>>

Look up a release by tag name.

Returns Ok(Some(info)) when the release exists, Ok(None) when the tag has no release (HTTP 404 for the /releases/tags/{tag} endpoint), and Err for transport / auth failures.

Source

fn delete_tag(&self, params: &DeleteTagParams) -> Result<()>

Delete a git tag reference.

GitHub’s DELETE /repos/{owner}/{repo}/releases/{id} leaves the underlying tag alive; a complete rollback issues a follow-up DELETE /repos/{owner}/{repo}/git/refs/tags/{tag} to remove it. 404 here should be bucketed as already-absent by the caller — the tag was either never created or was already deleted.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§