Files
server/extra/admin-api/update-deps.cs
2026-01-17 14:59:13 +01:00

62 lines
3.4 KiB
C#
Executable File

#! /usr/bin/env dotnet
#:property Nullable=enable
#:property PublishAOT=false
#:package ArcaneLibs@1.0.0-preview.20251207*
using ArcaneLibs;
using ArcaneLibs.Extensions;
using System.Text.Json;
ProjectDef[] projects = [
new("Spacebar-Models-AdminApi", "Models/Spacebar-Models-AdminApi"),
new("Spacebar-Models-Config", "Models/Spacebar-Models-Config"),
new("Spacebar-Models-Db", "Models/Spacebar-Models-Db"),
new("Spacebar-Interop-Replication-Abstractions", "Interop/Spacebar-Interop-Replication-Abstractions"),
new("Spacebar-Interop-Replication-RabbitMq", "Interop/Spacebar-Interop-Replication-RabbitMq"),
new("Spacebar-Interop-Replication-UnixSocket", "Interop/Spacebar-Interop-Replication-UnixSocket"),
new("Spacebar-CleanSettingsRows", "Utilities/Spacebar-CleanSettingsRows"),
new("Spacebar-AdminApi", "Spacebar-AdminApi"),
new("Spacebar-Cdn", "Spacebar-Cdn"),
];
Console.WriteLine("==> Getting outputs...");
var outs = JsonSerializer.Deserialize<string[]>(Util.GetCommandOutputSync("nix", $"eval --json .#packages.x86_64-linux --apply builtins.attrNames", silent: true, stderr: false));
Console.WriteLine("==> Updating project dependencies...");
// foreach (var proj in projects) {
// Console.WriteLine(ConsoleUtils.ColoredString($" ==> Updating {proj.NixName} ({proj.Path})", 0x80, 0x80, 0xff));
// Console.Write(ConsoleUtils.ColoredString($" ==> Getting project files... ", 0x80, 0xff, 0xff));
// var projectFiles = JsonSerializer.Deserialize<string[]>(Util.GetCommandOutputSync("nix", $"eval --json .#packages.x86_64-linux.{proj.NixName}.dotnetProjectFiles", silent: true, stderr: false));
// Console.WriteLine(ConsoleUtils.ColoredString($"{string.Join(", ", projectFiles)}", 0x80, 0xff, 0xff));
// if (projectFiles.Length != 1) throw new Exception("Invalid project file count?");
// // Util.RunCommandSync("nix", $"build .#{proj.NixName}.passthru.fetch-deps");
// // await Task.Delay(250);
// }
foreach (var outp in outs) {
Console.WriteLine(ConsoleUtils.ColoredString($" ==> Updating {outp}...", 0x80, 0x80, 0xff));
Console.Write(ConsoleUtils.ColoredString($" ==> Getting project files... ", 0x80, 0xff, 0xff));
var projectFiles = JsonSerializer.Deserialize<string[]>(Util.GetCommandOutputSync("nix", $"eval --json .#packages.x86_64-linux.{outp}.dotnetProjectFiles", silent: true, stderr: false));
Console.WriteLine(ConsoleUtils.ColoredString($"{string.Join(", ", projectFiles)}", 0x80, 0xff, 0xff));
if (projectFiles.Length != 1) throw new Exception("Invalid project file count?");
var nugetDepsFilePath = Path.Combine(Path.GetDirectoryName(projectFiles[0]), "deps.json");
Console.WriteLine(ConsoleUtils.ColoredString($" ==> {nugetDepsFilePath} exists: {File.Exists(nugetDepsFilePath)}", 0x80, 0xff, 0xff));
if (!File.Exists(nugetDepsFilePath)) {
Console.WriteLine(ConsoleUtils.ColoredString($" ==> No NuGet deps file, skipping!", 0xff, 0x80, 0x80));
continue;
}
Console.WriteLine(ConsoleUtils.ColoredString($" ==> Building fetch-deps script...", 0x80, 0xff, 0x80));
Util.RunCommandSync("nix", $"build .#{outp}.passthru.fetch-deps");
Console.WriteLine(ConsoleUtils.ColoredString($" ==> Running fetch-deps script...", 0x80, 0xff, 0x80));
Util.RunCommandSync("./result", nugetDepsFilePath);
// await Task.Delay(250);
}
public record ProjectDef(string NixName, string Path);