Skip to content

Commit cb48e8d

Browse files
committed
Allow roslyn to be updated by recipe itself. PRs no longer create snapshot releases
1 parent ca4fade commit cb48e8d

File tree

13 files changed

+356
-120
lines changed

13 files changed

+356
-120
lines changed

.claude/settings.local.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
"Bash(python:*)",
55
"Bash(./gradlew:*)",
66
"Bash(powershell:*)",
7-
"Read(/C:\\projects\\openrewrite\\rewrite-csharp\\rewrite-csharp\\src\\main\\java\\org\\openrewrite\\csharp/**)"
7+
"Read(/C:\\projects\\openrewrite\\rewrite-csharp\\rewrite-csharp\\src\\main\\java\\org\\openrewrite\\csharp/**)",
8+
"Bash(dir:*)",
9+
"Bash(gradlew clean:*)",
10+
"Bash(cmd /c gradlew.bat clean:*)",
11+
"Bash(gradlew.bat:*)",
12+
"Bash(cmd:*)"
813
],
914
"deny": []
1015
}

.nuke/build.schema.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,11 @@
3030
"CleanNugetCache",
3131
"CleanTestResults",
3232
"Compile",
33-
"CreateGithubRelease",
3433
"DownloadTestFixtures",
3534
"GenerateRoslynRecipes",
3635
"GithubRelease",
3736
"GradleAssemble",
38-
"GradleAssembleAndTest",
37+
"GradleAssembleAndTestCSharpModule",
3938
"GradleBuild",
4039
"GradleBuildDependents",
4140
"GradleBuildEnvironment",
@@ -61,6 +60,7 @@
6160
"GradleDependentComponents",
6261
"GradleDevSnapshot",
6362
"GradleDevSnapshotSetup",
63+
"GradleExecute",
6464
"GradleFinal",
6565
"GradleFinalSetup",
6666
"GradleFindSonatypeStagingRepository",
@@ -100,6 +100,7 @@
100100
"NugetPush",
101101
"Pack",
102102
"PublishServer",
103+
"Release",
103104
"Restore",
104105
"SetDefaultModule",
105106
"SignalIfTestcaseOutputExists",

Rewrite/.run/Build - Clean.run.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../_build/bin/Debug" />
66
<option name="PASS_PARENT_ENVS" value="1" />
77
<option name="USE_EXTERNAL_CONSOLE" value="0" />
8+
<option name="ENV_FILE_PATHS" value="" />
9+
<option name="REDIRECT_INPUT_PATH" value="" />
10+
<option name="PTY_MODE" value="Auto" />
811
<option name="USE_MONO" value="0" />
912
<option name="RUNTIME_ARGUMENTS" value="" />
13+
<option name="AUTO_ATTACH_CHILDREN" value="0" />
14+
<option name="MIXED_MODE_DEBUG" value="0" />
1015
<option name="PROJECT_PATH" value="$PROJECT_DIR$/../_build/_build.csproj" />
1116
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
1217
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
1318
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
1419
<option name="PROJECT_KIND" value="DotNetCore" />
15-
<option name="PROJECT_TFM" value="net8.0" />
20+
<option name="PROJECT_TFM" value="net9.0" />
1621
<method v="2">
1722
<option name="Build" />
1823
</method>

Rewrite/.run/Build - PublishServer.run.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@
55
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/../_build/bin/Debug" />
66
<option name="PASS_PARENT_ENVS" value="1" />
77
<option name="USE_EXTERNAL_CONSOLE" value="0" />
8+
<option name="ENV_FILE_PATHS" value="" />
9+
<option name="REDIRECT_INPUT_PATH" value="" />
10+
<option name="PTY_MODE" value="Auto" />
811
<option name="USE_MONO" value="0" />
912
<option name="RUNTIME_ARGUMENTS" value="" />
13+
<option name="AUTO_ATTACH_CHILDREN" value="0" />
14+
<option name="MIXED_MODE_DEBUG" value="0" />
1015
<option name="PROJECT_PATH" value="$PROJECT_DIR$/../_build/_build.csproj" />
1116
<option name="PROJECT_EXE_PATH_TRACKING" value="1" />
1217
<option name="PROJECT_ARGUMENTS_TRACKING" value="1" />
1318
<option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" />
1419
<option name="PROJECT_KIND" value="DotNetCore" />
15-
<option name="PROJECT_TFM" value="net8.0" />
20+
<option name="PROJECT_TFM" value="net9.0" />
1621
<method v="2">
1722
<option name="Build" />
1823
</method>

Rewrite/src/Rewrite.Server/Commands/ConfigureInterceptor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ namespace Rewrite.Server.Commands;
1212
public class ConfigureInterceptor(HostApplicationBuilder builder) : ICommandInterceptor
1313
{
1414
public void Intercept(CommandContext context, CommandSettings settings)
15-
{
15+
{
1616
var commonSettings = (BaseSettings)settings;
1717
Logging.ConfigureLogging(commonSettings.LogFilePath);
1818
builder.Logging.ClearProviders();
1919
builder.Logging.AddSerilog();
2020
builder.Configuration
21-
.AddYamlFile("appsettings.yaml")
21+
.AddYamlFile("appsettings.yaml", optional: true)
2222
.AddYamlFile($"appsettings.{builder.Environment.EnvironmentName}.yaml", optional: true)
2323
.AddEnvironmentVariables();
2424
builder.Services.AddSingleton<RecipeManager>();

Rewrite/src/Rewrite.Server/Commands/RunRecipeCommand.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public class Settings : BaseSettings
5454
public bool DryRun { get; set; } = false;
5555

5656
[CommandOption("-i|--id <VERSION>")]
57-
[Description("Recipe IDs. For Open Rewrite recipes this is namespace qualified type name. For Roslyn recipies this is the diagnostic ID (ex. CS1123)")]
57+
[Description("Recipe IDs. For Open Rewrite recipes this is namespace qualified type name. For Roslyn recipies this is the diagnostic ID (ex. CS1123). This parameter can be specified multiple times. " +
58+
"If ommited, every fixable issue in the package will be applied.")]
5859
public string[] Ids { get; set; } = [];
5960

6061
public override ValidationResult Validate()

_build/Build.cs

Lines changed: 60 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -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
}

rewrite-csharp-remote-server/build.gradle.kts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ dependencies {
4545
// include("*/*") //to include contents of a folder present inside Reports directory
4646
//}
4747

48-
tasks.processResources {
49-
// dependsOn("zipDotnetServer")
50-
// from(layout.buildDirectory.file("tmp/DotnetServer.zip"))
51-
from(layout.buildDirectory.file(rootProject.file("artifacts/DotnetServer.zip").absolutePath))
52-
}
48+
//tasks.processResources {
49+
//// dependsOn("zipDotnetServer")
50+
//// from(layout.buildDirectory.file("tmp/DotnetServer.zip"))
51+
// from(layout.buildDirectory.file(rootProject.file("artifacts/DotnetServer.zip").absolutePath))
52+
//}
5353

5454
tasks.compileJava {
5555
options.release = 8

0 commit comments

Comments
 (0)