@@ -74,6 +74,7 @@ FigletFont LoadFont(string fontName)
7474
7575 grid . AddRow ( openRewrite ) ;
7676 AnsiConsole . Write ( grid ) ;
77+
7778 }
7879
7980 /// Support plugins are available for:
@@ -108,6 +109,17 @@ FigletFont LoadFont(string fontName)
108109 readonly string TargetFramework = "net9.0" ;
109110
110111
112+
113+ bool IsOnMainBranch => string . Equals ( GitRepository . Head . FriendlyName , "main" , StringComparison . OrdinalIgnoreCase ) && ! GitRepository . Info . IsHeadDetached ;
114+ bool IsPullRequest => GitHubActions ? . EventName == "pull_request" ;
115+ // bool IsPreRelease => GitHubActions?.RefName?.Contains("-rc.") ?? true;
116+ bool IsPreRelease => ! IsOnMainBranch || GetTagsForCurrentCheckout ( ) . Any ( x => x . Contains ( "-rc." ) ) ;
117+ bool IsCurrentCommitReleaseTagged => GetTagsForCurrentCheckout ( ) . Any ( tag => tag . StartsWith ( "v" ) && ! tag . Equals ( "latest" , StringComparison . OrdinalIgnoreCase ) ) ;
118+
119+ bool IsAllowedToPushToFeed => IsOnMainBranch && ! IsPullRequest && IsCurrentBranchCommitted ( ) ;
120+
121+ GradleSettings GradleSettings = new ( ) ;
122+
111123 bool IsCurrentBranchCommitted ( ) => ! GitRepository . RetrieveStatus ( ) . IsDirty ;
112124
113125 Target Clean => _ => _
@@ -160,7 +172,6 @@ IEnumerable<AbsolutePath> GetSubDirectories(params string[] patterns)
160172 . Description ( "Restores nuget packages" )
161173 . Executes ( ( ) =>
162174 {
163-
164175 DotNetRestore ( c => c
165176 . SetProjectFile ( Solution . Path )
166177 . SetVersion ( Version . NuGetPackageVersion ) ) ;
@@ -198,7 +209,6 @@ IEnumerable<AbsolutePath> GetSubDirectories(params string[] patterns)
198209 . SetAssemblyVersion ( Version . AssemblyVersion )
199210 . SetOutputDirectory ( ArtifactsDirectory / "test" ) ) ;
200211
201-
202212 } ) ;
203213
204214 Target PublishServer => _ => _
@@ -437,20 +447,11 @@ void InjectLogsIntoTrx()
437447 }
438448 } ) ;
439449
440- Target GradleAssembleAndTest => _ => _
441- . Unlisted ( )
442- . DependsOn ( PublishServer )
443- . Executes ( ( ) =>
444- {
445- Gradle ( c => c
446- . SetTasks ( ":rewrite-csharp:assemble" , ":rewrite-csharp:test" ) ) ;
447- } ) ;
448-
449450
450451 Target SignalIfTestcaseOutputExists => _ => _
451452 . Unlisted ( )
452453 . Description ( "Sets github actions flags if any java or c# test output files were generated" )
453- . After ( Test , GradleAssembleAndTest )
454+ . After ( Test , GradleAssembleAndTestCSharpModule )
454455 . Executes ( ( ) =>
455456 {
456457 var hasTrx = TestResultsDirectory . GlobFiles ( "*.trx" ) . Any ( ) ;
@@ -459,24 +460,24 @@ void InjectLogsIntoTrx()
459460 GitHubActions ? . SetVariable ( "java_tests_found" , hasJavaTest ) ;
460461 } ) ;
461462
463+
464+
462465 [ Category ( "CI" ) ]
463466 Target CIBuild => _ => _
464467 . Description ( "Builds, tests and produces test reports for regular builds on CI" )
465- . DependsOn ( Pack , PublishServer , Test , GradleAssembleAndTest , GithubRelease , SignalIfTestcaseOutputExists ) ;
468+ . DependsOn ( Pack , Test , GradleAssembleAndTestCSharpModule , Release , SignalIfTestcaseOutputExists ) ;
466469
467470
468471 [ Category ( "CI" ) ]
469472 Target CIRelease => _ => _
470473 . Description ( "Creates and publishes release artifacts to maven & nuget" )
471- . DependsOn ( Pack , PublishServer , GradlePublish , NugetPush , SignalIfTestcaseOutputExists ) ;
474+ . DependsOn ( Release ) ;
472475
473- Target CreateGithubRelease => _ => _
474- . Unlisted ( )
475- . DependsOn ( PublishServer )
476- . Executes ( ( ) =>
477- {
478476
479- } ) ;
477+ Target Release => _ => _
478+ . Description ( "Creates package releases and uploads them to feeds" )
479+ . After ( Pack , Test )
480+ . DependsOn ( NugetPush , GradlePublish , GithubRelease ) ;
480481
481482 [ Category ( "Test" ) ]
482483 Target DownloadTestFixtures => _ => _
@@ -505,60 +506,66 @@ void InjectLogsIntoTrx()
505506 }
506507 } ) ;
507508
509+
510+ Target GradleAssembleAndTestCSharpModule => _ => _
511+ . Unlisted ( )
512+ . DependsOn ( PublishServer )
513+ . Before ( GradleExecute )
514+ . Triggers ( GradleExecute )
515+ . Executes ( ( ) =>
516+ {
517+ GradleSettings = GradleSettings . AddTasks ( ":rewrite-csharp:assemble" , ":rewrite-csharp:test" ) ;
518+ } ) ;
519+
508520 Target GradlePublish => _ => _
509521 . Description ( "Invokes Gradle to create a Java release" )
522+ . OnlyWhenStatic ( ( ) => IsAllowedToPushToFeed )
510523 . After ( Pack , NugetPush )
524+ . Before ( GradleExecute )
525+ . Triggers ( GradleExecute )
511526 . Executes ( ( ) =>
512527 {
513- var isPreRelease = GitHubActions ? . RefName ? . Contains ( "-rc." ) ?? true ;
514- var isPullRequest = GitHubActions ? . EventName == "pull_request" ;
515- var gradleSettings = new GradleSettings ( )
516- . SetJvmOptions ( "-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError" )
517- . SetWarningMode ( WarningMode . None )
518- . SetProjectProperty (
528+ if ( IsCurrentCommitReleaseTagged )
529+ {
530+ GradleSettings = GradleSettings
531+ . AddTasks ( IsPreRelease ? KnownGradleTasks . Candidate : KnownGradleTasks . Final ) ;
532+ }
533+
534+ GradleSettings = GradleSettings
535+ . AddProjectProperty (
519536 "releasing" ,
520537 "release.disableGitChecks=true" ,
521538 "release.useLastTag=true"
522539 )
523- . SetProcessAdditionalArguments ( "--console=plain" , "--info" , "--stacktrace" , "--no-daemon" )
540+ . EnableForceSigning ( )
524541 . AddTasks (
542+ KnownGradleTasks . Snapshot ,
525543 KnownGradleTasks . Publish ,
526544 KnownGradleTasks . CloseAndReleaseSonatypeStagingRepository ) ;
545+ } ) ;
527546
528- if ( isPreRelease )
529- {
530- gradleSettings = gradleSettings
531- . AddTasks ( KnownGradleTasks . Candidate ) ;
532-
533- }
534- else
535- {
536- gradleSettings = gradleSettings
537- . AddTasks ( KnownGradleTasks . Final ) ;
538- // TODO .SetVerbosity(GradleVerbosity.Info);
539- }
540-
541- if ( ! isPullRequest )
542- {
543- gradleSettings = gradleSettings
544- . AddTasks ( KnownGradleTasks . Snapshot )
545- . EnableForceSigning ( ) ;
546- }
547+ Target GradleExecute => _ => _
548+ . Description ( "Executes any queued up gradle stuff as a batch" )
549+ . Unlisted ( )
550+ . Executes ( ( ) =>
551+ {
552+ GradleSettings = GradleSettings
553+ . SetJvmOptions ( "-Xmx2048m -XX:+HeapDumpOnOutOfMemoryError" )
554+ . SetWarningMode ( WarningMode . None )
555+ . SetProcessAdditionalArguments ( "--console=plain" , "--info" , "--stacktrace" , "--no-daemon" ) ;
547556
548- Gradle ( gradleSettings ) ;
557+ Gradle ( GradleSettings ) ;
549558 } ) ;
550559
551560 Target GithubRelease => _ => _
552561 . Description ( "Creates a GitHub release (or amends existing)" )
553562 . Requires ( ( ) => GitHubToken )
554- . After ( Pack , NugetPush , GradlePublish , Test , GradleAssembleAndTest , GradleTest )
563+ . OnlyWhenStatic ( ( ) => IsAllowedToPushToFeed )
564+ . After ( Pack , NugetPush , GradlePublish , Test , GradleAssembleAndTestCSharpModule , GradleTest )
555565 . Executes ( async ( ) =>
556566 {
557567 await CreateGitHubRelease ( $ "v{ Version . SemVer1 } ") ;
558- if ( string . Equals ( GitRepository . Head . FriendlyName , "main" , StringComparison . OrdinalIgnoreCase ) && ! GitRepository . Info . IsHeadDetached )
559- {
560- await CreateGitHubRelease ( $ "latest") ;
561- }
568+ await CreateGitHubRelease ( $ "latest") ;
562569 } ) ;
563570
564571 public async Task CreateGitHubRelease ( string releaseName )
@@ -630,4 +637,5 @@ string[] GetTagsForCurrentCheckout()
630637 return tagsPointingAtHead ;
631638 }
632639
640+
633641}
0 commit comments