feat: route legacy configuration probe through CLI

This commit is contained in:
codex
2026-08-06 07:40:51 +03:00
parent 84ddac90a8
commit 0b890432d5
3 changed files with 75 additions and 15 deletions
+10 -1
View File
@@ -2,5 +2,14 @@ namespace Launcher.Next.App;
public partial class App : System.Windows.Application
{
protected override async void OnStartup(System.Windows.StartupEventArgs e)
{ base.OnStartup(e); if (e.Args.FirstOrDefault()?.Equals("pilot", StringComparison.OrdinalIgnoreCase) == true) { Shutdown(await PilotCli.RunAsync(e.Args.Skip(1).ToArray())); return; } new MainWindow().Show(); }
{
base.OnStartup(e);
if (e.Args.FirstOrDefault()?.Equals("legacy-configuration-probe", StringComparison.OrdinalIgnoreCase) == true)
{
Shutdown(await LegacyConfigurationProbeCli.RunAsync(e.Args.Skip(1).ToArray()));
return;
}
if (e.Args.FirstOrDefault()?.Equals("pilot", StringComparison.OrdinalIgnoreCase) == true) { Shutdown(await PilotCli.RunAsync(e.Args.Skip(1).ToArray())); return; }
new MainWindow().Show();
}
}
@@ -0,0 +1,47 @@
using Launcher.Next.Application;
using Launcher.Next.Core;
using System.IO;
namespace Launcher.Next.App;
/// <summary>Dedicated, non-Autodesk command route. It deliberately constructs
/// only the read-only legacy configuration probe dependency graph.</summary>
internal static class LegacyConfigurationProbeCli
{
internal static async Task<int> RunAsync(string[] args)
{
if (args.Length != 4 || !string.Equals(args[0], "--mode", StringComparison.Ordinal) ||
!string.Equals(args[1], "LegacyConfigurationProbe", StringComparison.Ordinal) ||
!string.Equals(args[2], "--config", StringComparison.Ordinal) || string.IsNullOrWhiteSpace(args[3]))
return Fail("LEGACY_PROBE_MODE_CONFLICT");
try
{
if (!Path.IsPathFullyQualified(args[3]) || !File.Exists(args[3]) || Directory.Exists(args[3]))
return Fail("LEGACY_PROBE_OVERRIDE_MISSING");
var overrideDocument = LegacyProbeOverrideParser.Parse(await File.ReadAllTextAsync(args[3]));
var variables = new LauncherPathVariables(new Dictionary<string, string?>
{
["LegacySettingsPath"] = overrideDocument.SettingsXml,
["LegacyDownloadListPath"] = overrideDocument.DownloadListXml,
["LegacyCompatibilityOverlayPath"] = overrideDocument.CompatibilityOverlay,
["LegacyProbeEvidenceRoot"] = overrideDocument.EvidenceOutputRoot
});
var resolver = new PathResolver();
var request = new LegacyConfigurationProbeRequest(
resolver.ResolveLegacySettingsPath(variables),
resolver.ResolveLegacyDownloadListPath(variables),
resolver.ResolveLegacyCompatibilityOverlayPath(variables),
resolver.ResolveLegacyProbeEvidenceRoot(variables),
overrideDocument.SelectedPattern,
Guid.NewGuid().ToString("N"));
var result = await new LegacyConfigurationProbe(new LegacyConfigurationAdapter()).RunAsync(request);
Console.WriteLine(result.TerminalState);
return result.TerminalState == "Succeeded" ? 0 : 2;
}
catch (InvalidOperationException ex) { return Fail(ex.Message); }
catch { return Fail("LEGACY_PROBE_INTERNAL_FAILURE"); }
}
private static int Fail(string code) { Console.Error.WriteLine(code); return 2; }
}