@ -26,50 +26,41 @@ import org.springframework.gradle.github.RepositoryRef;
@@ -26,50 +26,41 @@ import org.springframework.gradle.github.RepositoryRef;
public class GitHubMilestonePlugin implements Plugin < Project > {
@Override
public void apply ( Project project ) {
TaskProvider < GitHubMilestoneNextReleaseTask > nextReleaseMilestoneTask = project . getTasks ( ) . register ( "gitHubNextReleaseMilestone" , GitHubMilestoneNextReleaseTask . class , new Action < GitHubMilestoneNextReleaseTask > ( ) {
@Override
public void execute ( GitHubMilestoneNextReleaseTask gitHubMilestoneNextReleaseTask ) {
gitHubMilestoneNextReleaseTask . doNotTrackState ( "API call to GitHub needs to check for new milestones every time" ) ;
gitHubMilestoneNextReleaseTask . setGroup ( "Release" ) ;
gitHubMilestoneNextReleaseTask . setDescription ( "Calculates the next release version based on the current version and outputs it to a yaml file" ) ;
gitHubMilestoneNextReleaseTask . getNextReleaseFile ( )
. fileProvider ( project . provider ( ( ) - > project . file ( "next-release.yml" ) ) ) ;
if ( project . hasProperty ( "gitHubAccessToken" ) ) {
gitHubMilestoneNextReleaseTask
. setGitHubAccessToken ( ( String ) project . findProperty ( "gitHubAccessToken" ) ) ;
}
}
} ) ;
project . getTasks ( ) . register ( "gitHubCheckMilestoneHasNoOpenIssues" , GitHubMilestoneHasNoOpenIssuesTask . class , new Action < GitHubMilestoneHasNoOpenIssuesTask > ( ) {
@Override
public void execute ( GitHubMilestoneHasNoOpenIssuesTask githubCheckMilestoneHasNoOpenIssues ) {
githubCheckMilestoneHasNoOpenIssues . setGroup ( "Release" ) ;
githubCheckMilestoneHasNoOpenIssues . setDescription ( "Checks if there are any open issues for the specified repository and milestone" ) ;
githubCheckMilestoneHasNoOpenIssues . getIsOpenIssuesFile ( ) . value ( project . getLayout ( ) . getBuildDirectory ( ) . file ( "github/milestones/is-open-issues" ) ) ;
githubCheckMilestoneHasNoOpenIssues . setMilestoneTitle ( ( String ) project . findProperty ( "nextVersion" ) ) ;
if ( ! project . hasProperty ( "nextVersion" ) ) {
githubCheckMilestoneHasNoOpenIssues . getNextVersionFile ( ) . convention (
nextReleaseMilestoneTask . flatMap ( GitHubMilestoneNextReleaseTask : : getNextReleaseFile ) ) ;
}
if ( project . hasProperty ( "gitHubAccessToken" ) ) {
githubCheckMilestoneHasNoOpenIssues . setGitHubAccessToken ( ( String ) project . findProperty ( "gitHubAccessToken" ) ) ;
}
TaskProvider < GitHubMilestoneNextReleaseTask > nextReleaseMilestoneTask = project . getTasks ( ) . register ( "gitHubNextReleaseMilestone" , GitHubMilestoneNextReleaseTask . class , ( gitHubMilestoneNextReleaseTask ) - > {
gitHubMilestoneNextReleaseTask . doNotTrackState ( "API call to GitHub needs to check for new milestones every time" ) ;
gitHubMilestoneNextReleaseTask . setGroup ( "Release" ) ;
gitHubMilestoneNextReleaseTask . setDescription ( "Calculates the next release version based on the current version and outputs it to a yaml file" ) ;
gitHubMilestoneNextReleaseTask . getNextReleaseFile ( )
. fileProvider ( project . provider ( ( ) - > project . file ( "next-release.yml" ) ) ) ;
if ( project . hasProperty ( "gitHubAccessToken" ) ) {
gitHubMilestoneNextReleaseTask
. setGitHubAccessToken ( ( String ) project . findProperty ( "gitHubAccessToken" ) ) ;
}
} ) ;
project . getTasks ( ) . register ( "gitHubCheckMilestoneHasNoOpenIssues" , GitHubMilestoneHasNoOpenIssuesTask . class , ( githubCheckMilestoneHasNoOpenIssues ) - > {
githubCheckMilestoneHasNoOpenIssues . setGroup ( "Release" ) ;
githubCheckMilestoneHasNoOpenIssues . setDescription ( "Checks if there are any open issues for the specified repository and milestone" ) ;
githubCheckMilestoneHasNoOpenIssues . getIsOpenIssuesFile ( ) . value ( project . getLayout ( ) . getBuildDirectory ( ) . file ( "github/milestones/is-open-issues" ) ) ;
githubCheckMilestoneHasNoOpenIssues . setMilestoneTitle ( ( String ) project . findProperty ( "nextVersion" ) ) ;
if ( ! project . hasProperty ( "nextVersion" ) ) {
githubCheckMilestoneHasNoOpenIssues . getNextVersionFile ( ) . convention (
nextReleaseMilestoneTask . flatMap ( GitHubMilestoneNextReleaseTask : : getNextReleaseFile ) ) ;
}
if ( project . hasProperty ( "gitHubAccessToken" ) ) {
githubCheckMilestoneHasNoOpenIssues . setGitHubAccessToken ( ( String ) project . findProperty ( "gitHubAccessToken" ) ) ;
}
} ) ;
project . getTasks ( ) . register ( "gitHubCheckNextVersionDueToday" , GitHubMilestoneNextVersionDueTodayTask . class , ( gitHubMilestoneNextVersionDueTodayTask ) - > {
gitHubMilestoneNextVersionDueTodayTask . setGroup ( "Release" ) ;
gitHubMilestoneNextVersionDueTodayTask . setDescription ( "Checks if the next release version is due today or past due, will fail if the next version is not due yet" ) ;
gitHubMilestoneNextVersionDueTodayTask . getIsDueTodayFile ( ) . value ( project . getLayout ( ) . getBuildDirectory ( ) . file ( "github/milestones/is-due-today" ) ) ;
gitHubMilestoneNextVersionDueTodayTask . getNextVersionFile ( ) . convention (
nextReleaseMilestoneTask . flatMap ( GitHubMilestoneNextReleaseTask : : getNextReleaseFile ) ) ;
if ( project . hasProperty ( "gitHubAccessToken" ) ) {
gitHubMilestoneNextVersionDueTodayTask
. setGitHubAccessToken ( ( String ) project . findProperty ( "gitHubAccessToken" ) ) ;
}
} ) ;
project . getTasks ( ) . register ( "gitHubCheckNextVersionDueToday" , GitHubMilestoneNextVersionDueTodayTask . class , new Action < GitHubMilestoneNextVersionDueTodayTask > ( ) {
@Override
public void execute ( GitHubMilestoneNextVersionDueTodayTask gitHubMilestoneNextVersionDueTodayTask ) {
gitHubMilestoneNextVersionDueTodayTask . setGroup ( "Release" ) ;
gitHubMilestoneNextVersionDueTodayTask . setDescription ( "Checks if the next release version is due today or past due, will fail if the next version is not due yet" ) ;
gitHubMilestoneNextVersionDueTodayTask . getIsDueTodayFile ( ) . value ( project . getLayout ( ) . getBuildDirectory ( ) . file ( "github/milestones/is-due-today" ) ) ;
gitHubMilestoneNextVersionDueTodayTask . getNextVersionFile ( ) . convention (
nextReleaseMilestoneTask . flatMap ( GitHubMilestoneNextReleaseTask : : getNextReleaseFile ) ) ;
if ( project . hasProperty ( "gitHubAccessToken" ) ) {
gitHubMilestoneNextVersionDueTodayTask
. setGitHubAccessToken ( ( String ) project . findProperty ( "gitHubAccessToken" ) ) ;
}
}
} ) ;
project . getTasks ( ) . register ( "scheduleNextRelease" , ScheduleNextReleaseTask . class , ( scheduleNextRelease ) - > {
scheduleNextRelease . doNotTrackState ( "API call to GitHub needs to check for new milestones every time" ) ;
scheduleNextRelease . setGroup ( "Release" ) ;