mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2025-04-28 07:59:47 +00:00
Added methods to update Tauri, MudBlazor, Rust, and .NET versions in metadata
This commit is contained in:
parent
3e9da73623
commit
aa44a26bfe
@ -1,26 +1,189 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Build.Commands;
|
namespace Build.Commands;
|
||||||
|
|
||||||
// ReSharper disable ClassNeverInstantiated.Global
|
// ReSharper disable ClassNeverInstantiated.Global
|
||||||
// ReSharper disable UnusedType.Global
|
// ReSharper disable UnusedType.Global
|
||||||
// ReSharper disable UnusedMember.Global
|
// ReSharper disable UnusedMember.Global
|
||||||
|
|
||||||
public sealed class UpdateMetadataCommands
|
public sealed partial class UpdateMetadataCommands
|
||||||
{
|
{
|
||||||
[Command("test", Description = "Test command")]
|
[Command("test", Description = "Test command")]
|
||||||
public async Task Test()
|
public async Task Test()
|
||||||
{
|
{
|
||||||
await this.UpdateBuildTime();
|
await this.UpdateTauriVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task UpdateTauriVersion()
|
||||||
|
{
|
||||||
|
const int TAURI_VERSION_INDEX = 7;
|
||||||
|
|
||||||
|
var pathMetadata = Environment.GetMetadataPath();
|
||||||
|
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
||||||
|
var currentTauriVersion = lines[TAURI_VERSION_INDEX].Trim();
|
||||||
|
|
||||||
|
var matches = await this.DetermineVersion("Tauri", Environment.GetRustRuntimeDirectory(), TauriVersionRegex(), "cargo", "tree --depth 1");
|
||||||
|
if (matches.Count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var updatedTauriVersion = matches[0].Groups["version"].Value;
|
||||||
|
if(currentTauriVersion == updatedTauriVersion)
|
||||||
|
{
|
||||||
|
Console.WriteLine("- The Tauri version is already up to date.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"- Updated Tauri version from {currentTauriVersion} to {updatedTauriVersion}.");
|
||||||
|
lines[TAURI_VERSION_INDEX] = updatedTauriVersion;
|
||||||
|
|
||||||
|
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task UpdateMudBlazorVersion()
|
||||||
|
{
|
||||||
|
const int MUD_BLAZOR_VERSION_INDEX = 6;
|
||||||
|
|
||||||
|
var pathMetadata = Environment.GetMetadataPath();
|
||||||
|
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
||||||
|
var currentMudBlazorVersion = lines[MUD_BLAZOR_VERSION_INDEX].Trim();
|
||||||
|
|
||||||
|
var matches = await this.DetermineVersion("MudBlazor", Environment.GetAIStudioDirectory(), MudBlazorVersionRegex(), "dotnet", "list package");
|
||||||
|
if (matches.Count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var updatedMudBlazorVersion = matches[0].Groups["version"].Value;
|
||||||
|
if(currentMudBlazorVersion == updatedMudBlazorVersion)
|
||||||
|
{
|
||||||
|
Console.WriteLine("- The MudBlazor version is already up to date.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"- Updated MudBlazor version from {currentMudBlazorVersion} to {updatedMudBlazorVersion}.");
|
||||||
|
lines[MUD_BLAZOR_VERSION_INDEX] = updatedMudBlazorVersion;
|
||||||
|
|
||||||
|
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task UpdateRustVersion()
|
||||||
|
{
|
||||||
|
const int RUST_VERSION_INDEX = 5;
|
||||||
|
|
||||||
|
var pathMetadata = Environment.GetMetadataPath();
|
||||||
|
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
||||||
|
var currentRustVersion = lines[RUST_VERSION_INDEX].Trim();
|
||||||
|
var matches = await this.DetermineVersion("Rust", Environment.GetRustRuntimeDirectory(), RustVersionRegex(), "rustc", "-Vv");
|
||||||
|
if (matches.Count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var updatedRustVersion = matches[0].Groups["version"].Value + " (commit " + matches[0].Groups["commit"].Value + ")";
|
||||||
|
if(currentRustVersion == updatedRustVersion)
|
||||||
|
{
|
||||||
|
Console.WriteLine("- Rust version is already up to date.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"- Updated Rust version from {currentRustVersion} to {updatedRustVersion}.");
|
||||||
|
lines[RUST_VERSION_INDEX] = updatedRustVersion;
|
||||||
|
|
||||||
|
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task UpdateDotnetVersion()
|
||||||
|
{
|
||||||
|
const int DOTNET_VERSION_INDEX = 4;
|
||||||
|
const int DOTNET_SDK_VERSION_INDEX = 3;
|
||||||
|
|
||||||
|
var pathMetadata = Environment.GetMetadataPath();
|
||||||
|
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
||||||
|
var currentDotnetVersion = lines[DOTNET_VERSION_INDEX].Trim();
|
||||||
|
var currentDotnetSdkVersion = lines[DOTNET_SDK_VERSION_INDEX].Trim();
|
||||||
|
|
||||||
|
var matches = await this.DetermineVersion(".NET", Environment.GetAIStudioDirectory(), DotnetVersionRegex(), "dotnet", "--info");
|
||||||
|
if (matches.Count == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var updatedDotnetVersion = matches[0].Groups["hostVersion"].Value + " (commit " + matches[0].Groups["hostCommit"].Value + ")";
|
||||||
|
var updatedDotnetSdkVersion = matches[0].Groups["sdkVersion"].Value + " (commit " + matches[0].Groups["sdkCommit"].Value + ")";
|
||||||
|
if(currentDotnetVersion == updatedDotnetVersion && currentDotnetSdkVersion == updatedDotnetSdkVersion)
|
||||||
|
{
|
||||||
|
Console.WriteLine("- .NET version is already up to date.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.WriteLine($"- Updated .NET SDK version from {currentDotnetSdkVersion} to {updatedDotnetSdkVersion}.");
|
||||||
|
Console.WriteLine($"- Updated .NET version from {currentDotnetVersion} to {updatedDotnetVersion}.");
|
||||||
|
|
||||||
|
lines[DOTNET_VERSION_INDEX] = updatedDotnetVersion;
|
||||||
|
lines[DOTNET_SDK_VERSION_INDEX] = updatedDotnetSdkVersion;
|
||||||
|
|
||||||
|
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<IList<Match>> DetermineVersion(string name, string workingDirectory, Regex regex, string program, string command)
|
||||||
|
{
|
||||||
|
var processInfo = new ProcessStartInfo
|
||||||
|
{
|
||||||
|
WorkingDirectory = workingDirectory,
|
||||||
|
FileName = program,
|
||||||
|
Arguments = command,
|
||||||
|
RedirectStandardOutput = true,
|
||||||
|
UseShellExecute = false,
|
||||||
|
CreateNoWindow = true
|
||||||
|
};
|
||||||
|
|
||||||
|
using var process = new Process();
|
||||||
|
process.StartInfo = processInfo;
|
||||||
|
process.Start();
|
||||||
|
|
||||||
|
var output = await process.StandardOutput.ReadToEndAsync();
|
||||||
|
await process.WaitForExitAsync();
|
||||||
|
|
||||||
|
var matches = regex.Matches(output);
|
||||||
|
if (matches.Count == 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"- Error: Was not able to determine the {name} version.");
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return matches;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task IncreaseBuildNumber()
|
||||||
|
{
|
||||||
|
const int BUILD_NUMBER_INDEX = 2;
|
||||||
|
var pathMetadata = Environment.GetMetadataPath();
|
||||||
|
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
||||||
|
var buildNumber = int.Parse(lines[BUILD_NUMBER_INDEX]) + 1;
|
||||||
|
|
||||||
|
Console.WriteLine($"- Updating build number from '{lines[BUILD_NUMBER_INDEX]}' to '{buildNumber}'.");
|
||||||
|
|
||||||
|
lines[BUILD_NUMBER_INDEX] = buildNumber.ToString();
|
||||||
|
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task UpdateBuildTime()
|
private async Task UpdateBuildTime()
|
||||||
{
|
{
|
||||||
|
const int BUILD_TIME_INDEX = 1;
|
||||||
var pathMetadata = Environment.GetMetadataPath();
|
var pathMetadata = Environment.GetMetadataPath();
|
||||||
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
var lines = await File.ReadAllLinesAsync(pathMetadata, Encoding.UTF8);
|
||||||
var buildTime = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + " UTC";
|
var buildTime = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + " UTC";
|
||||||
|
|
||||||
Console.WriteLine($"- Updating build time from '{lines[1]}' to '{buildTime}'.");
|
Console.WriteLine($"- Updating build time from '{lines[BUILD_TIME_INDEX]}' to '{buildTime}'.");
|
||||||
|
|
||||||
lines[1] = buildTime;
|
lines[BUILD_TIME_INDEX] = buildTime;
|
||||||
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
await File.WriteAllLinesAsync(pathMetadata, lines, Encoding.UTF8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[GeneratedRegex("""(?ms).?(NET\s+SDK|SDK\s+\.NET)\s*:\s+Version:\s+(?<sdkVersion>[0-9.]+).+Commit:\s+(?<sdkCommit>[a-zA-Z0-9]+).+Host:\s+Version:\s+(?<hostVersion>[0-9.]+).+Commit:\s+(?<hostCommit>[a-zA-Z0-9]+)""")]
|
||||||
|
private static partial Regex DotnetVersionRegex();
|
||||||
|
|
||||||
|
[GeneratedRegex("""rustc (?<version>[0-9.]+)(?:-nightly)? \((?<commit>[a-zA-Z0-9]+)""")]
|
||||||
|
private static partial Regex RustVersionRegex();
|
||||||
|
|
||||||
|
[GeneratedRegex("""MudBlazor\s+(?<version>[0-9.]+)""")]
|
||||||
|
private static partial Regex MudBlazorVersionRegex();
|
||||||
|
|
||||||
|
[GeneratedRegex("""tauri\s+v(?<version>[0-9.]+)""")]
|
||||||
|
private static partial Regex TauriVersionRegex();
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user