package scm import ( "context" "time" ) type ( // Release the release Release struct { ID int Title string Description string Link string Tag string Commitish string Draft bool Prerelease bool Created time.Time Published time.Time } // ReleaseInput contains the information needed to create a release ReleaseInput struct { Title string Description string Tag string Commitish string Draft bool Prerelease bool } // ReleaseListOptions provides options for querying a list of repository releases. ReleaseListOptions struct { Page int Size int Open bool Closed bool } // ReleaseService provides access to creating, listing, updating, and deleting releases ReleaseService interface { // Find returns the release for the given number in the given repository Find(context.Context, string, int) (*Release, *Response, error) // FindByTag returns the release for the given tag in the given repository FindByTag(context.Context, string, string) (*Release, *Response, error) // List returns a list of releases in the given repository List(context.Context, string, ReleaseListOptions) ([]*Release, *Response, error) // Create creates a release in the given repository Create(context.Context, string, *ReleaseInput) (*Release, *Response, error) // Update updates a release in the given repository Update(context.Context, string, int, *ReleaseInput) (*Release, *Response, error) // UpdateByTag deletes a release in the given repository by tag UpdateByTag(context.Context, string, string, *ReleaseInput) (*Release, *Response, error) // Delete deletes a release in the given repository Delete(context.Context, string, int) (*Response, error) // DeleteByTag deletes a release in the given repository by tag DeleteByTag(context.Context, string, string) (*Response, error) } )