createRelease method
Future<Release>
createRelease(
- RepositorySlug slug,
- CreateRelease createRelease, {
- bool getIfExists = true,
Creates a Release based on the specified createRelease.
If getIfExists
is true, this returns an already existing release instead of an error.
Defaults to true.
API docs: https://developer.github.com/v3/repos/releases/#create-a-release
Implementation
Future<Release> createRelease(
RepositorySlug slug,
CreateRelease createRelease, {
bool getIfExists = true,
}) async {
ArgumentError.checkNotNull(slug);
ArgumentError.checkNotNull(createRelease);
final release = await github.postJSON<Map<String, dynamic>, Release>(
'/repos/${slug.fullName}/releases',
convert: (i) => Release.fromJson(i),
body: GitHubJson.encode(createRelease.toJson()),
statusCode: StatusCodes.CREATED);
if (release.hasErrors) {
final alreadyExistsErrorCode = release.errors!.firstWhere(
(error) => error['code'] == 'already_exists',
orElse: () => null,
);
if (alreadyExistsErrorCode != null) {
final field = alreadyExistsErrorCode['field'];
if (field == 'tag_name') {
return getReleaseByTagName(slug, createRelease.tagName);
}
} else {
print(
'Unexpected response from the API. Returning response. \n Errors: ${release.errors}');
}
}
return release;
}