mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-28 00:11:22 +00:00
101 lines
2.7 KiB
Java
101 lines
2.7 KiB
Java
package org.kohsuke.github;
|
||
|
||
import java.io.IOException;
|
||
|
||
/**
|
||
* Builder pattern for creating a {@link GHRelease}
|
||
*
|
||
* @see GHRepository#createRelease(String) GHRepository#createRelease(String)
|
||
*/
|
||
public class GHReleaseBuilder {
|
||
private final GHRepository repo;
|
||
private final Requester builder;
|
||
|
||
/**
|
||
* Instantiates a new Gh release builder.
|
||
*
|
||
* @param ghRepository
|
||
* the gh repository
|
||
* @param tag
|
||
* the tag
|
||
*/
|
||
public GHReleaseBuilder(GHRepository ghRepository, String tag) {
|
||
this.repo = ghRepository;
|
||
this.builder = repo.root.createRequest().method("POST");
|
||
builder.with("tag_name", tag);
|
||
}
|
||
|
||
/**
|
||
* Body gh release builder.
|
||
*
|
||
* @param body
|
||
* The release notes body.
|
||
* @return the gh release builder
|
||
*/
|
||
public GHReleaseBuilder body(String body) {
|
||
builder.with("body", body);
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA.
|
||
*
|
||
* @param commitish
|
||
* Defaults to the repository’s default branch (usually "master"). Unused if the Git tag already exists.
|
||
* @return the gh release builder
|
||
*/
|
||
public GHReleaseBuilder commitish(String commitish) {
|
||
builder.with("target_commitish", commitish);
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* Optional.
|
||
*
|
||
* @param draft
|
||
* {@code true} to create a draft (unpublished) release, {@code false} to create a published one. Default
|
||
* is {@code false}.
|
||
* @return the gh release builder
|
||
*/
|
||
public GHReleaseBuilder draft(boolean draft) {
|
||
builder.with("draft", draft);
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* Name gh release builder.
|
||
*
|
||
* @param name
|
||
* the name of the release
|
||
* @return the gh release builder
|
||
*/
|
||
public GHReleaseBuilder name(String name) {
|
||
builder.with("name", name);
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* Optional
|
||
*
|
||
* @param prerelease
|
||
* {@code true} to identify the release as a prerelease. {@code false} to identify the release as a full
|
||
* release. Default is {@code false}.
|
||
* @return the gh release builder
|
||
*/
|
||
public GHReleaseBuilder prerelease(boolean prerelease) {
|
||
builder.with("prerelease", prerelease);
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* Create gh release.
|
||
*
|
||
* @return the gh release
|
||
* @throws IOException
|
||
* the io exception
|
||
*/
|
||
public GHRelease create() throws IOException {
|
||
return builder.withUrlPath(repo.getApiTailUrl("releases")).fetch(GHRelease.class).wrap(repo);
|
||
}
|
||
}
|