interprex 6.0.0

Provider-neutral models and async interfaces for development platforms
Documentation
use async_trait::async_trait;
use interprex::{
    ChangeRequest, ChangeRequestHead, ChangeRequestNumber, CheckOutcome, CheckRun,
    CodeReviewsProvider, FindingResolution, FindingResolutionReply, Repository, Result,
    ReviewRequestTarget, ReviewThreadId,
};

struct ExistingProvider;

#[async_trait]
impl CodeReviewsProvider for ExistingProvider {
    async fn change_request(
        &self,
        _repository: &Repository,
        _number: ChangeRequestNumber,
    ) -> Result<ChangeRequest> {
        unimplemented!()
    }

    async fn open_change_requests(
        &self,
        _repository: &Repository,
        _head: &ChangeRequestHead,
    ) -> Result<Vec<ChangeRequestNumber>> {
        unimplemented!()
    }

    async fn resolve_thread(
        &self,
        _repository: &Repository,
        _number: ChangeRequestNumber,
        _thread_id: &ReviewThreadId,
    ) -> Result<()> {
        unimplemented!()
    }

    async fn resolve_finding(
        &self,
        _repository: &Repository,
        _number: ChangeRequestNumber,
        _thread_id: &ReviewThreadId,
        _resolution: FindingResolution,
        _reply: &FindingResolutionReply,
    ) -> Result<()> {
        unimplemented!()
    }

    async fn request_reviewers(
        &self,
        _repository: &Repository,
        _number: ChangeRequestNumber,
        _reviewers: &[ReviewRequestTarget],
    ) -> Result<()> {
        unimplemented!()
    }

    async fn mark_ready(
        &self,
        _repository: &Repository,
        _number: ChangeRequestNumber,
    ) -> Result<()> {
        unimplemented!()
    }

    async fn checks(&self, _repository: &Repository, _head_sha: &str) -> Result<Vec<CheckRun>> {
        unimplemented!()
    }

    async fn publish_check(
        &self,
        _repository: &Repository,
        _app_name: &str,
        _outcome: &CheckOutcome,
    ) -> Result<()> {
        unimplemented!()
    }
}

#[test]
fn existing_provider_implementations_need_no_branch_update_methods() {
    fn accepts_code_reviews_provider<T: CodeReviewsProvider>() {}

    accepts_code_reviews_provider::<ExistingProvider>();
}