Add filter for prereleases

This commit is contained in:
jihaisse 2022-11-14 10:24:23 +01:00
parent d39a05386b
commit 9f3f66a956
3 changed files with 24 additions and 1 deletions

View File

@ -53,6 +53,11 @@ if ( !class_exists(Api::class, false) ):
*/
protected $localDirectory = null;
/**
* @var string prerelease name
*/
protected $prereleaseName;
/**
* Api constructor.
*
@ -359,6 +364,14 @@ if ( !class_exists(Api::class, false) ):
public function setSlug($slug) {
$this->slug = $slug;
}
/**
* @param string $name
*
*/
public function filterPrereleaseName($name) {
$this->prereleaseName = $name;
}
}
endif;

View File

@ -51,7 +51,13 @@ if ( !class_exists(GitHubApi::class, false) ):
*/
public function getLatestRelease() {
$release = $this->api('/repos/:user/:repo/releases/latest');
if ( is_wp_error($release) || !is_object($release) || !isset($release->tag_name) ) {
if ( is_wp_error($release)
|| !is_object($release)
|| !isset($release->tag_name)
//Skip release if prerelease name is not a match
|| (isset($this->prereleaseName) && preg_match('/'.$this->prereleaseName.'/m', $release->tag_name) !== 1)
//Skip release if it's not a final release
|| (!isset($this->prereleaseName) && preg_match('/^v?[0-9]+\.[0-9]+\.[0-9]+$/m', $release->tag_name) !== 1)) {
return null;
}

View File

@ -115,6 +115,10 @@ if ( !class_exists(GitLabApi::class, false) ):
|| !isset($release->tag_name)
//Skip upcoming releases.
|| !empty($release->upcoming_release)
//Skip release if prerelease name is not a match
|| (isset($this->prereleaseName) && preg_match('/'.$this->prereleaseName.'/m', $release->tag_name) !== 1)
//Skip release if it's not a final release
|| (!isset($this->prereleaseName) && preg_match('/^v?[0-9]+\.[0-9]+\.[0-9]+$/m', $release->tag_name) !== 1)
) {
continue;
}