sr-github 1.4.3

GitHub VCS provider for semantic-release
Documentation

sr-github

GitHub VCS provider for sr — backed by the GitHub REST API.

crates.io

Overview

sr-github provides GitHubProvider, a concrete implementation of the VcsProvider trait from sr-core. It calls the GitHub REST API directly (via ureq) to create releases, upload assets, and check for existing releases — no external tools needed.

Usage

[dependencies]
sr-github = "1"

Creating a provider

use sr_github::GitHubProvider;
use sr_core::release::VcsProvider;

let provider = GitHubProvider::new(
    "urmzd".into(),
    "semantic-release".into(),
    "github.com".into(),
    std::env::var("GH_TOKEN").unwrap(),
);

// Create a GitHub release
let url = provider.create_release(
    "v1.0.0",           // tag
    "v1.0.0",           // release name
    "## What's Changed", // body (markdown)
    false,               // prerelease
)?;

// Check if a release exists
let exists = provider.release_exists("v1.0.0")?;

// Generate a compare URL
let url = provider.compare_url("v0.9.0", "v1.0.0")?;
// -> "https://github.com/urmzd/semantic-release/compare/v0.9.0...v1.0.0"

API

Method Description
GitHubProvider::new(owner, repo, hostname, token) Create a new provider for the given GitHub repository
create_release(tag, name, body, prerelease) Create a GitHub release, returns the release URL
release_exists(tag) Check whether a release already exists for a tag
delete_release(tag) Delete a release by tag
upload_assets(tag, files) Upload asset files to an existing release
compare_url(base, head) Generate a GitHub compare URL between two refs
repo_url() Return the repository URL (https://github.com/owner/repo)

Prerequisites

Requires a GH_TOKEN or GITHUB_TOKEN environment variable with a GitHub personal access token (or the GITHUB_TOKEN provided by GitHub Actions). The token needs contents: write permission to create releases and upload assets.

License

Apache-2.0